From ibanez@cs.unc.edu Mon, 31 Jan 2000 15:29:22 -0500 Date: Mon, 31 Jan 2000 15:29:22 -0500 From: Luis Ibanez ibanez@cs.unc.edu Subject: mail list archive Hi, Is there an archive for the mailing list ? >From which we can check the messages that were sent before we joined the list. Thanks Luis. From ibanez@cs.unc.edu Mon, 31 Jan 2000 15:36:33 -0500 Date: Mon, 31 Jan 2000 15:36:33 -0500 From: Luis Ibanez ibanez@cs.unc.edu Subject: CVS repository access Hi, Just trying to test the access to the CVS repository, but.....we'll need a (login,password) pair for getting in. Luis From ken.martin@kitware.com Mon, 31 Jan 2000 15:48:38 -0500 Date: Mon, 31 Jan 2000 15:48:38 -0500 From: Ken Martin ken.martin@kitware.com Subject: CVS repository access The list is archived and there is a digest also. You can access these using the regular majordomo commands. I plan on putting up a Web based archive search in the near future. >Just trying to test the access to the CVS repository, >but.....we'll need a (login,password) pair for getting in. I have distributed login and password pairs for all people with write permission. I gave Steve (Steve's voice mail actually) all the UNC folks passwords since there were quite a few of them. Anyone who knows the password can obtain read permission on the repository using the CVS account reader with a password of ins8 - Ken From will.schroeder@kitware.com Mon, 31 Jan 2000 16:00:34 -0500 Date: Mon, 31 Jan 2000 16:00:34 -0500 From: Will Schroeder will.schroeder@kitware.com Subject: CVS repository access Hi Luiz- Ken called Steve A. and left the username/password information for him to pass out. As far as I know Ken has contacted everybody with this information. If you don't have it, let us know. Will At 03:36 PM 1/31/00 -0500, you wrote: >Hi, > >Just trying to test the access to the CVS repository, >but.....we'll need a (login,password) pair for getting in. > > >Luis From l_ibanez@bellsouth.net Tue, 15 Feb 2000 20:40:11 -0500 Date: Tue, 15 Feb 2000 20:40:11 -0500 From: Luis Ibanez l_ibanez@bellsouth.net Subject: LIMP Hi, This is a library developed for remote sensing applications. They address the problem of large images, basically using smart pointers. Image of several channels are supported (as is usual in remote sensing). http://www.remotesensing.org/docs/limp-ht/ Luis. From ibanez@cs.unc.edu Thu, 24 Feb 2000 09:45:42 -0500 Date: Thu, 24 Feb 2000 09:45:42 -0500 From: Luis Ibanez ibanez@cs.unc.edu Subject: The VIGRA Computer Vision Library This is a multi-part message in MIME format. --------------94CB9B0E2CDED56687AD50E3 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, This is a Computer vision library designed with generic programming. http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ Let's take a look at the image base class from the online documentation, they use iterators and parametrized types. http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/doc/BasicImage.html Their object factories are described in : http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/doc/ArgumentObjectFactories.html Luis -- ______________________________________________________________________ Luis Ibanez Research Assistant Professor - Division of Neurosurgery University of North Carolina at Chapel Hill Sitterson Hall, CB#3175, Chapel Hill, NC 27599 email : ibanez@cs.unc.edu home : http://www.cs.unc.edu/~ibanez phone : (919)-962-1907 fax : (919)-962-1799 ______________________________________________________________________ --------------94CB9B0E2CDED56687AD50E3 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Base: "http://kogs-www.informatik.uni-hamburg .de/~koethe/vigra/" Content-Location: "http://kogs-www.informatik.uni-hamburg .de/~koethe/vigra/" The VIGRA Computer Vision Library Welcome to the

VIGRA Computer Vision Library

Version 1.0 by Ullrich Köthe

VIGRA ("Vision with Generic Algorithms") is a novel computer vision library that puts its main emphasize on flexible, reusable algorithms, because algorithms represent the principle know-how of this field. The library was consequently built using generic programming as introduced by Stepanov and Musser and exemplified in the C++ Standard Template Library. By writing a few adapters (image iterators and accessors) you can use VIGRA's algorithms on top of your data structures, within your environment. Alternatively, you can also use the data structures provided within VIGRA, which can be easily adapted to a wide range of applications. VIGRA's flexibility comes almost for free: Since the design uses compile-time polymorphism (templates), performance of the compiled program approaches that of a traditional, hand tuned, inflexible, solution.

VIGRA's design is documented in the chapter "Reusable Software in Computer Vision" by Ullrich Köthe, in: B. Jähne, H. Haußecker, P. Geißler: "Handbook on Computer Vision and Applications", volume 3, Acadamic Press, 1999. If you don't have the book, you may read a draft of this article. A shorter article "STL Style Generic Programming with Images" desrcibing some of the ideas has appeared in the January 2000 issue of C++ Report Magazine.

VIGRA is subject to this LICENSE. It can be downloaded at http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/vigra1.0.tar.gz. VIGRA should compile with any standard-conforming C++ compilers (including GNU g++, SGI C++ 7.3) and some non-conforming ones (SGI C++ 7.2, Microsoft Visual C++ 5.0, patchlevel 3). You can read the documentation online. Please report any bugs or other comments to koethe@informatik.uni-hamburg.de


(C)opyright Ullrich Köthe
Cognitive Systems Group, University of Hamburg, Germany --------------94CB9B0E2CDED56687AD50E3-- From ci42@columbia.edu Thu, 24 Feb 2000 12:54:57 -0500 (EST) Date: Thu, 24 Feb 2000 12:54:57 -0500 (EST) From: Celina Imielinska ci42@columbia.edu Subject: Reference list Terry, Here is an update on UPENN/Columbia team Celina On Tue, 15 Feb 2000, Terry S. Yoo wrote: > > > Celina and Addeley: > > Here is a list of participants in the consortium... > > By the way, I have not received a contact mailing list from the > UPenn/Columbia team. I received them from the other sites, though. > > Good luck, and remember to cross-post this information to > insight-developers@public.kitware.com > > Terry > > ==================================================== > > University of Pennsylvania > > ---------------------------------- > Columbia subcontractor to MathSoft > ---------------------------------- First of all, Columbia is a subcontractor to Upenn team (led by imitris Metaxas) not MathSoft (a different team from Upenn is a subcontractor to MathSoft): Upenn Team: Dimitris Metaxas dnm@central.cis.upenn.edu Department of Computer and Information Science University of Pennsylvania Leon Axel axel@oasis.rad.upenn.edu Radiology Department University of Pennsylvania Jayaram K. Udupa jay@mipg.upenn.edu MIPG, Department of Radiology University of Pennsylvania 4th Floor, Blockley Hall 423 Guardian Drive Philadelphia, PA 19104-6021 Gabor T. Herman gabor@mipg.upenn.edu MIPG, Department of Radiology University of Pennsylvania 4th Floor, Blockley Hall 423 Guardian Drive Philadelphia, PA 19104-6021 Warren Gefter gefter@oasis.rad.upenn.edu Radiology Department University of Pennsylvania Leon Axel axel@oasis.rad.upenn.edu Radiology Department University of Pennsylvania Robert I. Grossman grossman@oasis.rad.upenn.edu Radiology Department University of Pennsylvania Columbia team (a subcontractor of University of Pennsylvania) Celina Imielinska Columbia University College of Physicians and Surgeons and Department of Computer Science 701 West 168th Street, HHSC 201 New York, NY 10032 phone: 212 305 1440 fax: 212 305 8388 e-mail: ci42@columbia.edu Pat Molholt Columbia University College of Physicians and Surgeons Office of Scholarly Resources 701 West 168th Street, HHSC 201 New York, NY 10032 phone: 212 305 3688 fax: 212 305 8388 e-mail: pm38@columbia.edu Hilary Schmidt Columbia University College of Physicians and Surgeons Center for Curriculum Evaluation and Faculty Support Judith Venuti Columbia University College of Physicians and Surgeons Department of Anatomy and Office of Scholarly Resources Steven Scrivani Columbia University College of Physicians and Surgeons Center for Oral, Facial and Head Pain From will.schroeder@kitware.com Mon, 28 Feb 2000 14:29:39 -0500 Date: Mon, 28 Feb 2000 14:29:39 -0500 From: Will Schroeder will.schroeder@kitware.com Subject: Fwd: Re: Could you share your experience... --=====================_7714883==_.ALT Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Folks- Luis has sent a message pointing to VIGRA (generic programming image= system), and I followed up with some questions to the developer Ullrich= Koethe. I think the dialog is informative. Will --------- >Hi Ullrich - > >My name is Will Schroeder, I'm working with a group of folks developing a= segmentation and registration toolkit for the National Library of Medicine= in the US. We are in the design stage, and have been struggling with= architectural issues, mainly where to draw the line between run-time and= compile-time binding. > >My prior experience is with the open-source Visualization Toolkit (VTK= www.kitware.com/vtk.html) which leans towards run-time binding and a very= conservative C++ design (single inheritance, limited use of templates,= etc.). Part of the reason for this is that we wrap the C++ library with= interpreted languages like Tcl, Python, and Java. VTK is successful, it's a= huge system and runs everywhere, and people seem to be able to learn and= use it pretty well. > >Some of the folks on the team have been encouraging us to go the generic= programming route. We've been exploring and stumbled across the Vigra code.= While I think this technology is promising, I'm concerned about the= possible problems introduced such as code bloat, compiler difficulties,= unreadable code, proliferation of classes, lack of run-time flexibility,= etc. Part of my concern is that this toolkit has the potential to grow to= 1000 classes and 250,000 lines of executable code. So it's code tha must be= usable in production, not just in the academic sense. > >Can you point me to any articles that discuss these issues, or do you have= any experience that you can share along these lines? I'm interested in= hearing both sides of the story. I have downloaded Reusable Software in= Computer Vision and will look at it today. > >Thank you, >Will >Sender: koethe@kogs.informatik.uni-hamburg.de >Date: Fri, 25 Feb 2000 17:03:16 +0100 >From: Ullrich Koethe >X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.6 sun4u) >X-Accept-Language: en >To: Will Schroeder >Subject: Re: Could you share your experience... >X-MIME-Autoconverted: from 8bit to quoted-printable by= kogs1.informatik.uni-hamburg.de id RAA02857 > >Hi Will, > >this is a very interesting question indeed! As it happens I'm hoping to >get a PhD for my answer next Tuesday.=20 > >Basically, i think you need both: generic programming to get flexibility >at the low-level (functions and data structures), and=20 >object-orientation for run-time flexibility. > >In comparison to e.g. computer graphics, image analysis is a much less >mature field (inverse problems are always much harder). So, there is no >set of standard algorithms that work most of the time (some people claim >otherwise, but don't be fooled). Instead, we keep changing all kinds of >details as circumstances (i.e. the images to be processed) and >understanding evolve. These changes occur at a relatively low-level: >exchange float for byte, replace a particular formula for second >derivatives by another one and the like.=20 > >Using virtual functions (and perhaps dynamic_cast) to cope with this >kind of changes will result in a very inefficient system. You can't >simply do a dynamic cast for each pixel, i.e. 1 million times a second. >Compile-time techniques are much more appropriate here. In addition, >generic programming gives you some techniques that are not present in >the OO part of C++: > >- code generation upon necessity >- multiple polymorphism with powerful pattern matching (by partial >ordering=20 > of overloaded functions and function templates) >- meta classes (traits) > >So I use generic programming to write the real 'work horse >functionality'. (Some of the related ideas are described in my paper.) > >Now, to get runtime flexibility, I build a larger pieces of >functionality from the generic building blocks and wrap them into >objects. These objects are then exported to Python. So I have both: I >can change alsogrithmis details in the generic layer and collaboration >of modules in the OO layer. > >When implementing this in C++, some care is required to manage compile >dependencies. Since templates are usually kept in header files, >visibility of these headers must be controlled. (Otherwise, a simple >implementation change could cause a huge recompile). This is part of the >benefit of wrapping genericity into objects. (Hopefully, this situation >will change when compilers start to support separate compilation for >templates). > >As to the choice of compiler: if your your goal is maximum portability, >you might be better of not using generic programming. However, since the >standard library depends on it, compilers are quickly catching up. Also, >one can use a subset of techniques that retains most of the benefits and >runs on most compilers. I've successfully used GNU g++, the SGI native >compiler and Microsoft Visual C++ (with some limitations).=20 > >Code bloat is a problem that I havn't gone into very much (which means >it wasn't so severe as to cause trouble). Often, the main reason for >code bloat are long template names which can easily be stripped off the >final executable (on SGI, this sometimes reduces code size to 50%). > >I hope this helps. Please ask again if any question remain > >Regards >Ulli >--=20 > ________________________________________________________________ >| | >| Ullrich Koethe Universit=E4t Hamburg / University of Hamburg | >| FB Informatik / Dept. of Computer Science | >| AB Kognitive Systeme / Cognitive Systems Group | >| | >| Phone: +49 (0)40 42883-2573 Vogt-Koelln-Str. 30 | >| Fax: +49 (0)40 42883-2572 D - 22527 Hamburg | >| Email: u.koethe@computer.org Germany | >| koethe@informatik.uni-hamburg.de | >| WWW: http://kogs-www.informatik.uni-hamburg.de/~koethe/ | >|________________________________________________________________|=20 --=====================_7714883==_.ALT Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Folks-

Luis has sent a message pointing to VIGRA (generic programming image system), and I followed up with some questions to the developer Ullrich Koethe. I think the dialog is informative.

Will
---------

Hi Ullrich -

My name is Will Schroeder, I'm working with a group of folks developing a segmentation and registration toolkit for the National Library of Medicine in the US. We are in the design stage, and have been struggling with architectural issues, mainly where to draw the line between run-time and compile-time binding.

My prior experience is with the open-source Visualization Toolkit (VTK www.kitware.c= om/vtk.html) which leans towards run-time binding and a very conservative C++ design (single inheritance, limited use of templates, etc.). Part of the reason for this is that we wrap the C++ library with interpreted languages like Tcl, Python, and Java. VTK is successful, it's a huge system and runs everywhere, and people seem to be able to learn and use it pretty well.

Some of the folks on the team have been encouraging us to go the generic programming route. We've been exploring and stumbled across the Vigra code. While I think this technology is promising, I'm concerned about the possible problems introduced such as code bloat, compiler difficulties, unreadable code, proliferation of classes, lack of run-time flexibility, etc. Part of my concern is that this toolkit has the potential to grow to 1000 classes and 250,000 lines of executable code. So it's code tha must be usable in production, not just in the academic sense.

Can you point me to any articles that discuss these issues, or do you have any experience that you can share along these lines? I'm interested in hearing both sides of the story. I have downloaded Reusable Software in Computer Vision and will look at it today.

Thank you,
Will



Sender: koethe@kogs.informatik.uni-hamburg.de
Date: Fri, 25 Feb 2000 17:03:16 +0100
From: Ullrich Koethe <koethe@informatik.uni-hamburg.de>
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.6 sun4u)
X-Accept-Language: en
To: Will Schroeder <will.schroeder@kitware.com>
Subject: Re: Could you share your experience...
X-MIME-Autoconverted: from 8bit to quoted-printable by kogs1.informatik.uni-hamburg.de id RAA02857

Hi Will,

this is a very interesting question indeed! As it happens I'm hoping to
get a PhD for my answer next Tuesday.

Basically, i think you need both: generic programming to get flexibility
at the low-level (functions and data structures), and
object-orientation for run-time flexibility.

In comparison to e.g. computer graphics, image analysis is a much less
mature field (inverse problems are always much harder). So, there is no
set of standard algorithms that work most of the time (some people claim
otherwise, but don't be fooled). Instead, we keep changing all kinds of
details as circumstances (i.e. the images to be processed) and
understanding evolve. These changes occur at a relatively=20 low-level:
exchange float for byte, replace a particular formula for second
derivatives by another one and the like.

Using virtual functions (and perhaps dynamic_cast) to cope with=20 this
kind of changes will result in a very inefficient system. You can't
simply do a dynamic cast for each pixel, i.e. 1 million times a second.
Compile-time techniques are much more appropriate here. In=20 addition,
generic programming gives you some techniques that are not present in
the OO part of C++:

- code generation upon necessity
- multiple polymorphism with powerful pattern matching (by partial
ordering
  of overloaded functions and function templates)
- meta classes (traits)

So I use generic programming to write the real 'work horse
functionality'. (Some of the related ideas are described in my paper.)

Now, to get runtime flexibility, I build a larger pieces of
functionality from the generic building blocks and wrap them into
objects. These objects are then exported to Python. So I have both: I
can change alsogrithmis details in the generic layer and collaboration
of modules in the OO layer.

When implementing this in C++, some care is required to manage compile
dependencies. Since templates are usually kept in header files,
visibility of these headers must be controlled. (Otherwise, a=20 simple
implementation change could cause a huge recompile). This is part of the
benefit of wrapping genericity into objects. (Hopefully, this situation
will change when compilers start to support separate compilation=20 for
templates).

As to the choice of compiler: if your your goal is maximum portability,
you might be better of not using generic programming. However, since the
standard library depends on it, compilers are quickly catching up. Also,
one can use a subset of techniques that retains most of the benefits and
runs on most compilers. I've successfully used GNU g++, the SGI native
compiler and Microsoft Visual C++ (with some limitations).

Code bloat is a problem that I havn't gone into very much (which means
it wasn't so severe as to cause trouble). Often, the main reason=20 for
code bloat are long template names which can easily be stripped off the
final executable (on SGI, this sometimes reduces code size to 50%).

I hope this helps. Please ask again if any question remain

Regards
Ulli
--
 ________________________________________________________________
|            &nb= sp;            &= nbsp;            = ;            &nb= sp;             |
| Ullrich Koethe  Universit=E4t Hamburg / University of Hamburg    |
|            &nb= sp;    FB Informatik / Dept. of Computer Science      |
|            &nb= sp;    AB Kognitive Systeme / Cognitive Systems Group |
|            &nb= sp;            &= nbsp;            = ;            &nb= sp;             |
| Phone: +49 (0)40 42883-2573           =      Vogt-Koelln-Str. 30 |
| Fax:   +49 (0)40 42883-2572           =      D - 22527 Hamburg   |
| Email: u.koethe@computer.org         &= nbsp;     Germany           &nb= sp; |
|        koethe@informatik.uni-hamburg.de       &n= bsp;            =     |
| WWW:   http://kogs-www.informatik.uni-hamburg.de/~koethe/ = ;    |
|________________________________________________________________|
--=====================_7714883==_.ALT-- From zhuge@mipg.upenn.edu Mon, 28 Feb 2000 17:30:25 -0600 Date: Mon, 28 Feb 2000 17:30:25 -0600 From: Ying zhuge@mipg.upenn.edu Subject: Fw: [Insight-developers] compliering error This is a multi-part message in MIME format. ------=_NextPart_000_002A_01BF8211.7F9E5100 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable It happened to me too. I try many times today. Ying ----- Original Message -----=20 From: Yinpeng Jin=20 To: insight-developers@public.kitware.com=20 Sent: Wednesday, February 28, 2001 3:07 PM Subject: [Insight-developers] compliering error It looks that ITK.dsw generated by CMake was changed, I got the below = message after a update: Is it relating to my MSVC++ setting or it is something due to CMake? It = only happened today, used to be fine all the time. =20 =20 --------------------Configuration: VXLNumerics - Win32 = Debug-------------------- Compiling... =20 ...... =20 \insightnew\InsightBuild\Code\Common\Debug\ITKCommon.lib=20 LINK : fatal error LNK1181: cannot open input file = "\insightnew\InsightBuild\Code\Common\Debug\ITKCommon.lib" Error executing link.exe. =20 VXLNumerics.lib - 1 error(s), 358 warning(s) --------------------Configuration: ITKCommon - Win32 = Debug-------------------- Compiling... =20 ...... =20 \insightnew\InsightBuild\Code\Numerics\vxl\Debug\VXLNumerics.lib=20 LINK : fatal error LNK1181: cannot open input file = "\insightnew\InsightBuild\Code\Numerics\vxl\Debug\VXLNumerics.lib" Error executing link.exe. =20 ITKCommon.lib - 1 error(s), 1 warning(s) --------------------Configuration: ITKBasicFilters - Win32 = Debug-------------------- Compiling... itkWriter.cxx Creating library... Microsoft (R) Library Manager Version 6.00.8447 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. LINK : fatal error LNK1181: cannot open input file = "\insightnew\InsightBuild\Code\Common\Debug\ITKCommon.lib" Error executing link.exe. =20 ITKBasicFilters.lib - 1 error(s), 0 warning(s) =20 ------=_NextPart_000_002A_01BF8211.7F9E5100 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
It happened to me too. I try many times = today.
 
Ying
 
----- Original Message -----=20
From: Yinpeng = Jin
To: insight-developers@public.k= itware.com=20
Sent: Wednesday, February 28, 2001 3:07 PM
Subject: [Insight-developers] compliering error

It looks that ITK.dsw generated by = CMake was=20 changed, I got the below message after a update:
Is it relating to my MSVC++ setting or = it is=20 something due to CMake? It only happened today, used to be fine all the=20 time.
 
 
--------------------Configuration: = VXLNumerics -=20 Win32 Debug--------------------
Compiling...
 
......
 
\insightnew\InsightBuild\Code\Common\Debug\ITKCommon.lib =
LINK : fatal=20 error LNK1181: cannot open input file=20 "\insightnew\InsightBuild\Code\Common\Debug\ITKCommon.lib"
Error = executing=20 link.exe.
 
VXLNumerics.lib - 1 error(s), 358=20 warning(s)
--------------------Configuration: ITKCommon - Win32=20 Debug--------------------
Compiling...
 
......
 
\insightnew\InsightBuild\Code\Numerics\vxl\Debug\VXLNumerics.lib=
LINK=20 : fatal error LNK1181: cannot open input file=20 "\insightnew\InsightBuild\Code\Numerics\vxl\Debug\VXLNumerics.lib"
Err= or=20 executing link.exe.
 
ITKCommon.lib - 1 error(s), 1=20 warning(s)
--------------------Configuration: ITKBasicFilters - Win32 = Debug--------------------
Compiling...
itkWriter.cxx
Creating = library...
Microsoft=20 (R) Library Manager Version 6.00.8447
Copyright (C) Microsoft Corp = 1992-1998.=20 All rights reserved.
LINK : fatal error LNK1181: cannot open input = file=20 "\insightnew\InsightBuild\Code\Common\Debug\ITKCommon.lib"
Error = executing=20 link.exe.
 
ITKBasicFilters.lib - 1 error(s), 0=20 warning(s)
 
------=_NextPart_000_002A_01BF8211.7F9E5100--