From cates@cs.utah.edu Fri, 1 Jun 2001 12:11:36 -0600 (MDT) Date: Fri, 1 Jun 2001 12:11:36 -0600 (MDT) From: Joshua Cates cates@cs.utah.edu Subject: [Insight-developers] PDE Hierarchy (level sets, diffusion) web page Hello, As mentioned at todays TCON, here is the url for the documentation on the PDE Hierarchy I've been constructing. http:://www.cs.utah.edu/~cates/LevelSetsPrototype There will be two "sides" to the tree: a dense solver side which handles updates to entire images, and a sparse solver side which performs list-based updates to images. Currently only the dense side is represented. The source code can be found in the Draft directory of the repository. The initial idea for this hierarchy comes from InsightDocuments/Developer/General/LevelSetArchitectureProposal.pdf. The implementation is slightly different, however. Josh. ______________________________ Josh Cates School of Computer Science University of Utah Email: cates@cs.utah.edu Phone: (801) 587-7697 URL: www.cs.utk.edu/~cates From millerjv@crd.ge.com Fri, 1 Jun 2001 15:49:05 -0400 Date: Fri, 1 Jun 2001 15:49:05 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] Dashboard should run tests again I found the problem with the Dashboard scripts not finding any tests to run. There was an assumption in Utility.tcl.in that there would be only one instance of a SUBDIRS or TESTS cmake command per CMakeLists.txt file. With the restructuring of the CMakeLists.txt files to support "options" (where the user can select to run tests or not, or build unsupported or not, etc.), our CMakeLists.txt files can now have multiple SUBDIRS and TESTS commands (nested in IF commands) per CMakeLists.txt file. To be completely correct, this proc should not limit itself to just CMakeLists.txt files but to any file "included" by these. Furthermore, we should only use SUBDIRS and TESTS commands that are not excluded by IF commands. I can add this capability to the Utility.tcl.in script; however, we recently discussed having CMake parse the CMakeLists.txt files and pass this information do the Testing scripts. I think this is the better way to do this. Kitware: do you want to modify CMake to do this or should I? Jim Miller _____________________________________ Visualization & Computer Vision GE Corporate Research & Development Bldg. KW, Room C218B P.O. Box 8, Schenectady NY 12301 millerjv@crd.ge.com (518) 387-4005, Dial Comm: 8*833-4005, Cell: (518) 505-7065, Fax: (518) 387-6981 <> begin 600 Miller, James V (CRD).vcf M0D5'24XZ5D-!4D0-"E9%4E-)3TXZ,BXQ#0I..DUI;&QE3M.97<@66]R:SLQ,C,P,3M54T$- M"DQ!0D5,.U=/4DL[14Y#3T1)3D<]455/5$5$+5!224Y404),13I+5RU#,C$X M0CTP1#TP05`N3RX@0F]X(#@],$0],$%38VAE;F5C=&%D>2P@3F5W(%EO
Since there is no = itkMesh::getNumberOfPoints() or=20 anything like that, what is the accepted procedure to get the number of = points=20 which an itkMesh contains?
 
       =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20         Aaron
------=_NextPart_000_004F_01C0ECFD.56A55250-- From ibanez@cs.unc.edu Tue, 05 Jun 2001 09:56:19 -0400 Date: Tue, 05 Jun 2001 09:56:19 -0400 From: Luis Ibanez ibanez@cs.unc.edu Subject: [Insight-developers] Mesh size There is a method: GetNumberOfPoints() in the itkPointSet class, from which itkMesh derives. calling it from an itkMesh should work fine. Luis ----- > "C. Aaron Cois" wrote: > > Since there is no itkMesh::getNumberOfPoints() or anything like that, > what is the accepted procedure to get the number of points which an > itkMesh contains? > > > > Aaron From dmsst59+@pitt.edu Tue, 05 Jun 2001 12:47:59 -0400 Date: Tue, 05 Jun 2001 12:47:59 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] FloodFilledSpatialFunctionIterator Hi all... I'm working on a new iterator class and was wondering if anyone has any preliminary feedback on the concept. Essentially, FloodFilledSpatialFunctionIterator allows you to iterate over any group of contiguous pixels (with the n-dimensional equivalent of 4-connectivity) that can be defined as "inside" a spatial function. The group of pixels is established by doing a conventional flood-fill given a known starting index. The flood fill does not ensure a particular order of traversal of pixels in the group, which is why I hesitate to call it a region, but does allow you to iterate over an arbitrarily complex continuous shape. The iterator stores an internal linked list of the indices identified by the fill operation, and ++ operations on FloodFilledSpatialFunctionIterator actually iterate this internal list. Right now, the steps to create and set up the iterator look like: typedef itk::FloodFilledSpatialFunctionIterator TSphereItType; TSphereItType sfi = TSphereItType(sourceImage, spatialFunc); TImageType::IndexType seedPos; const unsigned long pos[] = {15,15,15}; seedPos.SetIndex(pos); sfi.SetSeedPosition(seedPos); sfi.BuildIterator(); The iterator can then be used like a "normal" iterator. Any comments? Thanks, -Damion- From vikram@insightful.com Tue, 5 Jun 2001 10:18:52 -0700 Date: Tue, 5 Jun 2001 10:18:52 -0700 From: Vikram Chalana vikram@insightful.com Subject: [Insight-developers] FloodFilledSpatialFunctionIterator Damion, This FloodFill concept seems very similar to the Fast Marching algorithm and also the Fuzzy Connectedness algorithm. Both of these algorithms rely on starting from one or more seed points and marching outward while computing some spatial function. It would be worth for you investigate those two algorithms (which have already been checked into ITK) and see how you could refactorize the common elements. Thanks, Vikram -----Original Message----- From: insight-developers-admin@public.kitware.com [mailto:insight-developers-admin@public.kitware.com]On Behalf Of Damion Shelton Sent: Tuesday, June 05, 2001 9:48 AM To: 'insight-Developers' Subject: [Insight-developers] FloodFilledSpatialFunctionIterator Hi all... I'm working on a new iterator class and was wondering if anyone has any preliminary feedback on the concept. Essentially, FloodFilledSpatialFunctionIterator allows you to iterate over any group of contiguous pixels (with the n-dimensional equivalent of 4-connectivity) that can be defined as "inside" a spatial function. The group of pixels is established by doing a conventional flood-fill given a known starting index. The flood fill does not ensure a particular order of traversal of pixels in the group, which is why I hesitate to call it a region, but does allow you to iterate over an arbitrarily complex continuous shape. The iterator stores an internal linked list of the indices identified by the fill operation, and ++ operations on FloodFilledSpatialFunctionIterator actually iterate this internal list. Right now, the steps to create and set up the iterator look like: typedef itk::FloodFilledSpatialFunctionIterator TSphereItType; TSphereItType sfi = TSphereItType(sourceImage, spatialFunc); TImageType::IndexType seedPos; const unsigned long pos[] = {15,15,15}; seedPos.SetIndex(pos); sfi.SetSeedPosition(seedPos); sfi.BuildIterator(); The iterator can then be used like a "normal" iterator. Any comments? Thanks, -Damion- _______________________________________________ Insight-developers mailing list Insight-developers@public.kitware.com http://public.kitware.com/mailman/listinfo/insight-developers From aylward@unc.edu Tue, 05 Jun 2001 13:28:22 -0400 Date: Tue, 05 Jun 2001 13:28:22 -0400 From: Stephen R. Aylward aylward@unc.edu Subject: [Insight-developers] FloodFilledSpatialFunctionIterator Sounds like a great idea. What about having it derive from a class hierarchy like SpatialIterator -------------------+----------------------- | | FilledSpatialIterator SurfaceSpatialIterator |------+-----------------------| FunctionFilledSpatialIterator MaskFilledSpatialIterator Or something general like that... - These can be used to generate a mesh from a mask or function...cool... s Damion Shelton wrote: > > Hi all... > > I'm working on a new iterator class and was wondering if anyone has any > preliminary feedback on the concept. > > Essentially, FloodFilledSpatialFunctionIterator allows you to iterate over > any group of contiguous pixels (with the n-dimensional equivalent of > 4-connectivity) that can be defined as "inside" a spatial function. The > group of pixels is established by doing a conventional flood-fill given a > known starting index. The flood fill does not ensure a particular order of > traversal of pixels in the group, which is why I hesitate to call it a > region, but does allow you to iterate over an arbitrarily complex continuous > shape. > > The iterator stores an internal linked list of the indices identified by the > fill operation, and ++ operations on FloodFilledSpatialFunctionIterator > actually iterate this internal list. > > Right now, the steps to create and set up the iterator look like: > > typedef itk::FloodFilledSpatialFunctionIterator TSphereFunctionType> TSphereItType; > TSphereItType sfi = TSphereItType(sourceImage, spatialFunc); > > TImageType::IndexType seedPos; > const unsigned long pos[] = {15,15,15}; > seedPos.SetIndex(pos); > > sfi.SetSeedPosition(seedPos); > sfi.BuildIterator(); > > The iterator can then be used like a "normal" iterator. > > Any comments? > > Thanks, > > -Damion- > > _______________________________________________ > Insight-developers mailing list > Insight-developers@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-developers -- =============================================== Stephen R. Aylward Assistant Professor of Radiology Adjunct Assistant Professor of Computer Science http://www.cs.unc.edu/~aylward aylward@unc.edu (919) 966-9695 From dmsst59+@pitt.edu Tue, 05 Jun 2001 15:05:44 -0400 Date: Tue, 05 Jun 2001 15:05:44 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] FloodFilledSpatialFunctionIterator Hi... > This FloodFill concept seems very similar to the Fast Marching algorithm > and also the Fuzzy Connectedness algorithm. Both of these algorithms rely on > starting from one or more seed points and marching outward while computing > some spatial function. Hmmm.... I think I can see similarities between the routines, but I'm not sure that refactoring would be worthwhile - I assume by refactorize you mean creating a base or friend class that embodies the idea of proceeding outward from a seed? A potential difficulty, I think, is that FloodFilledSpatialFunctionIterator behaves externally as an iterator while the Fast Marching and Fuzzy Connectedness are both Image Filters. I don't suppose this is a huge distinction, but the only common element would be the fill routine, which is pretty trivial (at least in my implementation). Implementing a general "walk out from a seed" routine might end up being more complicated than using our individual implementations. I'll check-in FloodFilledSpatialFunctionIterator in the next couple of days, and you can let me know what you think. -Damion- From dmsst59+@pitt.edu Tue, 05 Jun 2001 15:14:22 -0400 Date: Tue, 05 Jun 2001 15:14:22 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] FloodFilledSpatialFunctionIterator > What about having it derive from a class hierarchy like > > SpatialIterator > -------------------+----------------------- > | | > FilledSpatialIterator SurfaceSpatialIterator > |------+-----------------------| > FunctionFilledSpatialIterator MaskFilledSpatialIterator Could you elaborate a bit on the class relationships? I can see that SpatialIterator would iterate over a linked list of indices rather than over an image region. I'm not sure about the rest though... is the distinction between a surface and filled iterator whether or not you're interested in: 1) All pixels "inside the function", resulting in a filled iterator 2) All pixels "inside the function" that are neighbors of a pixel not inside the function, resulting in a surface iterator Also, perhaps elaborate on the differences between Function and Mask filled iterators? Thanks, -Damion- From millerjv@crd.ge.com Tue, 5 Jun 2001 16:00:29 -0400 Date: Tue, 5 Jun 2001 16:00:29 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] FloodFilledSpatialFunctionIterator Damion, The idea here is that these filters and your iterators share a common "technique". Perhaps these filters and your iterators could both use some the same helper class (or more likely these filters would use something derived from a helper class and your iterator would probably inherit from this helper class). It might even be possible for your iterator to be used directly by these algorithms. On an implementation note: I would avoid keeping a link list of the indices to visit (you mentioned having operator++ move through this list). That would be extremely memory intensive. I would suggest encapsulating operator++ algorithmetically. So, operator++ performs one step in the flood fill algorithm to determine the next index. Jim -----Original Message----- From: Damion Shelton [mailto:dmsst59+@pitt.edu] Sent: Tuesday, June 05, 2001 3:06 PM To: vikram@insightful.com; 'insight-Developers' Subject: Re: [Insight-developers] FloodFilledSpatialFunctionIterator Hi... > This FloodFill concept seems very similar to the Fast Marching algorithm > and also the Fuzzy Connectedness algorithm. Both of these algorithms rely on > starting from one or more seed points and marching outward while computing > some spatial function. Hmmm.... I think I can see similarities between the routines, but I'm not sure that refactoring would be worthwhile - I assume by refactorize you mean creating a base or friend class that embodies the idea of proceeding outward from a seed? A potential difficulty, I think, is that FloodFilledSpatialFunctionIterator behaves externally as an iterator while the Fast Marching and Fuzzy Connectedness are both Image Filters. I don't suppose this is a huge distinction, but the only common element would be the fill routine, which is pretty trivial (at least in my implementation). Implementing a general "walk out from a seed" routine might end up being more complicated than using our individual implementations. I'll check-in FloodFilledSpatialFunctionIterator in the next couple of days, and you can let me know what you think. -Damion- _______________________________________________ Insight-developers mailing list Insight-developers@public.kitware.com http://public.kitware.com/mailman/listinfo/insight-developers From aylward@unc.edu Tue, 05 Jun 2001 16:26:46 -0400 Date: Tue, 05 Jun 2001 16:26:46 -0400 From: Stephen R. Aylward aylward@unc.edu Subject: [Insight-developers] FloodFilledSpatialFunctionIterator > > SpatialIterator > > -------------------+----------------------- > > | | > > FilledSpatialIterator SurfaceSpatialIterator > > |------+-----------------------| > > FunctionFilledSpatialIterator MaskFilledSpatialIterator > > Could you elaborate a bit on the class relationships? SpatialIterator would define an API and maybe do some basic initialization of stuff - mainly it provides an API. FilledSpatialIterator would contain most of the code. It would step though voxels and test each voxel via a call to a virtual function let's call it "testVoxel" FunctionFilledSpatialIterator would implement "testVoxel" by evaluating a function and it would provide an API for setting the function MaskFilledSpatialIterator would provde an API for setting a mask and it's implementation of "testVoxel" would see if the mask value at that voxel passes some criterion. SurfaceSpatialIterator does as you said - it tests for a voxel being on an edge of an object. It too would call a "testVoxel" at each voxel to see if it is part of the object. So, SurfaceSpatialIterator would also need to be derived...okay an even better design is obvious: Create a class that impliments "testVoxel" for functions and another that impliments "testVoxel" for masks. Then pass those classes as template arguments to the FilledSpatialIterator and the > > I can see that SpatialIterator would iterate over a linked list of indices > rather than over an image region. I'm not sure about the rest though... is > the distinction between a surface and filled iterator whether or not you're > interested in: > > 1) All pixels "inside the function", resulting in a filled iterator > 2) All pixels "inside the function" that are neighbors of a pixel not inside > the function, resulting in a surface iterator > > Also, perhaps elaborate on the differences between Function and Mask filled > iterators? > > Thanks, > > -Damion- -- =============================================== Stephen R. Aylward Assistant Professor of Radiology Adjunct Assistant Professor of Computer Science http://www.cs.unc.edu/~aylward aylward@unc.edu (919) 966-9695 From dmsst59+@pitt.edu Tue, 05 Jun 2001 16:52:26 -0400 Date: Tue, 05 Jun 2001 16:52:26 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] FloodFilledSpatialFunctionIterator > The idea here is that these filters and your iterators share a common "technique". Perhaps these > filters and your iterators could both use some the same helper class (or more likely these filters > would use something derived from a helper class and your iterator would probably inherit from this > helper class). It might even be possible for your iterator to be used directly by these algorithms. Ok... I think I see it. Part of the problem is that I'm not really all that familiar with the fuzzy connectedness or fast marching algorithms, and therefore not completely sure how to best integrate FloodFilledSpatialFunctionIterator. I'm going to ramble for a bit: In the context of this iterator, the spatial function is any function that determines whether the pixel being examined by the flood algorithm is part of the "structure of interest" or not (<=0 means "inside the structure/function" and > 0 means outside). I'm using simple shape functions that give you results which mean "inside a sphere", "inside a torus", etc. but I don't see any reason why these couldn't be more complex energy functions or the like (presuming they were derived from itkSpatialFunction). Incidentally, generalized SpatialFunctions don't neccessarily provide info. about "insidedness" or "outsidedness"; it's a matter of interpretation. The only parts of a SpatialFunction that are enforced (subject to change) are: 1) EvaluateFunctionValue - function to get the function value, a double, at a point specified by a vnl_vector_fixed of doubles 2) EvaluateFunctionGradient - function to get the function's gradient (a vnl_vector_fixed of doubles) at a point specified by a vnl_vector_fixed of doubles Therefore, the short answer is that I think - maybe - that the fuzzy connectedness and fast marching algorithms could _use_ a FloodFilledSpatialFunctionIterator rather than share a base class with it. It's just a matter of specifying the functions that they use to determine connectedness in a way that fits in with the SpatialFunction API. > On an implementation note: I would avoid keeping a link list of the indices to visit (you mentioned > having operator++ move through this list). That would be extremely memory intensive. I would > suggest encapsulating operator++ algorithmetically. So, operator++ performs one step in the flood > fill algorithm to determine the next index. It seems there's a tradeoff of memory and computational efficiency. In the current implementation the iterator is built once, and can then be used multiple times with very little computational cost. If the operator++ were implemented algorithmetically the flood would have to be recalculated each time the iterator were re-used (by re-use I mean a complete walk from start to end). Of course, this could be left up to the user - if you're going to be performing the iteration multiple times you'd build the list externally and save it for future reference. With the size images I've been playing with the size of the list hasn't been an issue, but I suppose with very large volumes in high dimensions it could get unwieldy. A few changes would be: End() is undefined, since we no longer know the end until we get to it IsAtEnd() is defined as a ++ call where no new pixels can be identified I'll try it your way and see what happens - thanks for the tip. -Damion- From dmsst59+@pitt.edu Tue, 05 Jun 2001 18:07:41 -0400 Date: Tue, 05 Jun 2001 18:07:41 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] Flood iterator ++ method Ok... Jim's suggestion worked fine. The ++ method now executes one step of the flood algorithm; more correctly, it executes the flood algorithm until a new "interior" pixel is found or the algorithm terminates. So, the usage syntax looks like: TImageType::IndexType seedPos; const unsigned long pos[] = {15,15,15}; seedPos.SetIndex(pos); typedef itk::FloodFilledSpatialFunctionIterator TSphereItType; TSphereItType sfi = TSphereItType(sourceImage, spatialFunc, seedPos); unsigned long int itCount = 0; // Iterate through the entire image and set interior pixels to 255 for( ; !( sfi.IsAtEnd() ); ++sfi) { sfi.Get().SetScalar(255); itCount++; } This code fragment iterates over a spherical region, with the sphere defined earlier, and sets the pixels within the region to 255. The only remaining memory issue is the stack that holds the list of indices generated during the flood algorithm; I don't really see any way around this since it's central to the algorithm. Any other comments, pass them along. I appreciate the help... -Damion- From millerjv@crd.ge.com Wed, 6 Jun 2001 07:29:06 -0400 Date: Wed, 6 Jun 2001 07:29:06 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] Flood iterator ++ method Damion, Instead of a stack of indices indicating where you have been, you could keep a mask (image). This could be an image of a low bit count or a run length encoded image. You really only need one bit per pixel to indicate that you have visited that pixel. While this is analogous to your stack storage, it would require less memory. Jim -----Original Message----- From: Damion Shelton [mailto:dmsst59+@pitt.edu] Sent: Tuesday, June 05, 2001 6:08 PM To: 'insight-Developers' Subject: [Insight-developers] Flood iterator ++ method Ok... Jim's suggestion worked fine. The ++ method now executes one step of the flood algorithm; more correctly, it executes the flood algorithm until a new "interior" pixel is found or the algorithm terminates. So, the usage syntax looks like: TImageType::IndexType seedPos; const unsigned long pos[] = {15,15,15}; seedPos.SetIndex(pos); typedef itk::FloodFilledSpatialFunctionIterator TSphereItType; TSphereItType sfi = TSphereItType(sourceImage, spatialFunc, seedPos); unsigned long int itCount = 0; // Iterate through the entire image and set interior pixels to 255 for( ; !( sfi.IsAtEnd() ); ++sfi) { sfi.Get().SetScalar(255); itCount++; } This code fragment iterates over a spherical region, with the sphere defined earlier, and sets the pixels within the region to 255. The only remaining memory issue is the stack that holds the list of indices generated during the flood algorithm; I don't really see any way around this since it's central to the algorithm. Any other comments, pass them along. I appreciate the help... -Damion- _______________________________________________ Insight-developers mailing list Insight-developers@public.kitware.com http://public.kitware.com/mailman/listinfo/insight-developers From dmsst59+@pitt.edu Wed, 6 Jun 2001 13:14:54 -0400 Date: Wed, 6 Jun 2001 13:14:54 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] iterator hierarchy Couple of thoughts about the below diagram: > > > SpatialIterator > > > -------------------+----------------------- > > > | | > > > FilledSpatialIterator SurfaceSpatialIterator > > > |------+-----------------------| > > > FunctionFilledSpatialIterator MaskFilledSpatialIterator I've been thinking about a new base class called ConditionalIterator (or maybe ArbitraryRegionIterator), which defines very basic API stuff, probably the following methods (all virtual): ConditionalIterator::operator++ ConditionalIterator::IsAtEnd() ConditionalIterator::IsPixelInRegion() The idea of a ConditionalIterator is the membership in the region is "conditional" on some event/property/function/etc. determined by the IsPixelInRegion() member function. There would be two (that I can think of) subclasses, FilledConditionalIterator and LinearWalkConditionalIterator. FilledConditionalIterator defines an additional function, FilledConditionalIterator::DoFloodStep(), which contains the flood-fill algorithm but doesn't define an implementation of IsPixelInRegion(). Derived from FilledConditionalIterator are SpatialFunctionFilledConditionalIterator and MaskFilledConditionalIterator. The former uses spatial functions to determine IsPixelInRegion(), while the latter uses a mask. The other main base class, LinearWalkConditionalIterator uses normal iterators to traverse the entire image, and computes IsPixelInRegion() at every pixel. The ++ API ensures that only pixels which pass the test are returned. Derived from this would be SpatialFunctionLinearWalkConditionalIterator. The advantage of this class would be: 1) No need for a seed pixel 2) Greatly reduced memory requirements vs. filled iterators (no need to create a temporary status image) The disadvantage, obviously, is that it's a per-pixel operation. Which one to use (filled vs. linear walk) would depend on whether your main concern is computational efficiency or memory efficiency. Whew. Also, a note on the SpatialFunction API, which I've been playing with today... SpatialFunctions are now templated over both function value type and dimensionality. This allows return of an arbitrary type (vector valued, scalar valued, etc.). Function coordinates are still specified by an n-dimensional vector of doubles. For use in the iterator and elsewhere, there is a subclass of SpatialFunction called InteriorExteriorSpatialFunction which returns a bool indicating whether the given position is "inside" or "outside" the function. SphereSpatialFunction and ConeSpatialFunction are now derived from this class. SpatialFunctionImageEvaluatorFilter now evaluates the function value directly; there is no longer interior/exterior behavior. The "drawing a primitive" operation is now simple to do by creating a FilledIterator and traversing it while setting pixel values. I think that's about it for the moment. Splitting the iterator idea into these classes should hopefully make integration into Vikram's and others' work much easier, since the method for determining IsPixelInRegion() is now arbitrary. -Damion- From dmsst59+@pitt.edu Wed, 6 Jun 2001 14:44:26 -0400 Date: Wed, 6 Jun 2001 14:44:26 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] Flood iterator ++ method Jim: Could you elaborate a little on your suggestion? The current implementation, in a nutshell, is: ----------------- Create tempImage as an n-dimensional image of unsigned chars the same size as source image. Pixel values in tempImage are: 0=unchecked 1=checked, not in function 2=checked, in function, neighbor check incomplete 3=checked, in function, neighbor check complete Push the seed index onto the stack. Do{ Examine the pixel at the index on top of the stack If the pixel has not been checked (i.e. tempImage[index] = 0) If this pixel is inside the function tempImage[index] = 2 Else (it's not inside the function) tempImage[index] = 1 Pop top index off the stack Continue (next iteration of do loop) Now check all neighbors If there's a neighbor that's hasn't been checked (i.e.tempImage[neighborindex] = 0) Push neighbor's index onto stack Else tempImage[index] = 3 Pop top index off stack (we've checked all the neighbors) }While there are no indices on the stack ----------------- The stack keeps track of where I've been, and the temp image store info about the state of all of the pixels in the original image (in/out/checked/unchecked). The stack seems neccessary since it allows me to reverse my forward progress and ensure that all neighbors are eventually checked. But, if you have a way around this that would be great. I'm also not sure how RLE would help - recomputing a RLE compressed temp image at every iterator step would be an expensive operation, but I'm probably misunderstanding what you mean. -Damion- ----- Original Message ----- From: "Miller, James V (CRD)" To: "'Damion Shelton'" ; "'insight-Developers'" Sent: Wednesday, June 06, 2001 7:29 AM Subject: RE: [Insight-developers] Flood iterator ++ method > Damion, > > Instead of a stack of indices indicating where you have been, you could keep a mask (image). This > could be an image of a low bit count or a run length encoded image. You really only need one bit per > pixel to indicate that you have visited that pixel. > > While this is analogous to your stack storage, it would require less memory. > > Jim From millerjv@crd.ge.com Wed, 6 Jun 2001 15:12:07 -0400 Date: Wed, 6 Jun 2001 15:12:07 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] Flood iterator ++ method Damion, The confusion is that the stack is not keeping track of "where you have been" (the stack is not an exhaustive representation of where you have been, your tempImage is really keeping track of that). Your stack is really keeping track of "where you need to go next" (places that you have identified as potentially inside the function, but have yet to be checked). Your tempImage is the mask that I was referring to. (I don't think state #3 is really needed.) Jim -----Original Message----- From: Damion Shelton [mailto:dmsst59+@pitt.edu] Sent: Wednesday, June 06, 2001 2:44 PM To: Miller, James V (CRD); 'insight-Developers' Subject: Re: [Insight-developers] Flood iterator ++ method Jim: Could you elaborate a little on your suggestion? The current implementation, in a nutshell, is: ----------------- Create tempImage as an n-dimensional image of unsigned chars the same size as source image. Pixel values in tempImage are: 0=unchecked 1=checked, not in function 2=checked, in function, neighbor check incomplete 3=checked, in function, neighbor check complete Push the seed index onto the stack. Do{ Examine the pixel at the index on top of the stack If the pixel has not been checked (i.e. tempImage[index] = 0) If this pixel is inside the function tempImage[index] = 2 Else (it's not inside the function) tempImage[index] = 1 Pop top index off the stack Continue (next iteration of do loop) Now check all neighbors If there's a neighbor that's hasn't been checked (i.e.tempImage[neighborindex] = 0) Push neighbor's index onto stack Else tempImage[index] = 3 Pop top index off stack (we've checked all the neighbors) }While there are no indices on the stack ----------------- The stack keeps track of where I've been, and the temp image store info about the state of all of the pixels in the original image (in/out/checked/unchecked). The stack seems neccessary since it allows me to reverse my forward progress and ensure that all neighbors are eventually checked. But, if you have a way around this that would be great. I'm also not sure how RLE would help - recomputing a RLE compressed temp image at every iterator step would be an expensive operation, but I'm probably misunderstanding what you mean. -Damion- ----- Original Message ----- From: "Miller, James V (CRD)" To: "'Damion Shelton'" ; "'insight-Developers'" Sent: Wednesday, June 06, 2001 7:29 AM Subject: RE: [Insight-developers] Flood iterator ++ method > Damion, > > Instead of a stack of indices indicating where you have been, you could keep a mask (image). This > could be an image of a low bit count or a run length encoded image. You really only need one bit per > pixel to indicate that you have visited that pixel. > > While this is analogous to your stack storage, it would require less memory. > > Jim From dmsst59+@pitt.edu Thu, 07 Jun 2001 12:09:20 -0400 Date: Thu, 07 Jun 2001 12:09:20 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] spatial functions, iterator updates The spatial function and filled spatial function iterator revisions are now in the repository. Comments are welcome. -Damion- From hughett@mercur.uphs.upenn.edu Thu, 7 Jun 2001 14:51:04 -0400 Date: Thu, 7 Jun 2001 14:51:04 -0400 From: Paul Hughett hughett@mercur.uphs.upenn.edu Subject: [Insight-developers] ITK configure fails on Linux Following a fresh download of the Insight repository onto a Linux (RH 7.1) system, configure fails with the following errors. Does anyone have a clue? Paul Hughett [hughett@mercur Insight.bin]$ ../Insight/configure ... creating ./config.status creating CMakeSystemConfig.cmake sed: can't read ../Insight/CMake/CMakeSystemConfig.cmake.in: No such file or directory creating CMake/makedir sed: can't read ../Insight/CMake/dummy.in: No such file or directory creating CMake/Source/Makefile creating CMake/Source/cmConfigure.h gmake: *** No rule to make target `CMakeBuildTargets'. Stop. CMake/Source/CMakeBuildTargets /home/hughett/work/Insight/CMakeLists.txt -MakeCache -S/home/hughett/work/Insight -O/home/hughett/work/Insight.bin -H/home/hughett/work/Insight -B/home/hughett/work/Insight.bin ../Insight/configure: CMake/Source/CMakeBuildTargets: No such file or directory CMakeCache.txt location: /home/hughett/work/Insight.bin/CMakeCache.txt From brad.king@kitware.com Fri, 8 Jun 2001 08:44:52 -0400 (EDT) Date: Fri, 8 Jun 2001 08:44:52 -0400 (EDT) From: Brad King brad.king@kitware.com Subject: [Insight-developers] ITK configure fails on Linux > Following a fresh download of the Insight repository onto a Linux (RH > 7.1) system, configure fails with the following errors. Does anyone > have a clue? Configure is no longer used to build ITK on unix. Instead, cmake is used directly. After doing a "cvs update -d", use the configure provided with CMake to build cmake itself. Then, from the binary directory for Insight, do "cmake ../Insight" and then type "make" to build everything. Building cmake separately might seem like an extra step, but once it stablizes, it can be built and installed with "make install", and then used for any project that uses cmake without being rebuilt for that project. -Brad From will.schroeder@kitware.com Fri, 08 Jun 2001 12:06:58 -0400 Date: Fri, 08 Jun 2001 12:06:58 -0400 From: Will Schroeder will.schroeder@kitware.com Subject: [Insight-developers] ITK configure fails on Linux I am cleaning up the Insight/Documentation directory. I've updated the CMake.pdf and CMake.rtf documents (CMake.doc was removed in favor of CMake.rtf because of some weird CVS problems.) I'll soon have updated instructions for building Insight in the InsightStart.doc. Will At 08:44 AM 6/8/2001 -0400, Brad King wrote: >> Following a fresh download of the Insight repository onto a Linux (RH >> 7.1) system, configure fails with the following errors. Does anyone >> have a clue? >Configure is no longer used to build ITK on unix. Instead, cmake is used >directly. After doing a "cvs update -d", use the configure provided with >CMake to build cmake itself. Then, from the binary directory for Insight, >do "cmake ../Insight" and then type "make" to build everything. > >Building cmake separately might seem like an extra step, but once it >stablizes, it can be built and installed with "make install", and then >used for any project that uses cmake without being rebuilt for that >project. > >-Brad > > > > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From millerjv@crd.ge.com Fri, 8 Jun 2001 14:16:29 -0400 Date: Fri, 8 Jun 2001 14:16:29 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] Specifying "fullwarn" compiler flags Nightly.Irix64.Configure: $(START_ACTION) rsh -n $(Irix64Host) '(cd $(ITK_QUALITY_HOME)/Insight-irix65-64; gmake - i clean; rm -f config.cache; setenv CXX CC; setenv CXXFLAGS "-64 -fullwarn -LANG :std -woff 3439 -woff 3201 -woff 1424" ; setenv CC cc; setenv CFLAGS "-64 -fullw arn"; setenv LD_LIBRARY_PATH /usr/tmp/local/lib/tcl8.0n32/unix; setenv CC cc ; m kdir CMake; cd CMake; ../../Insight/CMake/configure; nice gmake; cd ..; CMake/So urce/cmake ../Insight;)' >> Logs/$(Irix64Host).txt $(END_ACTION) Jim Miller _____________________________________ Visualization & Computer Vision GE Corporate Research & Development Bldg. KW, Room C218B P.O. Box 8, Schenectady NY 12301 millerjv@crd.ge.com (518) 387-4005, Dial Comm: 8*833-4005, Cell: (518) 505-7065, Fax: (518) 387-6981 <> begin 600 Miller, James V (CRD).vcf M0D5'24XZ5D-!4D0-"E9%4E-)3TXZ,BXQ#0I..DUI;&QE3M.97<@66]R:SLQ,C,P,3M54T$- M"DQ!0D5,.U=/4DL[14Y#3T1)3D<]455/5$5$+5!224Y404),13I+5RU#,C$X M0CTP1#TP05`N3RX@0F]X(#@],$0],$%38VAE;F5C=&%D>2P@3F5W(%EO I added some brief HTML files in Insight/Documentation/README.html > and InsightDocuments/README.html to shephard the newbies a little > better. Thanks. We are about to bring some new grad students onto the team here; it definitely helps when the procedures given in the documentation actually work. Paul Hughett From ibanez@choroid.cs.unc.edu Mon, 11 Jun 2001 01:43:40 -0400 (EDT) Date: Mon, 11 Jun 2001 01:43:40 -0400 (EDT) From: Luis Ibanez ibanez@choroid.cs.unc.edu Subject: [Insight-developers] Registration using a Hard Disk Hi, This is from IEEE Computer, June 2001: "Active Disks for Large-Scale Data Processing" It happens that perihelial devices are smarter and smarter, and some of them have the computing power of PC's some years ago. Typical hard disks today have an internal memory of 2MB and a processor at 100Mhz, which most of the time is sleeping... This devices can be programmed to do some useful things, like medical image registration. The more disks you put in your system the more computing power is available (one reason for having 4 disks of 10Gb instead of one of 40Gb :-) ). An application is shown using 10 disks for registering a 384Kb image using FFT. The nicest part is that in this way a hard disk could be integrated in a data pipeline just as a filter more. Luis -- Luis Ibanez CB#: 7060 Research Assistan Professor phone: (919) 843 6941 Division of Neurosurgery fax: (919) 966 6627 University of North Carolina at Chapel Hill email: ibanez@cs.unc.edu Chapel Hill, NC 27599-7060 http://www.cs.unc.edu/~ibanez From dmsst59+@pitt.edu Tue, 12 Jun 2001 13:50:26 -0400 Date: Tue, 12 Jun 2001 13:50:26 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] itkImage physical/data conversions Some time back I implemented a function in itkBloxBoundaryPointImage called ConvertPhysicalToDataCoords(TVectorType physicalCoords, IndexType& dataCoords). physicalCoords is a vector of doubles representing a point in physical space; after execution, dataCoords contains the coordinates in index space, if these coordinates are valid index coordinates in the image. itkBloxBoundaryPointImage is under Code/Common, if you want to take a look. My question is, how does this relate to the two functions (which I just noticed today): AffineTransformType GetIndexToPhysicalTransform (void)const AffineTransformType GetPhysicalToIndexTransform (void)const Is it worthwhile to have a function which returns an actual index, rather than a transform? My implementation ignores the transformation component of PhysicalImage, which is obviously a bad move. One feature which might be nice to have, though, is bounds checking, which results in a return value of true if the index is part of the image, or false if it isn't. Any thoughts? -Damion- From millerjv@crd.ge.com Tue, 12 Jun 2001 11:46:03 -0400 Date: Tue, 12 Jun 2001 11:46:03 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] ANN: Testing scripts have moved After struggling for months on what to "name" Insight's testing system, we finally just picked the first name that at least 3 of us liked. The new name of Insight's testing system is: Dart Dart can be an acronym: "Tests, Reports, and Dashboards" (read backwards yields "Dart") "Dashboards and Regression Tests" "Distributed and Remote Testing" "Dashboards and Reports for Testing" But actually, Dart just sounds pretty cool. Besides, the dashboard can be a "dartboard" and email sent to repeat offenders of software quality can be "poisoned darts". Since we have finally settled on a name (for the moment), I have restructed the testing directories. Everything that was under Testing/Utilities in now under a directory Dart. The directory structure now looks like Insight Dart Source Client Server cron www xalan XSL Utilities Web HTML Art If you ran automated builds or testing using the target in the unix makefiles, then your scripts will not need to be changed. However, if you wrote your automated testing scripts to run tclsh Testing/Utilities/DashboardManager.tcl arguments then you will now need to use tclsh Dart/Source/Client/DashboardManager.tcl arguments Remaining Dart restructuring tasks: * There one remaining variable in Update.tcl.in that needs to be a configure option * I want to make Dart/Server/www/cgi-bin/Dart.pl be the default perl script on the webserver This will be a minor change to Submit.tcl.in and to the toplevel CMakeLists.txt file. I want to setup Dart.pl so that it can handle multiple projects. I think this will look like how cvsweb is configured. For this I need to change two variables to arrays. Doesn't sound to hard but my Perl skills are "not refined". Jim Miller _____________________________________ Visualization & Computer Vision GE Corporate Research & Development Bldg. KW, Room C218B P.O. Box 8, Schenectady NY 12301 millerjv@crd.ge.com (518) 387-4005, Dial Comm: 8*833-4005, Cell: (518) 505-7065, Fax: (518) 387-6981 <> begin 600 Miller, James V (CRD).vcf M0D5'24XZ5D-!4D0-"E9%4E-)3TXZ,BXQ#0I..DUI;&QE3M.97<@66]R:SLQ,C,P,3M54T$- M"DQ!0D5,.U=/4DL[14Y#3T1)3D<]455/5$5$+5!224Y404),13I+5RU#,C$X M0CTP1#TP05`N3RX@0F]X(#@],$0],$%38VAE;F5C=&%D>2P@3F5W(%EO I have removed CMake from the Insight cvs tree. Did you update InsightStart.doc to give the new procedure for downloading and building Insight from scratch? If you didn't, could you please find time to do it today? I'm giving a tutorial to a batch of new Insight developers at 4 pm today and would like to give them current instructions. Thanks. Paul Hughett From bill.hoffman@kitware.com Thu, 14 Jun 2001 12:05:08 -0400 Date: Thu, 14 Jun 2001 12:05:08 -0400 From: Bill Hoffman bill.hoffman@kitware.com Subject: [Insight-developers] CMake no longer in the Insight tree Done. http://public.kitware.com/Insight/Web/HTML/Documentation.htm At 10:53 AM 6/14/2001 -0400, Paul Hughett wrote: >Bill Hoffman hath writ: > >> I have removed CMake from the Insight cvs tree. > >Did you update InsightStart.doc to give the new procedure for >downloading and building Insight from scratch? If you didn't, could >you please find time to do it today? I'm giving a tutorial to a batch >of new Insight developers at 4 pm today and would like to give them >current instructions. Thanks. > >Paul Hughett > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From ibanez@choroid.cs.unc.edu Thu, 14 Jun 2001 16:08:32 -0400 (EDT) Date: Thu, 14 Jun 2001 16:08:32 -0400 (EDT) From: Luis Ibanez ibanez@choroid.cs.unc.edu Subject: [Insight-developers] repository down ? Hi, I'm having trouble connecting to the cvs repository, is somebody experiencing the same problem ? --- Here is the message I got: cvs [login aborted]: unrecognized auth response from public.kitware.com: cvs: option '--allow-r' requires an argument --- thanks Luis From cacst11+@pitt.edu Thu, 14 Jun 2001 16:32:10 -0400 Date: Thu, 14 Jun 2001 16:32:10 -0400 From: C. Aaron Cois cacst11+@pitt.edu Subject: [Insight-developers] Voronoi This is a multi-part message in MIME format. ------=_NextPart_000_005E_01C0F4EF.8F613F10 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I noticed that there is already a Voronoi2DDiagram already in itk...is = there a Voronoi3DDiagram in the works? =20 = Aaron ------=_NextPart_000_005E_01C0F4EF.8F613F10 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
I noticed that there is already a = Voronoi2DDiagram=20 already in itk...is there a Voronoi3DDiagram in the works?  =
 
       =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20 Aaron
------=_NextPart_000_005E_01C0F4EF.8F613F10-- From brad.king@kitware.com Thu, 14 Jun 2001 16:57:57 -0400 (EDT) Date: Thu, 14 Jun 2001 16:57:57 -0400 (EDT) From: Brad King brad.king@kitware.com Subject: [Insight-developers] repository down ? > Here is the message I got: > > cvs [login aborted]: unrecognized auth response from public.kitware.com: > cvs: option '--allow-r' requires an argument I had added a new cvs repository root on public.kitware.com, but it turns out that the extra --allow-root that was needed in inetd.conf was exceeding the command line length allowed by inetd, so it was getting truncated. I have fixed the problem. -Brad From brad.king@kitware.com Thu, 14 Jun 2001 17:08:30 -0400 (EDT) Date: Thu, 14 Jun 2001 17:08:30 -0400 (EDT) From: Brad King brad.king@kitware.com Subject: [Insight-developers] CMake Repository Hello, all: As part of recent efforts to separate CMake from its original parent project (the Insight toolkit), I have moved the cvs repository's root directory on our server. There is a symlink left behind so that existing checkouts will still work, but it may not be around forever. The old root was: :pserver:username@public.kitware.com:/insight/cmakecvsroot The new root is: :pserver:username@public.kitware.com:/CMake/cvsroot To check out CMake, use: cvs -d :pserver:username@public.kitware.com:/CMake/cvsroot checkout CMake Everyone should check out a copy of CMake using the new root. If you have made any changes that are not checked in, there are two ways to get them into the new checkout: 1.) Check them in from your current working copy. Then do a fresh checkout with the new cvsroot. This options assumes the changes are ready for checkin. 2.) Do a fresh checkout with the new root and copy any changed files over from your old working copy. -Brad From george@stetten.com Thu, 14 Jun 2001 19:42:42 -0400 Date: Thu, 14 Jun 2001 19:42:42 -0400 From: George Stetten george@stetten.com Subject: [Insight-developers] web rot If we're not using the private getting started pages http://public.kitware.com/Insight/HTMLPrivate/ any more, why don't we get rid of them? Or better yet, leave a message saying where the real directions are? George From bill.hoffman@kitware.com Fri, 15 Jun 2001 10:43:26 -0400 Date: Fri, 15 Jun 2001 10:43:26 -0400 From: Bill Hoffman bill.hoffman@kitware.com Subject: [Insight-developers] web rot I have updated the page to have links to the public page. -Bill At 07:42 PM 6/14/2001 -0400, George Stetten wrote: >If we're not using the private getting started pages > >http://public.kitware.com/Insight/HTMLPrivate/ > >any more, why don't we get rid of them? Or better yet, leave a message >saying >where the real directions are? > > >George > > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From dmsst59+@pitt.edu Fri, 15 Jun 2001 12:29:13 -0400 Date: Fri, 15 Jun 2001 12:29:13 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] dashboard errors on linux build I fixed a bug (VNL vs. vnl include path) which will hopefully solve the linux build problems. If linux types could give me some feedback on possible problems if the errors persist it would be greatly appreciated, since we are a Windows-only sort of place. Thanks, -Damion- From hughett@mercur.uphs.upenn.edu Fri, 15 Jun 2001 15:38:58 -0400 Date: Fri, 15 Jun 2001 15:38:58 -0400 From: Paul Hughett hughett@mercur.uphs.upenn.edu Subject: [Insight-developers] Slides from new developer's introduction The slides from a talk I gave at Penn to introduce some new developers to Insight are now in the repository at InsightDocuments/Developer/General/Introduction.ppt Let me know if you see any corrections or improvements. Paul Hughett From hughett@mercur.uphs.upenn.edu Fri, 15 Jun 2001 16:29:48 -0400 Date: Fri, 15 Jun 2001 16:29:48 -0400 From: Paul Hughett hughett@mercur.uphs.upenn.edu Subject: [Insight-developers] Notes on Insight Telcon 15 June 2001 Notes on the Insight Telcon 15 June 2001: IMPORTANT: July 5 will be the feature freeze date for the July 16 beta release. As of that date, updates to the repository should be limited to bug fixes. We should be getting a class to read raw image data pretty soon now. CMake is now a separate module that must be downloaded from the repository and built separately from Insight itself. A few people have had the time to try out the new method and have reported no problems. Others are requested to try it, using the instructions, and report any problems seen with either the procedure or the instructions. The testing system has been renamed DART, and will also become a separate module. The nightly build and dashboard system has not been completely stable; people are working on it and things should improve greatly over the next week or two. Developers are requested to look at the dashboard every day, so that we can catch errors early, before they have a change to mate with other errors and breed. Single-platform shops are sometimes having trouble code that compiles cleanly on their favorite platform but blossoms out in errors when the nighly build compiles on other platforms. Checking the continuous build from just after the new code was submitted will often help. Asking other people on the mailing list also works, or even asking someone with the offending platform to look into and fix the bug for you. [Running your compiler with all warnings turned on might also help sometimes. --Editor] Vikram spent some time looking for problems that ought to be fixed before the beta; other people added their own items. (1) We really needed a raw image reader. (2) The Doxygen modules list is very useful for finding specific methods; we need to see that all classes get listed there. (3) The Getting Started document and User's Manual will be critical. The first needs to be updated and the second to be written. (4) Any examples we include with the beta release should at least compile; we should probably add the examples to the nightly build. (We not want to try to execute them, since some take a long time to run.) (5) We should put together a getting starting page for using Doxygen, since that is our primary source of Insight documentation and will be essential for most new users. Luis reminded everyone that the Doxygen modules list is defined in Insight/Code/MainPage.dox (but should move to a documentation directory?) and that classes can list themselves in a module by using the \ingroup tag in Doxygen comments. Paul Hughett From lorensen@crd.ge.com Mon, 18 Jun 2001 08:47:30 -0400 Date: Mon, 18 Jun 2001 08:47:30 -0400 From: Lorensen, William E (CRD) lorensen@crd.ge.com Subject: [Insight-developers] Build with shared libraries on SGI Seems I can no longer build shared libraries on my irix 6.5 system. I get: rm -f libCxxTypes.so CC -n32 -LANG:std -OPT:limit=10000 -woff 3439 -woff 1355 -shared -rdata_shared -o \ libCxxTypes.so \ cxxArrayType.o cxxClassType.o cxxConversions.o cxxCvQualifiedType.o cxxEnumerationType.o cxxFunctionType.o cxxFundamentalType.o cxxPointerToMemberType.o cxxPointerType.o cxxReferenceType.o cxxType.o cxxTypeSystem.o -L/home/lorensen/Insight-irix65/Code/Common -L/home/lorensen/Insight-irix65/Code/Numerics/vxl -L/home/lorensen/Insight-irix65/Utilities/Cable/CxxTypes -L/home/lorensen/Insight-irix65/Utilities/Cable/Expat -L/home/lorensen/Insight-irix65/Utilities/Cable/Parsers -L/home/lorensen/Insight-irix65/Utilities/Cable/Generators -lpthread -Wl,-rpath,/home/lorensen/Insight-irix65/Code/Common:/home/lorensen/Insight-irix65/Code/Numerics/vxl: /home/lorensen/Insight-irix65/Utilities/Cable/CxxTypes:/home/lorensen/Insight-irix65/Utilities/Cable/ Expat:/home/lorensen/Insight-irix65/Utilities/Cable/Parsers:/home/lorensen/Insight-irix65/Utilities/C able/Generators gmake[3]: *** [libCxxTypes.so] Bus error Static build seems fine so far... Bill From lorensen@crd.ge.com Mon, 18 Jun 2001 15:42:41 -0400 Date: Mon, 18 Jun 2001 15:42:41 -0400 From: Lorensen, William E (CRD) lorensen@crd.ge.com Subject: [Insight-developers] Cable build problem on solaris using gcc Any ideas?? c++ -O cable.o -L/home/lorensen/Insight-solaris/Code/Common -L/home/lorensen/Insight-solaris/Code/Numerics/vxl -L/home/lorensen/Insight-solaris/Utilities/Cable/CxxTypes -L/home/lorensen/Insight-solaris/Utilities/Cable/Expat -L/home/lorensen/Insight-solaris/Utilities/Cable/Parsers -L/home/lorensen/Insight-solaris/Utilities/Cable/Generators -lpthread -lthread -ldl -lCxxTypes -lExpat -lCableParsers -lCableGenerators -lpthread -lthread -ldl -lCxxTypes -lExpat -lCableParsers -lCableGenerators -o cable Undefined first referenced symbol in file gen::CxxGenerator::GetInstance(configuration::Package const *)cable.o gen::TclGenerator::GetInstance(configuration::Package const *, source::Namespace const *)cable.o ld: fatal: Symbol referencing errors. No output written to cable collect2: ld returned 1 exit status gmake[3]: *** [cable] Error 1 From millerjv@crd.ge.com Tue, 19 Jun 2001 08:39:42 -0400 Date: Tue, 19 Jun 2001 08:39:42 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] Doxygen configuration I looked into activating a couple of doxygen features. 1) Latex support. I installed a version of latex on public.kitware so doxygen will now create gifs of equations that are in the documentation. 2) Search support. I tried to run the doxytags on the Insight tree (which builds an index that is used to search the documentation). I let it run for a couple of hours and it exhausted the memory on public. So using doxygen's native search seems bleak. Jim Miller _____________________________________ Visualization & Computer Vision GE Corporate Research & Development Bldg. KW, Room C218B P.O. Box 8, Schenectady NY 12301 millerjv@crd.ge.com (518) 387-4005, Dial Comm: 8*833-4005, Cell: (518) 505-7065, Fax: (518) 387-6981 <> begin 600 Miller, James V (CRD).vcf M0D5'24XZ5D-!4D0-"E9%4E-)3TXZ,BXQ#0I..DUI;&QE3M.97<@66]R:SLQ,C,P,3M54T$- M"DQ!0D5,.U=/4DL[14Y#3T1)3D<]455/5$5$+5!224Y404),13I+5RU#,C$X M0CTP1#TP05`N3RX@0F]X(#@],$0],$%38VAE;F5C=&%D>2P@3F5W(%EO2) Search support. I tried to run the doxytags on the Insight tree (which builds an index that is >used to search the documentation). I let it run for a couple of hours and it exhausted the memory on >public. So using doxygen's native search seems bleak. > From ibanez@cs.unc.edu Tue, 19 Jun 2001 11:57:23 -0400 Date: Tue, 19 Jun 2001 11:57:23 -0400 From: Luis Ibanez ibanez@cs.unc.edu Subject: [Insight-developers] CMake CMAKE_ROOT Hi, I just updated CMake from the separate repository, and when running CMakeSetup I got the following message: "CMake Error: Could not find CMAKE_ROOT !!! Modules directory in directory: /share/CMake/Modules" this is followed by several error messages (in other message boxes) concerning files that CMakeSetup cannot find as a consequence of the CMAKE_ROOT missing, and at the end it crash. I end up setting CMAKE_ROOT as an environment variable in a cygwin shell and invoking CMakeSetup in this same shell. Wouldn't it be reasonable to give the user the chance to Browse the filesystem for the place where CMake is installed, so the CMAKE_ROOT variable can be set from the GUI ? Luis From bill.hoffman@kitware.com Tue, 19 Jun 2001 13:13:45 -0400 Date: Tue, 19 Jun 2001 13:13:45 -0400 From: Bill Hoffman bill.hoffman@kitware.com Subject: [Insight-developers] CMake CMAKE_ROOT Something else is wrong. It should figure out CMAKE_ROOT automatically. Did you move the executable after building it? -Bill At 11:57 AM 6/19/2001 -0400, Luis Ibanez wrote: >Hi, > >I just updated CMake from the separate >repository, and when running CMakeSetup >I got the following message: > >"CMake Error: Could not find CMAKE_ROOT !!! > Modules directory in directory: > /share/CMake/Modules" > >this is followed by several error messages >(in other message boxes) concerning files >that CMakeSetup cannot find as a consequence >of the CMAKE_ROOT missing, and at the end >it crash. > >I end up setting CMAKE_ROOT as an environment >variable in a cygwin shell and invoking >CMakeSetup in this same shell. > >Wouldn't it be reasonable to give the user >the chance to Browse the filesystem for the >place where CMake is installed, so the CMAKE_ROOT >variable can be set from the GUI ? > > >Luis > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From hughett@mercur.uphs.upenn.edu Tue, 19 Jun 2001 15:29:35 -0400 Date: Tue, 19 Jun 2001 15:29:35 -0400 From: Paul Hughett hughett@mercur.uphs.upenn.edu Subject: [Insight-developers] Permission Problems in CMake Installation I just downloaded and installed CMake for its repository and discovered that some of the permissions are not set correctly for a Linux/Unix system; all of the following get permissions 770 and owner root.root, which means they cannot be used by anyone except root. /usr/local/bin/cmake /usr/local/share /usr/local/share/CMake /usr/local/share/CMake/Templates/configure /usr/local/share/CMake/Templates/install-sh Certainly the first three should be world-readable and executable; I've leaving the last two alone for now on my machine. Paul Hughett From hughett@mercur.uphs.upenn.edu Tue, 19 Jun 2001 15:40:58 -0400 Date: Tue, 19 Jun 2001 15:40:58 -0400 From: Paul Hughett hughett@mercur.uphs.upenn.edu Subject: [Insight-developers] Can't find CMakeSystemConfig.cmake I've just updated CMake and Insight from the repository. Building and installing CMake appears to be okay, except for the permissions errors. Running CMake on Insight seems to work okay. But when I try to do make on Insight, I get the following error: [hughett@mercur Insight.bin]$ make /usr/local/bin/cmake -S/home/hughett/work/Insight -O/home/hughett/work/Insight.bin -H/home/hughett/work/Insight -B/home/hughett/work/Insight.bin CMake Error: error can not open file /home/hughett/work/Insight.bin/CMakeSystemConfig.cmake make: *** [cmake.depends] Error 255 and discover that the desired file does not exist in either Insight.bin or Insight: [hughett@mercur Insight.bin]$ ls -l /home/hughett/work/Insight.bin/CMakeSystemConfig.cmake ls: /home/hughett/work/Insight/CMakeSystemConfig.cmake: No such file or directory Am I doing something wrong, or is there a bug in the repository? Paul Hughett From brad.king@kitware.com Tue, 19 Jun 2001 16:04:47 -0400 (EDT) Date: Tue, 19 Jun 2001 16:04:47 -0400 (EDT) From: Brad King brad.king@kitware.com Subject: [Insight-developers] Permission Problems in CMake Installation > that some of the permissions are not set correctly for a Linux/Unix system; > all of the following get permissions 770 and owner root.root, which means > they cannot be used by anyone except root. I'm guessing that your root users's "umask" is 007. The installation tool must use umask as a default when not told the permissions explicitly. I have changed CMake/Makefile.in to use 755 for executable permissions. If you update and re-run configure, make, make install, you should be okay. -Brad From hughett@mercur.uphs.upenn.edu Tue, 19 Jun 2001 16:12:22 -0400 Date: Tue, 19 Jun 2001 16:12:22 -0400 From: Paul Hughett hughett@mercur.uphs.upenn.edu Subject: [Insight-developers] Permission Problems in CMake Installation > I have changed CMake/Makefile.in to use 755 for executable > permissions. If you update and re-run configure, make, make install, > you should be okay. I just changed them by hand, which is a lot faster. Should the copies of configure and install-sh in /usr/local/share/CMake also be set to 755? I wasn't sure why they were there and didn't touch the permissions. Paul Hughett From cacst11+@pitt.edu Tue, 19 Jun 2001 16:40:58 -0400 Date: Tue, 19 Jun 2001 16:40:58 -0400 From: C. Aaron Cois cacst11+@pitt.edu Subject: [Insight-developers] Cell Faces This is a multi-part message in MIME format. ------=_NextPart_000_00AD_01C0F8DE.9E3B79E0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Greetings all. Using the mesh example in cvs as a base, i have been = trying to get cells and their faces from the mesh. The mesh i am using = has a tetrahedron cell in it, which i get using the following lines: Cell::Pointer testCell2; mesh->GetCell(0, &testCell2); The next few lines verify that it is a tetrahedron cell: const char * name =3D testCell2->GetClassName(); std::cout << name << std::endl; if(name =3D=3D "TetrahedronCell") { when this is proven true, the number of faces can be assumed, and i = would like to cycle through and get the vertices of each face. Seems = logical to use the GetFace function, and then get the vertices from each = individual face. Probhlem is, since the type of cell was not known when = it was found in the mesh, the pointer to it (testCell2) is a generic = Cell/CellInterface Pointer. I tried the following code: typedef itk::TetrahedronCell TetraCell; int numFaces =3D 4; TetraCell::Pointer tetraPointer; TetraCell::FacePointer facePointer; for(int i=3D0;i < numFaces;i++) { facePointer =3D ((TetraCell::Pointer)testCell2)->GetFace(i); } which did not work, giving an error on the attempt to type cast the = generic cell pointer. I also tried creating a new FacePointer and = setting it equal to testCell2 with no success. Is there another way to = do this? = Aaron = Cois ------=_NextPart_000_00AD_01C0F8DE.9E3B79E0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Greetings all.  Using the mesh = example in cvs=20 as a base, i have been trying to get cells and their faces from the = mesh. =20 The mesh i am using has a tetrahedron cell in it, which i get using the=20 following lines:
 
     Cell::Pointer = testCell2;
      mesh->GetCell(0,=20 &testCell2);
 
The next few lines verify that it is a = tetrahedron=20 cell:

      const = char * name =3D=20 testCell2->GetClassName();
      std::cout = <<=20 name << std::endl;
 
      if(name = =3D=3D=20 "TetrahedronCell")
      {
 
when this is proven true, the number of = faces can=20 be assumed, and i would like to cycle through and get the vertices of = each=20 face.  Seems logical to use the GetFace function, and then get the = vertices=20 from each individual face.  Probhlem is, since the type of cell was = not=20 known when it was found in the mesh, the pointer to it (testCell2) is a = generic=20 Cell/CellInterface Pointer.  I tried the following = code:
 
        = typedef=20 itk::TetrahedronCell<int, CellTraits>  = TetraCell;
 
        = int numFaces=20 =3D 4;
 
       =20 TetraCell::Pointer tetraPointer;
    =    =20 TetraCell::FacePointer facePointer;
 
        = for(int i=3D0;i=20 < numFaces;i++)
       =20 {
          facePointer =3D=20 ((TetraCell::Pointer)testCell2)->GetFace(i);
   =20     }
which did not work, giving an error on = the attempt=20 to type cast the generic cell pointer.  I also tried creating a new = FacePointer and setting it equal to testCell2 with no success.  Is = there=20 another way to do this?
 
       =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20     Aaron Cois
 
 
 
------=_NextPart_000_00AD_01C0F8DE.9E3B79E0-- From brad.king@kitware.com Tue, 19 Jun 2001 17:05:19 -0400 (EDT) Date: Tue, 19 Jun 2001 17:05:19 -0400 (EDT) From: Brad King brad.king@kitware.com Subject: [Insight-developers] Cell Faces > Cell::Pointer testCell2; > mesh->GetCell(0, &testCell2); [snip] > facePointer = ((TetraCell::Pointer)testCell2)->GetFace(i); This is where RTTI can come in handy. You want code like this: typename TetraCell::Pointer tetraCell = dynamic_cast(testCell2.GetPointer()); if(tetraCell) { for(int i=0;i < numFaces;++i) { facePointer = tetraCell->GetFace(i); //... } } else { // cell was not a tetrahedron, so dynamic_cast returned null. } I think a better interface is needed to do this, though. I will see about adding one soon. -Brad From ibanez@choroid.cs.unc.edu Wed, 20 Jun 2001 09:09:25 -0400 (EDT) Date: Wed, 20 Jun 2001 09:09:25 -0400 (EDT) From: Luis Ibanez ibanez@choroid.cs.unc.edu Subject: [Insight-developers] CMake Cable message Hi, After updating CMake this morning, the following messages appear when the project files are built: "CMake Error: unknown CMake command CABLE_DEFINE_SETH:/usr/ibanez/src/Insight/Testing/Code/CMakeList.txt" and "CMake Error: unknown CMake command CABLE_OPEN_NAMESPACEH:/usr/ibanez/src/Insight/Testing/Code/CMakeList.txt" Both appear repeatedly ... Any ideas ? thanks Luis From brad.king@kitware.com Wed, 20 Jun 2001 09:23:06 -0400 (EDT) Date: Wed, 20 Jun 2001 09:23:06 -0400 (EDT) From: Brad King brad.king@kitware.com Subject: [Insight-developers] CMake Cable message > "CMake Error: unknown CMake command > CABLE_DEFINE_SETH:/usr/ibanez/src/Insight/Testing/Code/CMakeList.txt" > "CMake Error: unknown CMake command > CABLE_OPEN_NAMESPACEH:/usr/ibanez/src/Insight/Testing/Code/CMakeList.txt" > Any ideas ? I removed all the old style CABLE commands from CMake. All calls to them have been removed from the Insight tree, so doing an update on that should fix the problem. I have merged my branch of Cable development into the main trunk, and the old instantiation generator functionality has been removed due to changes that were needed for the wrapper generation. I plan to put similar functionality into CMake (eventually). -Brad From whitaker@cs.utah.edu Wed, 20 Jun 2001 13:21:43 -0600 Date: Wed, 20 Jun 2001 13:21:43 -0600 From: Ross Whitaker whitaker@cs.utah.edu Subject: [Insight-developers] Nov. meeting Hi, Sorry to bother the list about this, but I need some info ASAP. Does anybody recall the dates for the Fall meeting in Bethesda? November, right? Regards, Ross -- Ross T. Whitaker, Assistant Professor 50 S. Central Campus Drive, Rm. 3190 University of Utah Salt Lake City, UT 84112-9205 voice: 801/587-9549, fax: 801/581-5843 web: www.cs.utah.edu/~whitaker From hughett@mercur.uphs.upenn.edu Wed, 20 Jun 2001 15:23:13 -0400 Date: Wed, 20 Jun 2001 15:23:13 -0400 From: Paul Hughett hughett@mercur.uphs.upenn.edu Subject: [Insight-developers] Nov. meeting > Sorry to bother the list about this, but I need some info ASAP. Does > anybody recall the dates for the Fall meeting in Bethesda? November, > right? Novermber 8th and 9th, assuming that I copied it into my Palm Pilot correctly. Paul Hughett From hughett@mercur.uphs.upenn.edu Wed, 20 Jun 2001 15:43:33 -0400 Date: Wed, 20 Jun 2001 15:43:33 -0400 From: Paul Hughett hughett@mercur.uphs.upenn.edu Subject: [Insight-developers] Problems with affine MI registration I'm gearing up to try the ITK image registration algorithms on real data. I took the test program for affine/mutual information/gradient descent registration from the repository and modified it to try some variations in the actual transformation and optimization parameters. Discovered that the algorithm seems to work reasonably well for translations, as long as they aren't too large, but I can't get it to work at all for either isotropic or anisotropic scaling; an expansion of even a few percent causes the algorithm to fail. Neither increasing the learning rate nor increasing the number of samples up to 500 seems to help. Any suggestions? Paul Hughett From lorensen@crd.ge.com Thu, 21 Jun 2001 07:55:30 -0400 Date: Thu, 21 Jun 2001 07:55:30 -0400 From: Lorensen, William E (CRD) lorensen@crd.ge.com Subject: [Insight-developers] Problems with affine MI registration I am also having some problems with the registration. I'm using the Rigid/mi/gradient descent. I can successfully register translated volumes, but cannot if they require a rotation. Bill -----Original Message----- From: Paul Hughett [mailto:hughett@mercur.uphs.upenn.edu] Sent: Wednesday, June 20, 2001 3:44 PM To: insight-developers@public.kitware.com Subject: [Insight-developers] Problems with affine MI registration I'm gearing up to try the ITK image registration algorithms on real data. I took the test program for affine/mutual information/gradient descent registration from the repository and modified it to try some variations in the actual transformation and optimization parameters. Discovered that the algorithm seems to work reasonably well for translations, as long as they aren't too large, but I can't get it to work at all for either isotropic or anisotropic scaling; an expansion of even a few percent causes the algorithm to fail. Neither increasing the learning rate nor increasing the number of samples up to 500 seems to help. Any suggestions? Paul Hughett _______________________________________________ Insight-developers mailing list Insight-developers@public.kitware.com http://public.kitware.com/mailman/listinfo/insight-developers From dmsst59+@pitt.edu Thu, 21 Jun 2001 12:27:27 -0400 Date: Thu, 21 Jun 2001 12:27:27 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] cvs merging Hi all... Couple of questions about the way CVS handles merging file revisions. To use an example, Bill made some changes to itkBloxCoreAtomImage: my original version v1.1 TBoundaryPointImage::Pointer m_BoundaryPointImage Bill's change (to fix missing typename) v1.2 typename TBoundaryPointImage::Pointer m_BoundaryPointImage; My update, which fixed some other stuff v1.3 TBoundaryPointImage::Pointer m_BoundaryPointImage; My modifications were made to version 1.1, and I assumed that Bill's changes would be preserved. That didn't happen though. So, I redid Bill's changes for the next version: v1.4 typename TBoundaryPointImage::Pointer m_BoundaryPointImage; My question is, Is this normal behavior for CVS, or am I doing something wrong? How do we ensure that versions are successfully merged (I'm using WinCVS, incidentally, if that affects anything). Thanks, -Damion- From millerjv@crd.ge.com Thu, 21 Jun 2001 13:08:15 -0400 Date: Thu, 21 Jun 2001 13:08:15 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] cvs merging CVS should have forced you to update your version to v1.2 prior to being able to commit your changes. Did this happen? If both you and Bill had changed the same line of code (or moved that code), then you may have gotten a conflict when updating. The conflicting region should have demarked <<<<<<<< line from one version ========= line from the other version >>>>>>>> and it is up to you to pick the right line of code to accept for the new version you are about to checkin. I don't think WinCVS should cause a problem unless it does something like a "commit -f" to force your version into the repository. -----Original Message----- From: Damion Shelton [mailto:dmsst59+@pitt.edu] Sent: Thursday, June 21, 2001 12:27 PM To: 'insight-Developers' Subject: [Insight-developers] cvs merging Hi all... Couple of questions about the way CVS handles merging file revisions. To use an example, Bill made some changes to itkBloxCoreAtomImage: my original version v1.1 TBoundaryPointImage::Pointer m_BoundaryPointImage Bill's change (to fix missing typename) v1.2 typename TBoundaryPointImage::Pointer m_BoundaryPointImage; My update, which fixed some other stuff v1.3 TBoundaryPointImage::Pointer m_BoundaryPointImage; My modifications were made to version 1.1, and I assumed that Bill's changes would be preserved. That didn't happen though. So, I redid Bill's changes for the next version: v1.4 typename TBoundaryPointImage::Pointer m_BoundaryPointImage; My question is, Is this normal behavior for CVS, or am I doing something wrong? How do we ensure that versions are successfully merged (I'm using WinCVS, incidentally, if that affects anything). Thanks, -Damion- _______________________________________________ Insight-developers mailing list Insight-developers@public.kitware.com http://public.kitware.com/mailman/listinfo/insight-developers From lorensen@crd.ge.com Thu, 21 Jun 2001 13:09:52 -0400 Date: Thu, 21 Jun 2001 13:09:52 -0400 From: Lorensen, William E (CRD) lorensen@crd.ge.com Subject: [Insight-developers] cvs merging Sounds like you are doing something wrong. What cvs commands are you using. WHen you did a cvs update, did cvs say it was merging? Bill -----Original Message----- From: Damion Shelton [mailto:dmsst59+@pitt.edu] Sent: Thursday, June 21, 2001 12:27 PM To: 'insight-Developers' Subject: [Insight-developers] cvs merging Hi all... Couple of questions about the way CVS handles merging file revisions. To use an example, Bill made some changes to itkBloxCoreAtomImage: my original version v1.1 TBoundaryPointImage::Pointer m_BoundaryPointImage Bill's change (to fix missing typename) v1.2 typename TBoundaryPointImage::Pointer m_BoundaryPointImage; My update, which fixed some other stuff v1.3 TBoundaryPointImage::Pointer m_BoundaryPointImage; My modifications were made to version 1.1, and I assumed that Bill's changes would be preserved. That didn't happen though. So, I redid Bill's changes for the next version: v1.4 typename TBoundaryPointImage::Pointer m_BoundaryPointImage; My question is, Is this normal behavior for CVS, or am I doing something wrong? How do we ensure that versions are successfully merged (I'm using WinCVS, incidentally, if that affects anything). Thanks, -Damion- _______________________________________________ Insight-developers mailing list Insight-developers@public.kitware.com http://public.kitware.com/mailman/listinfo/insight-developers From dmsst59+@pitt.edu Thu, 21 Jun 2001 13:49:30 -0400 Date: Thu, 21 Jun 2001 13:49:30 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] cvs merging Here's what I did... a) I created the original v1.1 b) Bill modifies v1.1 to add the typename lines, and updates the repository version to 1.2 c) I modify v1.1 to add extra functionality, but don't add the typename lines d) I copy my modified v1.1 into the Insight directory e) I update my local version to v1.2 resulting in a merge f) I commit the repository version to v1.3, resulting in the removal of Bill's changes I looked at what WinCVS is doing and it appears to just do a normal "commit -m", not -f. Anyways, I'll pay better attention next time I commit changes to see what happens. I don't recall it mentioning any conflicts when I did the update though. -Damion- ----- Original Message ----- From: "Miller, James V (CRD)" To: "'Damion Shelton'" ; "'insight-Developers'" Sent: Thursday, June 21, 2001 1:08 PM Subject: RE: [Insight-developers] cvs merging > CVS should have forced you to update your version to v1.2 prior to being able to commit your changes. > Did this happen? > > If both you and Bill had changed the same line of code (or moved that code), then you may have gotten > a conflict when updating. The conflicting region should have demarked > > <<<<<<<< > line from one version > ========= > line from the other version > >>>>>>>> > > and it is up to you to pick the right line of code to accept for the new version you are about to > checkin. > > I don't think WinCVS should cause a problem unless it does something like a "commit -f" to force your > version into the repository. > > > > > -----Original Message----- > From: Damion Shelton [mailto:dmsst59+@pitt.edu] > Sent: Thursday, June 21, 2001 12:27 PM > To: 'insight-Developers' > Subject: [Insight-developers] cvs merging > > > Hi all... > > Couple of questions about the way CVS handles merging file revisions. To use > an example, Bill made some changes to itkBloxCoreAtomImage: > > my original version > v1.1 TBoundaryPointImage::Pointer m_BoundaryPointImage > > Bill's change (to fix missing typename) > v1.2 typename TBoundaryPointImage::Pointer m_BoundaryPointImage; > > My update, which fixed some other stuff > v1.3 TBoundaryPointImage::Pointer m_BoundaryPointImage; > > My modifications were made to version 1.1, and I assumed that Bill's changes > would be preserved. That didn't happen though. So, I redid Bill's changes > for the next version: > > v1.4 typename TBoundaryPointImage::Pointer m_BoundaryPointImage; > > My question is, Is this normal behavior for CVS, or am I doing something > wrong? How do we ensure that versions are successfully merged (I'm using > WinCVS, incidentally, if that affects anything). > > Thanks, > > -Damion- > > > _______________________________________________ > Insight-developers mailing list > Insight-developers@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-developers > From lorensen@crd.ge.com Thu, 21 Jun 2001 14:01:36 -0400 Date: Thu, 21 Jun 2001 14:01:36 -0400 From: Lorensen, William E (CRD) lorensen@crd.ge.com Subject: [Insight-developers] cvs merging If you updated to version 1.2 then copied your file into the Insight directory you would wipe out Bill's changes. It is dangerous to edit files outside of the checkedout copy. Bill -----Original Message----- From: Damion Shelton [mailto:dmsst59+@pitt.edu] Sent: Thursday, June 21, 2001 1:50 PM To: Miller, James V (CRD); 'insight-Developers' Subject: Re: [Insight-developers] cvs merging Here's what I did... a) I created the original v1.1 b) Bill modifies v1.1 to add the typename lines, and updates the repository version to 1.2 c) I modify v1.1 to add extra functionality, but don't add the typename lines d) I copy my modified v1.1 into the Insight directory e) I update my local version to v1.2 resulting in a merge f) I commit the repository version to v1.3, resulting in the removal of Bill's changes I looked at what WinCVS is doing and it appears to just do a normal "commit -m", not -f. Anyways, I'll pay better attention next time I commit changes to see what happens. I don't recall it mentioning any conflicts when I did the update though. -Damion- ----- Original Message ----- From: "Miller, James V (CRD)" To: "'Damion Shelton'" ; "'insight-Developers'" Sent: Thursday, June 21, 2001 1:08 PM Subject: RE: [Insight-developers] cvs merging > CVS should have forced you to update your version to v1.2 prior to being able to commit your changes. > Did this happen? > > If both you and Bill had changed the same line of code (or moved that code), then you may have gotten > a conflict when updating. The conflicting region should have demarked > > <<<<<<<< > line from one version > ========= > line from the other version > >>>>>>>> > > and it is up to you to pick the right line of code to accept for the new version you are about to > checkin. > > I don't think WinCVS should cause a problem unless it does something like a "commit -f" to force your > version into the repository. > > > > > -----Original Message----- > From: Damion Shelton [mailto:dmsst59+@pitt.edu] > Sent: Thursday, June 21, 2001 12:27 PM > To: 'insight-Developers' > Subject: [Insight-developers] cvs merging > > > Hi all... > > Couple of questions about the way CVS handles merging file revisions. To use > an example, Bill made some changes to itkBloxCoreAtomImage: > > my original version > v1.1 TBoundaryPointImage::Pointer m_BoundaryPointImage > > Bill's change (to fix missing typename) > v1.2 typename TBoundaryPointImage::Pointer m_BoundaryPointImage; > > My update, which fixed some other stuff > v1.3 TBoundaryPointImage::Pointer m_BoundaryPointImage; > > My modifications were made to version 1.1, and I assumed that Bill's changes > would be preserved. That didn't happen though. So, I redid Bill's changes > for the next version: > > v1.4 typename TBoundaryPointImage::Pointer m_BoundaryPointImage; > > My question is, Is this normal behavior for CVS, or am I doing something > wrong? How do we ensure that versions are successfully merged (I'm using > WinCVS, incidentally, if that affects anything). > > Thanks, > > -Damion- > > > _______________________________________________ > Insight-developers mailing list > Insight-developers@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-developers > _______________________________________________ Insight-developers mailing list Insight-developers@public.kitware.com http://public.kitware.com/mailman/listinfo/insight-developers From ken.martin@kitware.com Thu, 21 Jun 2001 14:04:18 -0400 Date: Thu, 21 Jun 2001 14:04:18 -0400 From: Ken Martin ken.martin@kitware.com Subject: [Insight-developers] cvs merging #1 rule in CVS, never copy a file on top of a cvs file. I think every example of changes getting accidentally removed involves cp. My guess is that somehow steps e and d were reversed which would delete the 1.2 changes. Ken > Here's what I did... > > a) I created the original v1.1 > b) Bill modifies v1.1 to add the typename lines, and > updates the repository > version to 1.2 > c) I modify v1.1 to add extra functionality, but don't add > the typename > lines > d) I copy my modified v1.1 into the Insight directory > e) I update my local version to v1.2 resulting in a merge > f) I commit the repository version to v1.3, resulting in > the removal of > Bill's changes From lng@insightful.com Thu, 21 Jun 2001 11:11:23 -0700 Date: Thu, 21 Jun 2001 11:11:23 -0700 From: Lydia Ng lng@insightful.com Subject: [Insight-developers] Problems with affine MI registration Paul, Bill: How many iterations are you running? In our experiments we have found that translation converges quite quickly but a large number of iterations (10-20k) is required for the rotation and scaling to converge. A multi-resolution approach is needed to increase the translation capture range. We found that multi-resolution made little difference to the capture range for rotation but the downsampling of the images helps with robustness. Conservatively, I would say the capture range for rotation is about 5-10 degrees. Higher if the images are the same modality. As discussed at various times at the tcon, there are also several parameters that can be tweaked: - Parzen window width Setting it to approx 0.3 seems to work if you normalized the image intensity to mean of 0 and variance of 1 - Scaling between translation and affine matrix/rotation parameters Values of order of 50-100 should work for 256x256 images. Since small changes in rotation/scaling can have a large effect we can only make small incremental changes at each iteration Hence the large number of iterations required. - Rotation/Scaling origin Where the origin is set makes a big difference to the convergence. Setting it to the center of mass or of the image should help. Currently this is achieved by setting the origin of the PhysicalImage. Alternatively, we could set this in the Transformation object? Comments? If none of the above helps, I could have a try if put your data on a web/ftp site somewhere. On the multiresolution front, most of the base classes for the multiresolution framework is in the repository. But there are still a couple of issues to sort out. Lydia > -----Original Message----- > From: insight-developers-admin@public.kitware.com > [mailto:insight-developers-admin@public.kitware.com]On Behalf Of > Lorensen, William E (CRD) > Sent: Thursday, June 21, 2001 4:56 AM > To: 'Paul Hughett'; insight-developers@public.kitware.com > Subject: RE: [Insight-developers] Problems with affine MI registration > > > I am also having some problems with the registration. I'm > using the Rigid/mi/gradient descent. I can > successfully register translated volumes, but cannot if they > require a rotation. > > Bill > > -----Original Message----- > From: Paul Hughett [mailto:hughett@mercur.uphs.upenn.edu] > Sent: Wednesday, June 20, 2001 3:44 PM > To: insight-developers@public.kitware.com > Subject: [Insight-developers] Problems with affine MI registration > > > > I'm gearing up to try the ITK image registration algorithms on real > data. I took the test program for affine/mutual information/gradient > descent registration from the repository and modified it to try some > variations in the actual transformation and optimization parameters. > Discovered that the algorithm seems to work reasonably well for > translations, as long as they aren't too large, but I can't get it to > work at all for either isotropic or anisotropic scaling; an expansion > of even a few percent causes the algorithm to fail. Neither > increasing the learning rate nor increasing the number of samples up > to 500 seems to help. > > Any suggestions? > > Paul Hughett > > > _______________________________________________ > Insight-developers mailing list > Insight-developers@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-developers > > _______________________________________________ > Insight-developers mailing list > Insight-developers@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-developers From dmsst59+@pitt.edu Thu, 21 Jun 2001 14:24:27 -0400 Date: Thu, 21 Jun 2001 14:24:27 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] cvs merging > It is dangerous to edit files outside of the checkedout copy and > #1 rule in CVS, never copy a file on top of a cvs file Ah ha... well that would definitely be the problem then. I'll have to mend my bad habits. Thanks for the heads up. -Damion- From hughett@mercur.uphs.upenn.edu Thu, 21 Jun 2001 16:01:36 -0400 Date: Thu, 21 Jun 2001 16:01:36 -0400 From: Paul Hughett hughett@mercur.uphs.upenn.edu Subject: [Insight-developers] Problems with affine MI registration Lydia Ng has written: > How many iterations are you running? I increased the number of iterations from 300 to 30000 at each of three learning rates; I still don't converge to the right answer but I am beginning to suspect that at least part of the problem is a poorly chosen test image. The test image is taken directly from the repository file itkImageToImageAffineMutualInformationGradientDescentRegistrationTest.cxx and consists of a gaussian centered in a 100 x 100 image. I've modified the program to dilate one axis by 1.414; the solution that the program returns is a dilation of 0.898035 on one axis and 1.26751 on the other. Notice that the ratio of these is almost exactly 1.41. Now recall that mutual information is supposed to be insensitive to intensity differences, as long as there is a systematic mapping of intensities between the two images. Now visualize the contours generated by a gaussian function and observe that the effect of isotropically enlarging the image is almost the same as shifting the levels at which the contours are drawn. That is, for a gaussian image, MI cannot distinguish between an isotropic magnification and an intensity mapping. Hence--as far as MI can tell--my anisotropic magnification is indistinguishable from a smaller anisotropic magnification, a compensating isotropic magnification, and an intensity mapping. I am going to modify my test program to read some real brain images-- probably midsagittal images already segmented into gray, white, CSF, and other--and see what kind of results I get on them. Paul Hughett From wlorens1@nycap.rr.com Thu, 21 Jun 2001 16:49:02 -0400 Date: Thu, 21 Jun 2001 16:49:02 -0400 From: Bill Lorensen wlorens1@nycap.rr.com Subject: [Insight-developers] Problems with affine MI registration Actually, I'm starting to make progress. Chalk the problems up to a number of things... 1) Anytime you use new software and things don't work, you assume there is a bug in the software. I went down this road several times and to date have not found a bug in the itk software. 2) Originally I tried to register full resolution images. Thanks to Lydia's comments a few weeks ago, I now start with 32x32x32 volumes down from 256x256x256. 3) I started by using the Affine registration for a rigid body problem. Now I'm using the rigid transformation MI code. 4) The Rigid MI code uses quaternions. I assumed the state vector was: angle axis position turns out it is axis angle position 5) The state vector reports the position in SCALED units. I was expecting my translation to be something like 10,-15,5 and I was getting something close to .1,-.15 and .05. I had set the TranslationScale to 100. So in fact I was getting reasonable numbers. 6) I have created a test volume that a resample with a know transformation and I'm attempting to recover that transformation. But, I was not specifying a StartingPosition that was close to the answer. For example, if I applied a 10 degree rotation about the X axis, I was still using the default start which is a rotation about an axis of length zero. To sum up, I'm getting closer to something I can use on a real problem. Bill At 11:11 AM 6/21/01 -0700, Lydia Ng wrote: >Paul, Bill: > >How many iterations are you running? > >In our experiments we have found that translation converges >quite quickly but a large number of iterations (10-20k) is >required for the rotation and scaling to converge. > >A multi-resolution approach is needed to increase the >translation capture range. >We found that multi-resolution made little difference >to the capture range for rotation but the downsampling of the >images helps with robustness. > >Conservatively, I would say the capture range for rotation >is about 5-10 degrees. Higher if the images are the same >modality. > >As discussed at various times at the tcon, >there are also several parameters that can be tweaked: > >- Parzen window width >Setting it to approx 0.3 seems to work if you normalized >the image intensity to mean of 0 and variance of 1 > >- Scaling between translation and affine matrix/rotation parameters >Values of order of 50-100 should work for 256x256 images. >Since small changes in rotation/scaling can have a large effect >we can only make small incremental changes at each iteration >Hence the large number of iterations required. > >- Rotation/Scaling origin >Where the origin is set makes a big difference to the convergence. >Setting it to the center of mass or of the image should help. > >Currently this is achieved by setting the origin of the PhysicalImage. >Alternatively, we could set this in the Transformation object? >Comments? > >If none of the above helps, I could have a try if put your >data on a web/ftp site somewhere. > >On the multiresolution front, most of the base >classes for the multiresolution framework is in the >repository. But there are still a couple of issues to sort >out. > >Lydia > > > > > -----Original Message----- > > From: insight-developers-admin@public.kitware.com > > [mailto:insight-developers-admin@public.kitware.com]On Behalf Of > > Lorensen, William E (CRD) > > Sent: Thursday, June 21, 2001 4:56 AM > > To: 'Paul Hughett'; insight-developers@public.kitware.com > > Subject: RE: [Insight-developers] Problems with affine MI registration > > > > > > I am also having some problems with the registration. I'm > > using the Rigid/mi/gradient descent. I can > > successfully register translated volumes, but cannot if they > > require a rotation. > > > > Bill > > > > -----Original Message----- > > From: Paul Hughett [mailto:hughett@mercur.uphs.upenn.edu] > > Sent: Wednesday, June 20, 2001 3:44 PM > > To: insight-developers@public.kitware.com > > Subject: [Insight-developers] Problems with affine MI registration > > > > > > > > I'm gearing up to try the ITK image registration algorithms on real > > data. I took the test program for affine/mutual information/gradient > > descent registration from the repository and modified it to try some > > variations in the actual transformation and optimization parameters. > > Discovered that the algorithm seems to work reasonably well for > > translations, as long as they aren't too large, but I can't get it to > > work at all for either isotropic or anisotropic scaling; an expansion > > of even a few percent causes the algorithm to fail. Neither > > increasing the learning rate nor increasing the number of samples up > > to 500 seems to help. > > > > Any suggestions? > > > > Paul Hughett > > > > > > _______________________________________________ > > Insight-developers mailing list > > Insight-developers@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-developers > > > > _______________________________________________ > > Insight-developers mailing list > > Insight-developers@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-developers > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From lng@insightful.com Thu, 21 Jun 2001 13:59:38 -0700 Date: Thu, 21 Jun 2001 13:59:38 -0700 From: Lydia Ng lng@insightful.com Subject: [Insight-developers] IRIX compile problem Hi All, I am getting a strange error in IRIX (see error below). It seems to be having a problem with the std:: namespace. This code has been in the repository for some time now and it used to compile. Any suggestions? Cheers, Lydia ---------------------------------------- Build Log line 87592 File: Code/Algorithms/itkFastMarchingImageFilter.h Line: 304 CVS and Doxygen access cc-1079 CC: ERROR File = /projects/quality/itkQuality/Insight/Code/Algorithms/itkFastMarchingImageFil ter.h, Line = 304 A type specifier is expected. void PrintSelf( std::ostream& os, Indent indent ) const; ^ From vikram@insightful.com Thu, 21 Jun 2001 15:59:55 -0700 Date: Thu, 21 Jun 2001 15:59:55 -0700 From: Vikram Chalana vikram@insightful.com Subject: [Insight-developers] doxygen update problems This is a multi-part message in MIME format. ------=_NextPart_000_000A_01C0FA6B.37CCD7B0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Does anyone know whether the script Update-Insight-Doxygen.sh is working when invoked from the Insight Private Home Page: http://public.kitware.com/Insight/HTMLPrivate/? I get the following message and it does not look like doxygen is updating the documentation: Running Doxygen to update documentation... Warning: Cannot open file /insight/SourceTree/Insight/Documentation/Doxygen/html/doxygen.gif for writing Could not open file /insight/SourceTree/Insight/Documentation/Doxygen/latex/Makefile for writing Completed Update Thanks, Vikram ------=_NextPart_000_000A_01C0FA6B.37CCD7B0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Does = anyone know=20 whether the script Update-Insight-Doxygen.sh is working when invoked = from the=20 Insight Private Home Page:
http://public.kit= ware.com/Insight/HTMLPrivate/?
 
I get = the following=20 message and it does not look like doxygen is updating the documentation: =
 
Running Doxygen to update = documentation...=20
Warning: Cannot open file=20 /insight/SourceTree/Insight/Documentation/Doxygen/html/doxygen.gif for=20 writing
Could not open file=20 /insight/SourceTree/Insight/Documentation/Doxygen/latex/Makefile for=20 writing
Completed Update
 
Thanks,
Vikram
------=_NextPart_000_000A_01C0FA6B.37CCD7B0-- From kitware@kitware.com Fri, 22 Jun 2001 08:23:53 -0400 Date: Fri, 22 Jun 2001 08:23:53 -0400 From: Kitware kitware@kitware.com Subject: [Insight-developers] Fwd: ITK FYI- I've received a couple of inquiries like this so far. I'd like to start building the ITK community by encouraging this sort of effort (contributing code, etc.). Does anyone have a problem with this? I think it's consistent with our year-end, public beta goal. Will >Sender: peter@newmail.DKFZ-Heidelberg.DE >Date: Thu, 21 Jun 2001 14:16:04 +0200 >From: Peter Hassenpflug >X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.16-SMP i686) >X-Accept-Language: en >To: kitware@kitware.com >Subject: ITK > >Dear Kitware-Team, > >is it true that you are working on an ITK (image processing toolkit: >segmentation, registration, ...) similar to VTK? If so, we can >contribute some segmentation algorithms we are using in our clinical >applications. Some details concerning ITK and possibilites for >contributing are very welcome. > >Best regards, > >Peter From whitaker@cs.utah.edu Fri, 22 Jun 2001 09:09:14 -0600 Date: Fri, 22 Jun 2001 09:09:14 -0600 From: Ross Whitaker whitaker@cs.utah.edu Subject: [Insight-developers] Fwd: ITK Yes, I agree. However, should we put together a set of guidelines for people. In other words, should we inform them that the toolkit is built around a common software infrastructure, which they can have and use, and is not intended to be merely a repository for segmentation-related code? Regards, Ross Kitware wrote: > FYI- I've received a couple of inquiries like this so far. I'd like to start building the ITK community by encouraging this sort of effort (contributing code, etc.). Does anyone have a problem with this? I think it's consistent with our year-end, public beta goal. > > Will > > >Sender: peter@newmail.DKFZ-Heidelberg.DE > >Date: Thu, 21 Jun 2001 14:16:04 +0200 > >From: Peter Hassenpflug > >X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.16-SMP i686) > >X-Accept-Language: en > >To: kitware@kitware.com > >Subject: ITK > > > >Dear Kitware-Team, > > > >is it true that you are working on an ITK (image processing toolkit: > >segmentation, registration, ...) similar to VTK? If so, we can > >contribute some segmentation algorithms we are using in our clinical > >applications. Some details concerning ITK and possibilites for > >contributing are very welcome. > > > >Best regards, > > > >Peter > > _______________________________________________ > Insight-developers mailing list > Insight-developers@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-developers -- Ross T. Whitaker, Assistant Professor 50 S. Central Campus Drive, Rm. 3190 University of Utah Salt Lake City, UT 84112-9205 voice: 801/587-9549, fax: 801/581-5843 web: www.cs.utah.edu/~whitaker From vikram@insightful.com Fri, 22 Jun 2001 09:27:59 -0700 Date: Fri, 22 Jun 2001 09:27:59 -0700 From: Vikram Chalana vikram@insightful.com Subject: [Insight-developers] Algorithm hierarchy This is a multi-part message in MIME format. ------=_NextPart_000_000F_01C0FAFD.A149EBA0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Based on Luis's initial effort, I have updated the hierarchy of algorithms for documentation purposes. You can view it at: http://public.kitware.com/Insight/Doxygen/html/modules.html Within each category, I have listed examples of algorithms that I think belong in that category. If this hierarchy seems acceptable to everyone, I can modify the documentation in the different algorithm/filter classes so that they show up in this hierarchy. Comments? Suggestions? Thanks, Vikram ------=_NextPart_000_000F_01C0FAFD.A149EBA0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Based = on Luis's=20 initial effort, I have updated the hierarchy of algorithms for = documentation purposes. You can view it at:
 
Within = each=20 category, I have listed examples of algorithms that I think belong in = that=20 category.
If = this hierarchy=20 seems acceptable to everyone, I can modify the documentation in the = different algorithm/filter classes so that they show up in this = hierarchy.=20
 
Comments?=20 Suggestions?
Thanks,
Vikram
 
------=_NextPart_000_000F_01C0FAFD.A149EBA0-- From millerjv@crd.ge.com Sat, 23 Jun 2001 21:31:46 -0400 Date: Sat, 23 Jun 2001 21:31:46 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] itk::ImageRegionIterator::operator--() At long last, I added operator--() to the ImageRegionIterator class. The main hurdle in adding operator--() was what would be the syntax for walking backwards through a region. Luis had proposed that we replace the Begin()/End() routines with GotoBegin()/GotoEnd() I hestitate to use GotoBegin()/GotoEnd() because it changes the meaning of what End is. In STL, iterators walk half-open intervals. begin() points to the first element, end() points one element past the end. To avoid confusion, I think we should stick with the half-open interval concept. Currently, our Begin() points to the beginning of a region and End() points one pixel past the end of the region. To walk forward through a region, we use a loop like: it = it.Begin(); for ( ; !it.IsAtEnd(); ++it) { // do something at each iterator position } To walk backward through a region, we should use a loop like: it = it.End(); do { --it; //do something at each iterator position } while (!it.IsAtBegin()); This last loop assumes the region is not empty. Another option is add "reverse iterators" to itk. A reverse iterator for a region would have Begin() return an iterator to the last pixel in the region and End() return an iterator one pixel before the first pixel in the region. operator++ and operator-- would have the reverse semantics. To walk a region backwards using reverse iterators, the code would look like: itk::ImageReverseRegionIterator, 3> > reverseIt(o3, region); reverseIt = reverseIt.Begin(); for (; !reverseIt.IsAtEnd(); ++reverseIt) { // do something at each iterator position. } From millerjv@crd.ge.com Sat, 23 Jun 2001 23:10:31 -0400 Date: Sat, 23 Jun 2001 23:10:31 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] itk::ImageRegionIterator::operator--() [ ReverseIterators] To complicate our lives further, I decided to add reverse iterators to itk to see how they look. Please take a look at their use to see if we would like to keep them in itk. I modified Testing/Code/Common/itkImageIteratorTest.cxx to use ImageRegionIterators and ImageRegionReverseIterators exercising both operator++ and operator-- I checked in: itkImageReverseIterator itkImageRegionReverseIterator (can't decide whether the latter should be ImageRegionReverseIterator or ImageReverseRegionIterator) Anyhow, ImageIterators are bidirectional (see earlier message) and ImageReverseIterators are bidirectional and they walk a region backwards. So ImageRegionReverseIterator::Begin() returns an iterator to the last pixel in the region and ImageRegionReverseIterator::End() returns an iterator that points to one pixel before the region. To walk a region forward, use an ImageRegionIterator like: itk::ImageRegionIterator, 3> > itt(o3, region); it = it.Begin(); for (; !it.IsAtEnd(); ++it) { // do something at each iterator position. } To walk are region backwards, use an ImageRegionReverseIterator like: itk::ImageRegionReverseIterator, 3> > reverseIt(o3, region); reverseIt = reverseIt.Begin(); for (; !reverseIt.IsAtEnd(); ++reverseIt) { // do something at each iterator position. } Notice the only difference in the above code is which iterator is created. I would suggest algorithms that scan forward through the entire region, then backward use a combination of Iterators and ReverseIterators. If an algorithm needs to revisit the previous pixel while scanning a region, both iterators have defined operator--. -----Original Message----- From: Miller, James V (CRD) To: 'insight-developers@public.kitware.com ' Sent: 6/23/2001 9:31 PM Subject: [Insight-developers] itk::ImageRegionIterator::operator--() At long last, I added operator--() to the ImageRegionIterator class. The main hurdle in adding operator--() was what would be the syntax for walking backwards through a region. Luis had proposed that we replace the Begin()/End() routines with GotoBegin()/GotoEnd() I hestitate to use GotoBegin()/GotoEnd() because it changes the meaning of what End is. In STL, iterators walk half-open intervals. begin() points to the first element, end() points one element past the end. To avoid confusion, I think we should stick with the half-open interval concept. Currently, our Begin() points to the beginning of a region and End() points one pixel past the end of the region. To walk forward through a region, we use a loop like: it = it.Begin(); for ( ; !it.IsAtEnd(); ++it) { // do something at each iterator position } To walk backward through a region, we should use a loop like: it = it.End(); do { --it; //do something at each iterator position } while (!it.IsAtBegin()); This last loop assumes the region is not empty. Another option is add "reverse iterators" to itk. A reverse iterator for a region would have Begin() return an iterator to the last pixel in the region and End() return an iterator one pixel before the first pixel in the region. operator++ and operator-- would have the reverse semantics. To walk a region backwards using reverse iterators, the code would look like: itk::ImageReverseRegionIterator, 3> > reverseIt(o3, region); reverseIt = reverseIt.Begin(); for (; !reverseIt.IsAtEnd(); ++reverseIt) { // do something at each iterator position. } _______________________________________________ Insight-developers mailing list Insight-developers@public.kitware.com http://public.kitware.com/mailman/listinfo/insight-developers From millerjv@crd.ge.com Mon, 25 Jun 2001 09:46:13 -0400 Date: Mon, 25 Jun 2001 09:46:13 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] Transform vs RegistrationTransform What is the difference between a Transform and a RegistrationTransform? Also, several of the RegistrationTransfroms have an incorrect "Superclass" typedef and incorrect TypeMacro. Jim Miller _____________________________________ Visualization & Computer Vision GE Corporate Research & Development Bldg. KW, Room C218B P.O. Box 8, Schenectady NY 12301 millerjv@crd.ge.com (518) 387-4005, Dial Comm: 8*833-4005, Cell: (518) 505-7065, Fax: (518) 387-6981 <> begin 600 Miller, James V (CRD).vcf M0D5'24XZ5D-!4D0-"E9%4E-)3TXZ,BXQ#0I..DUI;&QE3M.97<@66]R:SLQ,C,P,3M54T$- M"DQ!0D5,.U=/4DL[14Y#3T1)3D<]455/5$5$+5!224Y404),13I+5RU#,C$X M0CTP1#TP05`N3RX@0F]X(#@],$0],$%38VAE;F5C=&%D>2P@3F5W(%EO What is the difference between a Transform and a > RegistrationTransform? RegistrationTransform classes are adpators for the underlying Transform classes which actually does the work. Transform takes in parameters in a more natural form. While RegistrationTransform takes a single combined vector. This provides an uniform interface allowing one to plugin different transforms in the registration framework. For example, AffineTransform can takes as parameters: Matrix + Offset, Scaling factors, rotation angles, shear parameters While AffineRegistrationParameter takes as parameter a single vector compose of all the components of the matrix and the offset. Lydia From chenting@graphics.cis.upenn.edu Mon, 25 Jun 2001 18:32:06 -0500 Date: Mon, 25 Jun 2001 18:32:06 -0500 From: Ting Chen chenting@graphics.cis.upenn.edu Subject: [Insight-developers] cmake problems This is a multi-part message in MIME format. ------=_NextPart_000_0027_01C0FDA5.22FB0040 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I did not check out new version of itk for a while, and when I did it = today, i found the cmake is move out of the tree. and when I ran = cmakesetup.exe, it kept giving out error messages. can anyone explain to = me how to update the itk now? thanks a lot! ting=20 ------=_NextPart_000_0027_01C0FDA5.22FB0040 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
I did not check out new version of = itk for a=20 while, and when I did it today, i found the cmake is move out of the = tree. and=20 when I ran cmakesetup.exe, it kept giving out error messages. can anyone = explain=20 to me how to update the itk now?
thanks a lot!
ting 
------=_NextPart_000_0027_01C0FDA5.22FB0040-- From wlorens1@nycap.rr.com Mon, 25 Jun 2001 20:02:04 -0400 Date: Mon, 25 Jun 2001 20:02:04 -0400 From: Bill Lorensen wlorens1@nycap.rr.com Subject: [Insight-developers] cmake problems http://public.kitware.com/Insight/Web/HTML/InsightStart.pdf At 06:32 PM 6/25/01 -0500, Ting Chen wrote: >I did not check out new version of itk for a while, and when I did it today, i found the cmake is move out of the tree. and when I ran cmakesetup.exe, it kept giving out error messages. can anyone explain to me how to update the itk now? >thanks a lot! >ting From millerjv@crd.ge.com Tue, 26 Jun 2001 07:46:54 -0400 Date: Tue, 26 Jun 2001 07:46:54 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] itkFastRandomUnitNormalVariateGenerator I noticed a new class called itkFastRandomUnitNormalVariateGenerator was added to Insight last night. This names a little redundant and probably confusing. My first assumption was that it generated random unit length normal vectors (3-vectors). Could this class be called itkNormalVariateGenerator? It appears as though the term "unit" here is meant to refer to a standardized distribution (mean zero and unit variance). This class could easily support any mean/variance, since that simply entails a scale and a shift to the generated value. Jim Miller _____________________________________ Visualization & Computer Vision GE Corporate Research & Development Bldg. KW, Room C218B P.O. Box 8, Schenectady NY 12301 millerjv@crd.ge.com (518) 387-4005, Dial Comm: 8*833-4005, Cell: (518) 505-7065, Fax: (518) 387-6981 <> begin 600 Miller, James V (CRD).vcf M0D5'24XZ5D-!4D0-"E9%4E-)3TXZ,BXQ#0I..DUI;&QE3M.97<@66]R:SLQ,C,P,3M54T$- M"DQ!0D5,.U=/4DL[14Y#3T1)3D<]455/5$5$+5!224Y404),13I+5RU#,C$X M0CTP1#TP05`N3RX@0F]X(#@],$0],$%38VAE;F5C=&%D>2P@3F5W(%EOHi. > >When I tried to compile the CMakeSetup project, I got >an error message says there is no cmake.mak. So, I >updated CMake several times using -dPA option. But >still there is no cmake.mak file. > >Any idea? > >Have a nice day, > >-------------------Configuration: cmake - Win32 >Debug-------------------- >Microsoft (R) Program Maintenance Utility Version >6.00.8168.0 >Copyright (C) Microsoft Corp 1988-1998. All rights >reserved. >NMAKE : fatal error U1052: file 'cmake.mak' not found >Stop. >Error executing NMAKE. > >cmake.exe - 1 error(s), 0 warning(s) > >===== >Jisung Kim >bahrahm@yahoo.com >106 Mason Farm Rd. >129 Radiology Research Lab., CB# 7515 >Univ. of North Carolina at Chapel Hill >Chapel Hill, NC 27599-7515 > >__________________________________________________ >Do You Yahoo!? >Get personalized email addresses from Yahoo! Mail >http://personal.mail.yahoo.com/ > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From bahrahm@yahoo.com Tue, 26 Jun 2001 09:56:28 -0700 (PDT) Date: Tue, 26 Jun 2001 09:56:28 -0700 (PDT) From: Jisung Kim bahrahm@yahoo.com Subject: [Insight-developers] CMakeSetup compile problem I loaded the dsw file and tried to build from the GUI. But, I still got the same error message. --- Bill Hoffman wrote: > There is no nmake file, there is a project file. > Load the dsw file into msdev and build from the GUI. > > -Bill > > > At 08:43 AM 6/26/2001 -0700, Jisung Kim wrote: > >Hi. > > > >When I tried to compile the CMakeSetup project, I > got > >an error message says there is no cmake.mak. So, I > >updated CMake several times using -dPA option. But > >still there is no cmake.mak file. > > > >Any idea? > > > >Have a nice day, > > > >-------------------Configuration: cmake - Win32 > >Debug-------------------- > >Microsoft (R) Program Maintenance Utility Version > >6.00.8168.0 > >Copyright (C) Microsoft Corp 1988-1998. All rights > >reserved. > >NMAKE : fatal error U1052: file 'cmake.mak' not > found > >Stop. > >Error executing NMAKE. > > > >cmake.exe - 1 error(s), 0 warning(s) > > > >===== > >Jisung Kim > >bahrahm@yahoo.com > >106 Mason Farm Rd. > >129 Radiology Research Lab., CB# 7515 > >Univ. of North Carolina at Chapel Hill > >Chapel Hill, NC 27599-7515 > > > >__________________________________________________ > >Do You Yahoo!? > >Get personalized email addresses from Yahoo! Mail > >http://personal.mail.yahoo.com/ > > > >_______________________________________________ > >Insight-developers mailing list > >Insight-developers@public.kitware.com > >http://public.kitware.com/mailman/listinfo/insight-developers > > > > _______________________________________________ > Insight-developers mailing list > Insight-developers@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-developers ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do You Yahoo!? Get personalized email addresses from Yahoo! Mail http://personal.mail.yahoo.com/ From dmsst59+@pitt.edu Tue, 26 Jun 2001 13:03:13 -0400 Date: Tue, 26 Jun 2001 13:03:13 -0400 From: Damion Shelton dmsst59+@pitt.edu Subject: [Insight-developers] compile erros under linux Hi... I'm in the process of cleaning up some errors that appeared on the dashboard. The majority of them were from missing includes, but there are several of the following type: The line of code: TInputImage::SizeType size = inputPtr->GetLargestPossibleRegion().GetSize(); ...generates the error: member function `void itk::BinomialBlurImageFilter::GenerateData()': /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkDifferenceO fGaussiansGradientImageFilter.txx:34: parse error before `=' token In file included from /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkGradientToM agnitudeImageFilter.h:135, from /home/kingb/Programs/ABuild/Nightly/Insight/Testing/Code/BasicFilters/itkBas icFiltersHeaderTest.cxx:44: /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkGradientToM agnitudeImageFilter.txx: In member function `void itk::GradientToMagnitudeImageFilter::GenerateData()': TInputImage has the typename flag in the function declaration, so what's the problem? This compiles fine under Windows, and on most of the non-linux Unix variants (specifically, this error is on the kitware linux machine). Any suggestions would be much appreciated. -Damion- From cates@cs.utah.edu Tue, 26 Jun 2001 11:06:59 -0600 (MDT) Date: Tue, 26 Jun 2001 11:06:59 -0600 (MDT) From: Joshua Cates cates@cs.utah.edu Subject: [Insight-developers] compile erros under linux Hi, If TInputImage is your template parameter you'll probably need: typename TInputImage::SizeType size ... Josh. ______________________________ Josh Cates School of Computer Science University of Utah On Tue, 26 Jun 2001, Damion Shelton wrote: > Hi... > > I'm in the process of cleaning up some errors that appeared on the > dashboard. The majority of them were from missing includes, but there are > several of the following type: > > The line of code: > TInputImage::SizeType size = inputPtr->GetLargestPossibleRegion().GetSize(); > > ...generates the error: > > member function `void itk::BinomialBlurImageFilter /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkBinomialBlu > rImageFilter.txx:41: parse > In file included from > /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkDifferenceO > fGaussiansGradientImageFilter.h:152, > /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkDifferenceO > fGaussiansGradientImageFilter.txx: In > itk::DifferenceOfGaussiansGradientImageFilter TVectorType>::GenerateData()': > /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkDifferenceO > fGaussiansGradientImageFilter.txx:34: parse > error before `=' token > In file included from > /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkGradientToM > agnitudeImageFilter.h:135, > from > /home/kingb/Programs/ABuild/Nightly/Insight/Testing/Code/BasicFilters/itkBas > icFiltersHeaderTest.cxx:44: > /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkGradientToM > agnitudeImageFilter.txx: In > member function `void itk::GradientToMagnitudeImageFilter TOutputImage>::GenerateData()': > > TInputImage has the typename flag in the function declaration, so what's the > problem? This compiles fine under Windows, and on most of the non-linux Unix > variants (specifically, this error is on the kitware linux machine). > > Any suggestions would be much appreciated. > > -Damion- > > > _______________________________________________ > Insight-developers mailing list > Insight-developers@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-developers > From bahrahm@yahoo.com Tue, 26 Jun 2001 10:24:45 -0700 (PDT) Date: Tue, 26 Jun 2001 10:24:45 -0700 (PDT) From: Jisung Kim bahrahm@yahoo.com Subject: [Insight-developers] compile erros under linux The following statement came from the ANIS C++ "December 1996 Working Paper" "There is no semantic difference between class and typename in a template-parameter." If I understand it correctly, even though you used the typename at the template parameter declaration, you should you typename every time you use types from the template paramter (typename T::AVariableType) --- Damion Shelton wrote: > Hi... > > I'm in the process of cleaning up some errors that > appeared on the > dashboard. The majority of them were from missing > includes, but there are > several of the following type: > > The line of code: > TInputImage::SizeType size = > inputPtr->GetLargestPossibleRegion().GetSize(); > > ...generates the error: > > member function `void > itk::BinomialBlurImageFilter /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkBinomialBlu > rImageFilter.txx:41: parse > In file included from > /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkDifferenceO > fGaussiansGradientImageFilter.h:152, > /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkDifferenceO > fGaussiansGradientImageFilter.txx: In > > itk::DifferenceOfGaussiansGradientImageFilter TScalarType, > TVectorType>::GenerateData()': > /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkDifferenceO > fGaussiansGradientImageFilter.txx:34: parse > error before `=' token > In file included from > /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkGradientToM > agnitudeImageFilter.h:135, > from > /home/kingb/Programs/ABuild/Nightly/Insight/Testing/Code/BasicFilters/itkBas > icFiltersHeaderTest.cxx:44: > /home/kingb/Programs/ABuild/Nightly/Insight/Code/BasicFilters/itkGradientToM > agnitudeImageFilter.txx: In > member function `void > itk::GradientToMagnitudeImageFilter TOutputImage>::GenerateData()': > > TInputImage has the typename flag in the function > declaration, so what's the > problem? This compiles fine under Windows, and on > most of the non-linux Unix > variants (specifically, this error is on the kitware > linux machine). > > Any suggestions would be much appreciated. > > -Damion- > > > _______________________________________________ > Insight-developers mailing list > Insight-developers@public.kitware.com > http://public.kitware.com/mailman/listinfo/insight-developers ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do You Yahoo!? Get personalized email addresses from Yahoo! Mail http://personal.mail.yahoo.com/ From bill.hoffman@kitware.com Tue, 26 Jun 2001 13:22:35 -0400 Date: Tue, 26 Jun 2001 13:22:35 -0400 From: Bill Hoffman bill.hoffman@kitware.com Subject: [Insight-developers] CMakeSetup compile problem If you are running it from the GUI, I don't see how you would get an error executing NMAKE? 1. Load the CMakeSetup.dsw 2. Select CMakeSetup as the active project. 3. Build -> Build CMakeSetup.exe What if any errors do you get at any point in the above process? -Bill At 09:56 AM 6/26/2001 -0700, Jisung Kim wrote: >I loaded the dsw file and tried to build from the GUI. >But, I still got the same error message. > > >> >-------------------Configuration: cmake - Win32 >> >Debug-------------------- >> >Microsoft (R) Program Maintenance Utility Version >> >6.00.8168.0 >> >Copyright (C) Microsoft Corp 1988-1998. All rights >> >reserved. >> >NMAKE : fatal error U1052: file 'cmake.mak' not >> found >> >Stop. >> >Error executing NMAKE. >> > >> >cmake.exe - 1 error(s), 0 warning(s) >> > >> >===== >> >Jisung Kim >> >bahrahm@yahoo.com >> >106 Mason Farm Rd. >> >129 Radiology Research Lab., CB# 7515 >> >Univ. of North Carolina at Chapel Hill >> >Chapel Hill, NC 27599-7515 >> > >> >__________________________________________________ >> >Do You Yahoo!? >> >Get personalized email addresses from Yahoo! Mail >> >http://personal.mail.yahoo.com/ >> > >> >_______________________________________________ >> >Insight-developers mailing list >> >Insight-developers@public.kitware.com >> >>http://public.kitware.com/mailman/listinfo/insight-developers >> >> >> >> _______________________________________________ >> Insight-developers mailing list >> Insight-developers@public.kitware.com >> >http://public.kitware.com/mailman/listinfo/insight-developers > > >===== >Jisung Kim >bahrahm@yahoo.com >106 Mason Farm Rd. >129 Radiology Research Lab., CB# 7515 >Univ. of North Carolina at Chapel Hill >Chapel Hill, NC 27599-7515 > >__________________________________________________ >Do You Yahoo!? >Get personalized email addresses from Yahoo! Mail >http://personal.mail.yahoo.com/ > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From bahrahm@yahoo.com Tue, 26 Jun 2001 11:26:16 -0700 (PDT) Date: Tue, 26 Jun 2001 11:26:16 -0700 (PDT) From: Jisung Kim bahrahm@yahoo.com Subject: [Insight-developers] CMakeSetup compile problem Thanks for your help. I think I found what caused the problem. When I loaded the CMakeSetup.dsw file, the Dev. Studio asked me if I want it to create a wrapping project file for the cmake.dsp file (since the Dev. Studio recognized the dsp file is not generated by Dev. Studio) and I clicked yes. This time I chose no and the error message gone. I was wondering why the Dev. Studio can't recognize the cmake.dsp file correctly. As a simple test, I opened the cmake.dsp file using emacs and changed the coding system from undecided-unix to undecided-dos and saved it. After that, the Dev. Studio recognizes the cmake.dsp correctly. I think the problem was the linefeed character or new line character. --- Bill Hoffman wrote: > If you are running it from the GUI, I don't see how > you would get > an error executing NMAKE? > > 1. Load the CMakeSetup.dsw > 2. Select CMakeSetup as the active project. > 3. Build -> Build CMakeSetup.exe > > What if any errors do you get at any point in the > above process? > > -Bill > > At 09:56 AM 6/26/2001 -0700, Jisung Kim wrote: > >I loaded the dsw file and tried to build from the > GUI. > >But, I still got the same error message. > > > > > >> >-------------------Configuration: cmake - Win32 > >> >Debug-------------------- > >> >Microsoft (R) Program Maintenance Utility > Version > >> >6.00.8168.0 > >> >Copyright (C) Microsoft Corp 1988-1998. All > rights > >> >reserved. > >> >NMAKE : fatal error U1052: file 'cmake.mak' not > >> found > >> >Stop. > >> >Error executing NMAKE. > >> > > >> >cmake.exe - 1 error(s), 0 warning(s) > >> > > >> >===== > >> >Jisung Kim > >> >bahrahm@yahoo.com > >> >106 Mason Farm Rd. > >> >129 Radiology Research Lab., CB# 7515 > >> >Univ. of North Carolina at Chapel Hill > >> >Chapel Hill, NC 27599-7515 > >> > > >> > >__________________________________________________ > >> >Do You Yahoo!? > >> >Get personalized email addresses from Yahoo! > Mail > >> >http://personal.mail.yahoo.com/ > >> > > >> >_______________________________________________ > >> >Insight-developers mailing list > >> >Insight-developers@public.kitware.com > >> > >>http://public.kitware.com/mailman/listinfo/insight-developers > >> > >> > >> > >> _______________________________________________ > >> Insight-developers mailing list > >> Insight-developers@public.kitware.com > >> > >http://public.kitware.com/mailman/listinfo/insight-developers > > > > > >===== > >Jisung Kim > >bahrahm@yahoo.com > >106 Mason Farm Rd. > >129 Radiology Research Lab., CB# 7515 > >Univ. of North Carolina at Chapel Hill > >Chapel Hill, NC 27599-7515 > > > >__________________________________________________ > >Do You Yahoo!? > >Get personalized email addresses from Yahoo! Mail > >http://personal.mail.yahoo.com/ > > > >_______________________________________________ > >Insight-developers mailing list > >Insight-developers@public.kitware.com > >http://public.kitware.com/mailman/listinfo/insight-developers > > ===== Jisung Kim bahrahm@yahoo.com 106 Mason Farm Rd. 129 Radiology Research Lab., CB# 7515 Univ. of North Carolina at Chapel Hill Chapel Hill, NC 27599-7515 __________________________________________________ Do You Yahoo!? Get personalized email addresses from Yahoo! Mail http://personal.mail.yahoo.com/ From bill.hoffman@kitware.com Tue, 26 Jun 2001 14:55:36 -0400 Date: Tue, 26 Jun 2001 14:55:36 -0400 From: Bill Hoffman bill.hoffman@kitware.com Subject: [Insight-developers] CMakeSetup compile problem This is a problem with cygwin. The default installation sets you up in unix linefeed mode. This means cvs checks out text files in unix mode. The dsp and dsw files are text files and get messed up. I will change them to binary. When installing cygwin, people should select dos mode line feeds. -Bill At 11:26 AM 6/26/2001 -0700, Jisung Kim wrote: >Thanks for your help. > >I think I found what caused the problem. >When I loaded the CMakeSetup.dsw file, the Dev. Studio >asked me if I want it to create a wrapping project >file >for the cmake.dsp file (since the Dev. Studio >recognized the dsp file is not generated by Dev. >Studio) and I clicked yes. > >This time I chose no and the error message gone. >I was wondering why the Dev. Studio can't recognize >the cmake.dsp file correctly. As a simple test, I >opened the cmake.dsp file using emacs and changed the >coding system from undecided-unix to undecided-dos and >saved it. After that, the Dev. Studio recognizes the >cmake.dsp correctly. I think the problem was the >linefeed character or new line character. > > >--- Bill Hoffman wrote: >> If you are running it from the GUI, I don't see how >> you would get >> an error executing NMAKE? >> >> 1. Load the CMakeSetup.dsw >> 2. Select CMakeSetup as the active project. >> 3. Build -> Build CMakeSetup.exe >> >> What if any errors do you get at any point in the >> above process? >> >> -Bill >> >> At 09:56 AM 6/26/2001 -0700, Jisung Kim wrote: >> >I loaded the dsw file and tried to build from the >> GUI. >> >But, I still got the same error message. >> > >> > >> >> >-------------------Configuration: cmake - Win32 >> >> >Debug-------------------- >> >> >Microsoft (R) Program Maintenance Utility >> Version >> >> >6.00.8168.0 >> >> >Copyright (C) Microsoft Corp 1988-1998. All >> rights >> >> >reserved. >> >> >NMAKE : fatal error U1052: file 'cmake.mak' not >> >> found >> >> >Stop. >> >> >Error executing NMAKE. >> >> > >> >> >cmake.exe - 1 error(s), 0 warning(s) >> >> > >> >> >===== >> >> >Jisung Kim >> >> >bahrahm@yahoo.com >> >> >106 Mason Farm Rd. >> >> >129 Radiology Research Lab., CB# 7515 >> >> >Univ. of North Carolina at Chapel Hill >> >> >Chapel Hill, NC 27599-7515 >> >> > >> >> >> >__________________________________________________ >> >> >Do You Yahoo!? >> >> >Get personalized email addresses from Yahoo! >> Mail >> >> >http://personal.mail.yahoo.com/ >> >> > >> >> >_______________________________________________ >> >> >Insight-developers mailing list >> >> >Insight-developers@public.kitware.com >> >> >> >>>http://public.kitware.com/mailman/listinfo/insight-developers >> >> >> >> >> >> >> >> _______________________________________________ >> >> Insight-developers mailing list >> >> Insight-developers@public.kitware.com >> >> >> >>http://public.kitware.com/mailman/listinfo/insight-developers >> > >> > >> >===== >> >Jisung Kim >> >bahrahm@yahoo.com >> >106 Mason Farm Rd. >> >129 Radiology Research Lab., CB# 7515 >> >Univ. of North Carolina at Chapel Hill >> >Chapel Hill, NC 27599-7515 >> > >> >__________________________________________________ >> >Do You Yahoo!? >> >Get personalized email addresses from Yahoo! Mail >> >http://personal.mail.yahoo.com/ >> > >> >_______________________________________________ >> >Insight-developers mailing list >> >Insight-developers@public.kitware.com >> >>http://public.kitware.com/mailman/listinfo/insight-developers >> >> > > >===== >Jisung Kim >bahrahm@yahoo.com >106 Mason Farm Rd. >129 Radiology Research Lab., CB# 7515 >Univ. of North Carolina at Chapel Hill >Chapel Hill, NC 27599-7515 > >__________________________________________________ >Do You Yahoo!? >Get personalized email addresses from Yahoo! Mail >http://personal.mail.yahoo.com/ > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From cacst11+@pitt.edu Tue, 26 Jun 2001 17:15:45 -0400 Date: Tue, 26 Jun 2001 17:15:45 -0400 From: C. Aaron Cois cacst11+@pitt.edu Subject: [Insight-developers] Delaunay Triangulation This is a multi-part message in MIME format. ------=_NextPart_000_0080_01C0FE63.A3234930 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I know there is a Voronoi 2D Diagram in itk, but I was wondering if = anyone was implementing a 2D Delaunay Triangulization? Seems like it = would be a useful tool. = Aaron ------=_NextPart_000_0080_01C0FE63.A3234930 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
I know there is a Voronoi 2D Diagram in = itk, but I=20 was wondering if anyone was implementing a 2D Delaunay = Triangulization? =20 Seems like it would be a useful tool.
 
       =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20             =    =20 Aaron
------=_NextPart_000_0080_01C0FE63.A3234930-- From will.schroeder@kitware.com Wed, 27 Jun 2001 09:52:03 -0400 Date: Wed, 27 Jun 2001 09:52:03 -0400 From: Will Schroeder will.schroeder@kitware.com Subject: [Insight-developers] itkMacro now has non-empty Warning, Error, and GenericOutput macros Hi Folks- I checked in itkMacro.h....it now has non-empty Warning, Error, and GenericOutput macros. Let me know if there are any problems. Will From lng@insightful.com Wed, 27 Jun 2001 09:52:02 -0700 Date: Wed, 27 Jun 2001 09:52:02 -0700 From: Lydia Ng lng@insightful.com Subject: [Insight-developers] problem with making CMake on Cygwin FYI, Yesterday was the first time I tried to built CMake on Cygwin since it has moved out of the Insight tree. I followed the procedure for UNIX according to http://public.kitware.com/CMake/HTML/Install.html It fails at: $ make install make: *** No rule to make target `install'. Stop. Any ideas? Lydia From bill.hoffman@kitware.com Wed, 27 Jun 2001 13:25:38 -0400 Date: Wed, 27 Jun 2001 13:25:38 -0400 From: Bill Hoffman bill.hoffman@kitware.com Subject: [Insight-developers] problem with making CMake on Cygwin For now, just don't install it. Just build it, and run it from the build tree. It will be in the Source directory of the build tree. -Bill At 09:52 AM 6/27/2001 -0700, Lydia Ng wrote: >FYI, > >Yesterday was the first time I tried to built CMake >on Cygwin since it has moved out of the Insight tree. > >I followed the procedure for UNIX according to >http://public.kitware.com/CMake/HTML/Install.html > >It fails at: > >$ make install >make: *** No rule to make target `install'. Stop. > > >Any ideas? > > >Lydia > > > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From lng@insightful.com Wed, 27 Jun 2001 11:03:19 -0700 Date: Wed, 27 Jun 2001 11:03:19 -0700 From: Lydia Ng lng@insightful.com Subject: [Insight-developers] FW: template depth limit resending this - not sure if my company email is down or if the mailing-list --------------------------------------- A few days ago I checked in multi resolution version of the rigid mutual information registration. This new class has manage to exceed the gcc default template depth limit of 17. This is why the associated test is failing to compile on Linux and SunOS platforms. The template depth limit can be increase to NN via flag -ftemplate-depth-NN I have experimented with this on Cygwin by setting the CMAKE_CXX_FLAGS in the CMakeCache.txt CMAKE_CXX_FLAGS:STRING=-g -O2 -ftemplate-depth-20 I re-ran CMake and the test compiled and passed. So: 1) Should we increase this depth by default for ITK by setting the flag in some configuration file. 2) If so, what value should we increase it to. Also what is the impact in increasing it. Cheers, Lydia From lng@insightful.com Wed, 27 Jun 2001 10:21:49 -0700 Date: Wed, 27 Jun 2001 10:21:49 -0700 From: Lydia Ng lng@insightful.com Subject: [Insight-developers] template depth limit A few days ago I checked in multi resolution version of the rigid mutual information registration. This new class has manage to exceed the gcc default template depth limit of 17. This is why the associated test is failing to compile on Linux and SunOS platforms. The template depth limit can be increase to NN via flag -ftemplate-depth-NN I have experimented with this on Cygwin by setting the CMAKE_CXX_FLAGS in the CMakeCache.txt CMAKE_CXX_FLAGS:STRING=-g -O2 -ftemplate-depth-20 I re-ran CMake and the test compiled and passed. So: 1) Should we increase this depth by default for ITK by setting the flag in some configuration file. 2) If so, what value should we increase it to. Also what is the impact in increasing it. Cheers, Lydia From lng@insightful.com Wed, 27 Jun 2001 09:56:15 -0700 Date: Wed, 27 Jun 2001 09:56:15 -0700 From: Lydia Ng lng@insightful.com Subject: [Insight-developers] Insight make fails on Cygwin Hi All, I get the following error when I try to do a make on Cygwin (see error messages below) I think gcc didn't like "(" in the "-DXMLPARSEAPI=__declspec(dllexport)" flag. Any ideas? Lydia gcc -g -O2 -I/cygdrive/e/Users/lng/Insight/Insight/Utilities/Cable/Expat - I/cy gdrive/e/Users/lng/Insight/Insight-Cygwin -I/cygdrive/e/Users/lng/Insight/In sigh t/Code/Numerics -I/cygdrive/e/Users/lng/Insight/Insight/Code/Common -I/cygdr ive/ e/Users/lng/Insight/Insight-Cygwin/Code/Numerics/vxl -I/cygdrive/e/Users/lng /Ins ight/Insight/Code/Numerics/vxl -I/cygdrive/e/Users/lng/Insight/Insight-Cygwi n/Co de/Numerics/vxl/vcl -I/cygdrive/e/Users/lng/Insight/Insight/Code/Numerics/vx l/vc l -I/cygdrive/e/Users/lng/Insight/Insight/Utilities/Cable/CxxTypes -I/cygdri ve/e /Users/lng/Insight/Insight/Utilities/Cable/Expat/xmlparse -I/cygdrive/e/User s/ln g/Insight/Insight/Utilities/Cable/Expat/xmlparse -I/cygdrive/e/Users/lng/Ins ight /Insight/Utilities/Cable/Expat/xmltok -I/cygdrive/e/Users/lng/Insight/Insigh t/Ut ilities/Cable/Expat/xmlwf -DXMLPARSEAPI=__declspec(dllexport) -c /cygdrive/e/U sers/lng/Insight/Insight/Utilities/Cable/Expat/xmlparse/xmlparse.c -o xmlparse/x mlparse.o Syntax error: "(" unexpected make[3]: *** [xmlparse/xmlparse.o] Error 2 make[3]: Leaving directory `/cygdrive/e/Users/lng/Insight/Insight-Cygwin/Utiliti es/Cable/Expat' make[2]: *** [build_Expat] Error 2 make[2]: Leaving directory `/cygdrive/e/Users/lng/Insight/Insight-Cygwin/Utiliti es/Cable' make[1]: *** [build_Cable] Error 2 make[1]: Leaving directory `/cygdrive/e/Users/lng/Insight/Insight-Cygwin/Utiliti es' make: *** [build_Utilities] Error 2 From brad.king@kitware.com Wed, 27 Jun 2001 16:43:31 -0400 (EDT) Date: Wed, 27 Jun 2001 16:43:31 -0400 (EDT) From: Brad King brad.king@kitware.com Subject: [Insight-developers] Insight make fails on Cygwin > I get the following error when I try to do a make > on Cygwin (see error messages below) > > I think gcc didn't like "(" in the "-DXMLPARSEAPI=__declspec(dllexport)" > flag. > > Any ideas? I have been getting Cable ready to build with shared libraries. This is a bug in the Expat CMakeLists file when building static libraries. I have just checked in a fix. -Brad From bill.hoffman@kitware.com Wed, 27 Jun 2001 17:01:27 -0400 Date: Wed, 27 Jun 2001 17:01:27 -0400 From: Bill Hoffman bill.hoffman@kitware.com Subject: [Insight-developers] problem with making CMake on Cygwin CMake should install on Cygwin should install now. ./configure make make install At 01:25 PM 6/27/2001 -0400, Bill Hoffman wrote: >For now, just don't install it. Just build it, and run it from the build tree. > > >It will be in the Source directory of the build tree. > >-Bill > > >At 09:52 AM 6/27/2001 -0700, Lydia Ng wrote: >>FYI, >> >>Yesterday was the first time I tried to built CMake >>on Cygwin since it has moved out of the Insight tree. >> >>I followed the procedure for UNIX according to >>http://public.kitware.com/CMake/HTML/Install.html >> >>It fails at: >> >>$ make install >>make: *** No rule to make target `install'. Stop. >> >> >>Any ideas? >> >> >>Lydia >> >> >> >>_______________________________________________ >>Insight-developers mailing list >>Insight-developers@public.kitware.com >>http://public.kitware.com/mailman/listinfo/insight-developers > > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From whitaker@cs.utah.edu Thu, 28 Jun 2001 09:14:13 -0600 Date: Thu, 28 Jun 2001 09:14:13 -0600 From: Ross Whitaker whitaker@cs.utah.edu Subject: [Insight-developers] template depth limit Not to sound "anti-template" (even though I have never used them, right Bill!) --- But should we reconsider an architecture which relies on such depth of templates? It makes me a little uncomfortable. Does anyone see a problem with this? Regards, Ross Lydia Ng wrote: > A few days ago I checked in multi resolution version > of the rigid mutual information registration. > > This new class has manage to exceed the gcc default > template depth limit of 17. This is why the associated > test is failing to compile on Linux and SunOS platforms. > > The template depth limit can be increase to NN via flag > -ftemplate-depth-NN > > I have experimented with this on Cygwin by setting > the CMAKE_CXX_FLAGS in the CMakeCache.txt > > CMAKE_CXX_FLAGS:STRING=-g -O2 -ftemplate-depth-20 > > I re-ran CMake and the test compiled and passed. > > So: > > 1) Should we increase this depth by default for ITK > by setting the flag in some configuration file. > > 2) If so, what value should we increase it to. > Also what is the impact in increasing it. > > Cheers, > Lydia > -- Ross T. Whitaker, Assistant Professor 50 S. Central Campus Drive, Rm. 3190 University of Utah Salt Lake City, UT 84112-9205 voice: 801/587-9549, fax: 801/581-5843 web: www.cs.utah.edu/~whitaker From ibanez@choroid.cs.unc.edu Thu, 28 Jun 2001 11:25:07 -0400 (EDT) Date: Thu, 28 Jun 2001 11:25:07 -0400 (EDT) From: Luis Ibanez ibanez@choroid.cs.unc.edu Subject: [Insight-developers] template depth limit As long as it is possible to get it compiling in all our platforms it seems to be an acceptable solution, in the same way that we have incresed the limit for the stack in VC++ for example; but if some of the compilers has a definite limit in depth we'll have to look for another implementation. On the other hand, it is certain that we are paying a high price in compilation time a cause of the templates and the need for them is less clear at the high level of the hierarchies. It is always healthy to reconsider the design. Luis ----- On Thu, 28 Jun 2001, Ross Whitaker wrote: > > But should we reconsider an architecture which relies on such depth of > templates? It makes me a little uncomfortable. Does anyone see a > problem with this? > > Regards, > > Ross > From brad.king@kitware.com Thu, 28 Jun 2001 11:27:57 -0400 (EDT) Date: Thu, 28 Jun 2001 11:27:57 -0400 (EDT) From: Brad King brad.king@kitware.com Subject: [Insight-developers] template depth limit > Not to sound "anti-template" (even though I have never used them, right > Bill!) --- > > But should we reconsider an architecture which relies on such depth of > templates? It makes me a little uncomfortable. Does anyone see a > problem with this? I agree that we should avoid hitting GCC's limit, even though it is easy to extend. Each level of template depth represents another template class instantiation hidden inside another. If we are hitting GCC's default limit of 17, then that means the class is instantiating at least 17 other template classes when it is used. Usually a re-structuring of classes can get around the problem. I've encountered this many times in template metaprogramming constructs. -Brad From lng@insightful.com Thu, 28 Jun 2001 10:20:44 -0700 Date: Thu, 28 Jun 2001 10:20:44 -0700 From: Lydia Ng lng@insightful.com Subject: [Insight-developers] CMake errors Hi, I did an update of CMake last night - built it on VC++ and then ran CMakeSetup. I got hundreds of error dialog boxes saying: CMake Error: can not find file xmlparse/xmlparse.h CMake Error: Tried .txx .cxx .c for xmlparse/xmlparse.h for different files in xmlparse, vnl, vxl etc I also updated CMake on a different machine and built a Cygwin version and I also get the same set of errors. Can someone take a look? - all my dsp/dsw and makefiles have been mucked up. Lydia From bill.hoffman@kitware.com Thu, 28 Jun 2001 14:10:30 -0400 Date: Thu, 28 Jun 2001 14:10:30 -0400 From: Bill Hoffman bill.hoffman@kitware.com Subject: [Insight-developers] CMake errors I have just checked in a fix for the problem. Try it now. -Bill At 10:20 AM 6/28/2001 -0700, Lydia Ng wrote: >Hi, > >I did an update of CMake last night - built it >on VC++ and then ran CMakeSetup. > >I got hundreds of error dialog boxes saying: > >CMake Error: can not find file xmlparse/xmlparse.h >CMake Error: Tried .txx .cxx .c for xmlparse/xmlparse.h > >for different files in xmlparse, vnl, vxl etc > >I also updated CMake on a different machine >and built a Cygwin version and I also get the same >set of errors. > >Can someone take a look? >- all my dsp/dsw and makefiles have been mucked up. > >Lydia > >_______________________________________________ >Insight-developers mailing list >Insight-developers@public.kitware.com >http://public.kitware.com/mailman/listinfo/insight-developers From brad.king@kitware.com Thu, 28 Jun 2001 14:41:25 -0400 (EDT) Date: Thu, 28 Jun 2001 14:41:25 -0400 (EDT) From: Brad King brad.king@kitware.com Subject: [Insight-developers] template depth limit > > instantiation hidden inside another. If we are hitting GCC's default > > limit of 17, then that means the class is instantiating at least 17 other > > template classes when it is used. Usually a re-structuring of classes can > > Is this saying a given class A instantiates B which instantiates C > which instantiates D, ... 17 levels? Yes, this is exactly what it is saying. The classic example of a template class that does this looks like this: // A class with recursive instantiation: template struct Foo: public Foo {}; // Terminate the recursion: template <> struct Foo<0> {}; // This explicit instantiation causes Foo<1...10> to be instantiated // (depth 10), and is then stopped by the Foo<0> specialization. template struct Foo<10>; > Or is this saying a given class A instantiates B, C, D, .... 17 > classes but all at the same "level". In other words, class A > aggregates 17 ivars which are themselves templates. This one is more of template "breadth", but I've never heard a term for it. -Brad From lng@insightful.com Thu, 28 Jun 2001 14:31:16 -0700 Date: Thu, 28 Jun 2001 14:31:16 -0700 From: Lydia Ng lng@insightful.com Subject: [Insight-developers] template depth limit The number of classes instantiated is not the whole picture. You can actually exceed the limit with just one class (see below) if it recursively calls its own member functions enough times. Lydia ---------------------- template class MyClass { public: MyClass() { f1(); } void f1(){ f2(); } void f2(){ f3(); } void f3(){ f4(); } void f4(){ f5(); } void f5(){ f6(); } void f6(){ f7(); } void f7(){ f8(); } void f8(){ f9(); } void f9(){ f10(); } void f10(){ f11(); } void f11(){ f12(); } void f12(){ f13(); } void f13(){ f14(); } void f14(){ f15(); } void f15(){ f16(); } void f16(){ f17(); } void f17(){ f18(); } void f18(){ f19(); } void f19(){ std::cout << "hello" << std::endl; } }; From lng@insightful.com Thu, 28 Jun 2001 11:23:41 -0700 Date: Thu, 28 Jun 2001 11:23:41 -0700 From: Lydia Ng lng@insightful.com Subject: [Insight-developers] template depth limit This is a multi-part message in MIME format. ------=_NextPart_000_0006_01C0FFC4.C953F750 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Attached is the error message I got from Cygwin-gcc - I have summarized it below. Basically the complilation fails because it takes more than 17 "steps" to instantiated the vnl_vector used to represent the quaternion inside the registration. It looks to me whenever you ::New() an object that counts as two one for the function New() and one for the constructor. Is that correct? The statistics are: 2 levels are taken by my multi-resolution extension 12 levels are taken by the registration framework 3 (+ 1) levels are taken up just to represent the quaternion 4 levels are taken up because of New() Given that 4 levels are taken by the quaternion and New() takes up two levels - you can easily hit the 17 limit by having nesting of 6 template classes. That's not hard to do if we are trying to make each component of an algorithm generic. I agree that we shouldn't make our hierarchy too deep - but is a limit of 17 too low? Lydia ------------------------------------------- 1) MutiResolutionMutualInformationRigidRegistration (constructor) 2) MultiResolutionRegistration (constructor) 3) ImageToImageRigidMutualInformationGradientDescentRegistration (New) 4) ImageToImageRigidMutualInformationGradientDescentRegistration (constructor) 5) RegistrationMethod (constructor) 6) MutualInformationImageToImageMetric (New) 7) MutualInformationImageToImageMetric (constructor) 8) SimilarityRegistrationMetric (constructor) 9) ImageMapper (New) 10) ImageMapper (constructor) 11) RegistrationMapper (constructor) 12) QuaternionRigidRegistrationTransform (New) 13) QuaternionRigidRegistrationTransform (constructor) 14) Rigid3DTransform (constructor) 15) vnl_quaternion (constructor) 16) vnl_vector_fixed (constructor) 17) vnl_vector_ref (constructor) ( one more is required to get to the constructor of vnl_vector ) ------=_NextPart_000_0006_01C0FFC4.C953F750 Content-Type: application/octet-stream; name="log.log" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="log.log" c++ -g -O2 = -I/cygdrive/f/lng/Insight-latest/Insight/Testing/Code/Algorithms = -I/cygdrive/f/lng/Insight-latest/Insight-Cygwin = -I/cygdrive/f/lng/Insight-latest/Insight/Code/Numerics = -I/cygdrive/f/lng/Insight-latest/Insight/Code/Common = -I/cygdrive/f/lng/Insight-latest/Insight-Cygwin/Code/Numerics/vxl = -I/cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl = -I/cygdrive/f/lng/Insight-latest/Insight-Cygwin/Code/Numerics/vxl/vcl = -I/cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vcl = -I/cygdrive/f/lng/Insight-latest/Insight/Code/BasicFilters = -I/cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms -c = /cygdrive/f/lng/Insight-latest/Insight/Testing/Code/Algorithms/itkMultiRe= solutionMutualInformationRigidRegistrationTest.cxx -o = itkMultiResolutionMutualInformationRigidRegistrationTest.o=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_r= ef.h: In method `vnl_vector_ref::vnl_vector_ref(int, double *)':=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_r= ef.h:31: template instantiation depth exceeds maximum of 17=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_r= ef.h:31: (use -ftemplate-depth-NN to increase the maximum)=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_r= ef.h:31: instantiating `vnl_vector::vnl_vector()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_r= ef.h:31: instantiated from = `vnl_vector_ref::vnl_vector_ref(int, double *)'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_f= ixed.h:33: instantiated from = `vnl_vector_fixed::vnl_vector_fixed()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_quaterni= on.h:65: instantiated from `vnl_quaternion::vnl_quaternion()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Common/itkRigid3DTransform.tx= x:54: instantiated from = `itk::Rigid3DTransform::Rigid3DTransform()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Common/itkQuaternionRigidRegi= strationTransform.txx:33: instantiated from = `itk::QuaternionRigidRegistrationTransform = >::QuaternionRigidRegistrationTransform()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Common/itkQuaternionRigidRegi= strationTransform.h:101: instantiated from = `itk::QuaternionRigidRegistrationTransform = >::New()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkRegistrationMap= per.txx:57: instantiated from = `itk::RegistrationMapper > = >,itk::QuaternionRigidRegistrationTransform = > >::RegistrationMapper()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkImageMapper.txx= :55: instantiated from = `itk::ImageMapper > = >,itk::QuaternionRigidRegistrationTransform = > >::ImageMapper()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkImageMapper.h:1= 70: instantiated from = `itk::ImageMapper > = >,itk::QuaternionRigidRegistrationTransform = > >::New()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkSimilarityRegis= trationMetric.txx:58: instantiated from = `itk::SimilarityRegistrationMetric > = >,itk::ImageMapper > = >,itk::QuaternionRigidRegistrationTransform = > >,double,itk::CovariantVector = >::SimilarityRegistrationMetric()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkMutualInformati= onImageToImageMetric.txx:58: instantiated from = `itk::MutualInformationImageToImageMetric > = >,itk::ImageMapper > = >,itk::QuaternionRigidRegistrationTransform = > > >::MutualInformationImageToImageMetric()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkMutualInformati= onImageToImageMetric.h:226: instantiated from = `itk::MutualInformationImageToImageMetric > = >,itk::ImageMapper > = >,itk::QuaternionRigidRegistrationTransform = > > >::New()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkRegistrationMet= hod.txx:57: instantiated from = `itk::RegistrationMethod > = >,itk::PhysicalImage > > > >::RegistrationMethod()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkImageToImageRig= idMutualInformationGradientDescentRegistration.txx:56: instantiated = from = `itk::ImageToImageRigidMutualInformationGradientDescentRegistration > = >,itk::PhysicalImage > > = >::ImageToImageRigidMutualInformationGradientDescentRegistration()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkImageToImageRig= idMutualInformationGradientDescentRegistration.h:295: instantiated = from = `itk::ImageToImageRigidMutualInformationGradientDescentRegistration > = >,itk::PhysicalImage > > >::New()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkMultiResolution= Registration.txx:60: instantiated from = `itk::MultiResolutionRegistration > = >,itk::PhysicalImage > > > = >::MultiResolutionRegistration()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkMultiResolution= MutualInformationRigidRegistration.txx:57: instantiated from = `itk::MultiResolutionMutualInformationRigidRegistration > = >,itk::PhysicalImage > > = >::MultiResolutionMutualInformationRigidRegistration()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkMultiResolution= MutualInformationRigidRegistration.h:142: instantiated from here=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_r= ef.h:31: template instantiation depth exceeds maximum of 17=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_r= ef.h:31: (use -ftemplate-depth-NN to increase the maximum)=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_r= ef.h:31: instantiating `vnl_vector::vnl_vector()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_r= ef.h:31: instantiated from = `vnl_vector_ref::vnl_vector_ref(int, double *)'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_vector_f= ixed.h:33: instantiated from = `vnl_vector_fixed::vnl_vector_fixed()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Numerics/vxl/vnl/vnl_quaterni= on.h:65: instantiated from `vnl_quaternion::vnl_quaternion()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Common/itkRigid3DTransform.tx= x:54: instantiated from = `itk::Rigid3DTransform::Rigid3DTransform()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Common/itkQuaternionRigidRegi= strationTransform.txx:33: instantiated from = `itk::QuaternionRigidRegistrationTransform = >::QuaternionRigidRegistrationTransform()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Common/itkQuaternionRigidRegi= strationTransform.h:101: instantiated from = `itk::QuaternionRigidRegistrationTransform = >::New()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkRegistrationMap= per.txx:57: instantiated from = `itk::RegistrationMapper > = >,itk::QuaternionRigidRegistrationTransform = > >::RegistrationMapper()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkImageMapper.txx= :55: instantiated from = `itk::ImageMapper > = >,itk::QuaternionRigidRegistrationTransform = > >::ImageMapper()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkImageMapper.h:1= 70: instantiated from = `itk::ImageMapper > = >,itk::QuaternionRigidRegistrationTransform = > >::New()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkSimilarityRegis= trationMetric.txx:58: instantiated from = `itk::SimilarityRegistrationMetric > = >,itk::ImageMapper > = >,itk::QuaternionRigidRegistrationTransform = > >,double,itk::CovariantVector = >::SimilarityRegistrationMetric()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkMutualInformati= onImageToImageMetric.txx:58: instantiated from = `itk::MutualInformationImageToImageMetric > = >,itk::ImageMapper > = >,itk::QuaternionRigidRegistrationTransform = > > >::MutualInformationImageToImageMetric()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkMutualInformati= onImageToImageMetric.h:226: instantiated from = `itk::MutualInformationImageToImageMetric > = >,itk::ImageMapper > = >,itk::QuaternionRigidRegistrationTransform = > > >::New()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkRegistrationMet= hod.txx:57: instantiated from = `itk::RegistrationMethod > = >,itk::PhysicalImage > > > >::RegistrationMethod()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkImageToImageRig= idMutualInformationGradientDescentRegistration.txx:56: instantiated = from = `itk::ImageToImageRigidMutualInformationGradientDescentRegistration > = >,itk::PhysicalImage > > = >::ImageToImageRigidMutualInformationGradientDescentRegistration()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkImageToImageRig= idMutualInformationGradientDescentRegistration.h:295: instantiated = from = `itk::ImageToImageRigidMutualInformationGradientDescentRegistration > = >,itk::PhysicalImage > > >::New()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkMultiResolution= Registration.txx:60: instantiated from = `itk::MultiResolutionRegistration > = >,itk::PhysicalImage > > > = >::MultiResolutionRegistration()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkMultiResolution= MutualInformationRigidRegistration.txx:57: instantiated from = `itk::MultiResolutionMutualInformationRigidRegistration > = >,itk::PhysicalImage > > = >::MultiResolutionMutualInformationRigidRegistration()'=0A= /cygdrive/f/lng/Insight-latest/Insight/Code/Algorithms/itkMultiResolution= MutualInformationRigidRegistration.h:142: instantiated from here=0A= make: *** [itkMultiResolutionMutualInformationRigidRegistrationTest.o] = Error 1=0A= ------=_NextPart_000_0006_01C0FFC4.C953F750-- From wlorens1@nycap.rr.com Thu, 28 Jun 2001 21:47:11 -0400 Date: Thu, 28 Jun 2001 21:47:11 -0400 From: Bill Lorensen wlorens1@nycap.rr.com Subject: [Insight-developers] Mutual Information Registration Folks, I'm happy to report that I have had success using the Rigid Mutual Information code. The recent changes made by Lydia and a better understanding of the process have made the difference. I've been able to register about 10 MRI datasets of Alzheimer studies. The results look qualitatively very good. I've yet to quantify the results. I am not using the new multi-res framework. I'm doing the multi-res myself. I'll report on my experience at the upcoming developers meeting. My application uses a vtk pipeline that exports to the itk registration classes. Then I convert the resulting quaternion to a 3 x 3 matrix that I pass back into a vtk pipeline for display. I believe this shows one way that users will be using itk... to get at a particular algorithm. Thanks Lydia! Bill From lng@insightful.com Thu, 28 Jun 2001 17:08:25 -0700 Date: Thu, 28 Jun 2001 17:08:25 -0700 From: Lydia Ng lng@insightful.com Subject: [Insight-developers] template depth limit This is a multi-part message in MIME format. ------=_NextPart_000_000A_01C0FFF4.F240A5C0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit I tested it - it happens with regular function calls too (code attached). Lydia > -----Original Message----- > From: whitaker@cs.utah.edu [mailto:whitaker@cs.utah.edu] > Sent: Thursday, June 28, 2001 4:47 PM > To: lng@insightful.com > Subject: Re: [Insight-developers] template depth limit > > > > > Is this only because it is trying to in-line them? Or will > this happen with > regular function calls as well? > > Regards, > > Ross > > > Lydia Ng wrote: > > > The number of classes instantiated is not the whole > > picture. > > You can actually exceed the limit with just one class > > (see below) if it recursively calls its own member > functions enough times. > > > > Lydia > > > > ---------------------- > > > > template > > class MyClass > > { > > > > public: > > MyClass() { f1(); } > > void f1(){ f2(); } > > void f2(){ f3(); } > > void f3(){ f4(); } > > void f4(){ f5(); } > > void f5(){ f6(); } > > void f6(){ f7(); } > > void f7(){ f8(); } > > void f8(){ f9(); } > > void f9(){ f10(); } > > void f10(){ f11(); } > > void f11(){ f12(); } > > void f12(){ f13(); } > > void f13(){ f14(); } > > void f14(){ f15(); } > > void f15(){ f16(); } > > void f16(){ f17(); } > > void f17(){ f18(); } > > void f18(){ f19(); } > > void f19(){ std::cout << "hello" << std::endl; } > > > > }; > > > > _______________________________________________ > > Insight-developers mailing list > > Insight-developers@public.kitware.com > > http://public.kitware.com/mailman/listinfo/insight-developers > > -- > Ross T. Whitaker, Assistant Professor > 50 S. Central Campus Drive, Rm. 3190 > University of Utah > Salt Lake City, UT 84112-9205 > voice: 801/587-9549, fax: 801/581-5843 > web: www.cs.utah.edu/~whitaker > > ------=_NextPart_000_000A_01C0FFF4.F240A5C0 Content-Type: application/octet-stream; name="test2.cxx" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="test2.cxx" #include template class MyClass { public: MyClass(); void f1(); void f2(); void f3(); void f4(); void f5(); void f6(); void f7(); void f8(); void f9(); void f10(); void f11(); void f12(); void f13(); void f14(); void f15(); void f16(); void f17(); }; template MyClass:: MyClass() { f1(); } template void MyClass:: f1(){ f2(); } template void MyClass:: f2(){ f3(); } template void MyClass:: f3(){ f4(); } template void MyClass:: f4(){ f5(); } template void MyClass:: f5(){ f6(); } template void MyClass:: f6(){ f7(); } template void MyClass:: f7(){ f8(); } template void MyClass:: f8(){ f9(); } template void MyClass:: f9(){ f10(); } template void MyClass:: f10(){ f11(); } template void MyClass:: f11(){ f12(); } template void MyClass:: f12(){ f13(); } template void MyClass:: f13(){ f14(); } template void MyClass:: f14(){ f15(); } template void MyClass:: f15(){ f16(); } template void MyClass:: f16(){ f17(); } template void MyClass:: f17(){ f18(); } template void MyClass:: f18(){ f19(); } template void MyClass:: f19(){ std::cout << "hello" << std::endl; } int main() { MyClass aa; return 0; } ------=_NextPart_000_000A_01C0FFF4.F240A5C0-- From will.schroeder@kitware.com Fri, 29 Jun 2001 09:54:47 -0400 Date: Fri, 29 Jun 2001 09:54:47 -0400 From: Will Schroeder will.schroeder@kitware.com Subject: [Insight-developers] Subjects for today's TCON Hi Folks- I'd like to talk about two things today: 1) Where to assume data is for testing purposes? I'm about ready to check in a raw image reader using the FileIO structure that the UNC folks came up with. The problem is the test to go along with it: I need data to test with, and it has to be in the distribution. Where should this data reside? Should I assume that the InsightData repository is available? 2) Potential topics for Seattle: I would like to suggest that we talk about the following areas during part of our time in Seattle. + FileIO - after having worked through this, it's clear there is room for improvement. I'd like to finalize the design. I'm guessing this will take 30-45 minutes. + CMake - probably 15-30 minutes; status, plans, etc. + CABLE - 15 minutes status + DART - 15-30 minutes status, plans + Documentation - 15-30 minutes review status; including developing writing assignments. Will From ibanez@choroid.cs.unc.edu Fri, 29 Jun 2001 10:34:37 -0400 (EDT) Date: Fri, 29 Jun 2001 10:34:37 -0400 (EDT) From: Luis Ibanez ibanez@choroid.cs.unc.edu Subject: [Insight-developers] Reducing template depth Lydia's findings are quite illuminating ! It seems that some de-Templating would be a good idea at this point. Here are the template dependencies for the registration framework : Transform Mapper Metric Optimizer Currently optimizers are templated over the Cost function (the metric). That makes sense if the evaluation of the cost function can be inlined,... but for registration every evaluation is so long that using virtual functions will be just fine. Optimizers can be modified to use the same style vnl_optimizer use, that is to expect a pointer to a cost_function class that derives from a common base_cost_function class. That is, all the Metrics should derive from a common non-templated class that defines the interface for a cost function. The group of Transform,Mapper,Metric could be detemplated if we step back on itkPoints and use vnl_points that are dynamic in dimension. Transforms are templated in order to be of variable dimension (in the input and output spaces). If vnl_points are used, templates can be removed at the price of checking dimensions each time a point is pass as parameter to a function. It Transforms are detemplated, Mappers could remove Tranforms as template parameter (and only keep the reference image). Metrics will stil have to be templated over Reference Image and Target Image. --- The question at some point is how much should be squeeze the design of frameworks, if they are responsible for less of 50% of the template depth ? and how much that will cost in functionality and maintenance effort. Luis From mackelfr@rad.unc.edu Fri, 29 Jun 2001 09:53:21 -0400 (EDT) Date: Fri, 29 Jun 2001 09:53:21 -0400 (EDT) From: Andrew MacKelfresh mackelfr@rad.unc.edu Subject: [Insight-developers] itk+vtk vtkMultiThreader.h Problem I have been developing an application that integrates itk with vtk and I came accross an error within vtkMultithreader.h. The error is as follows: error C2872: 'ThreadInfoStruct' : ambiguous symbol It seems that vtkMultithreader is a copy of itkMutlithreader and this struct is defined with the same name in both places. ThreadInfoStruct is a global struct. I resolved the problem by changing the scope of the struct within vtk from global to protected within the class - the struct is only used by protected methods and so this works fine. I do suppose though that this same problem might resurface within this class and its other globals. Should this struct also be moved from global to protected within itk also? Andrew MacKelfresh UNC-CH From millerjv@crd.ge.com Fri, 29 Jun 2001 17:24:19 -0400 Date: Fri, 29 Jun 2001 17:24:19 -0400 From: Miller, James V (CRD) millerjv@crd.ge.com Subject: [Insight-developers] Filters passing Spacing and Origin I put in a fix that will pass an Image's spacing and origin through the pipeline. What I have implemented is a partial solution to the problem. State -------- By default, a filter copies the meta data from its first input to all of its outputs. This done by ProcessObject::GenerateOutputInformation(). This method in turn calls output[i]->CopyInformation( input[0] ). [If a filter does not want to copy information from its first input to its output, then it would override the method UpdateOutputInformation()] CopyInformation is a virtual function that takes in a DataObject *. Each subclass of DataObject needs to provide a version of CopyInformation if it adds any ivars that need to be considered meta-data. In the case at hand, this meta-data would be the spacing and origin. Since the input to CopyInformation is a DataObject *, each implementation of CopyInformation attempts to cast the pointer to Self. If this cast succeeds, PhysicalImage will call GetSpacing() and GetOrigin() of the input. If this cast fails, PhysicalImage will attempt to cast the DataObject * to its Superclass (in this case Image) and call GetSpacing() and GetOrigin() on that. If that fails, then it prints an error. Files Modified -------------------- itkPhysicalImage.h itkPhysicalImage.txx Issues ---------- If a filter's input is of a different type than its output, then the cast operations in the current implementation will fail and spacing and origin will not be copied. If the input to a filter is a PhysicalImage and the output is a PhysicalImage, (probably) qualify as different types. Thus a dynamic_cast from one to the other will fail and the spacing and origin will not be copied. Possible solutions -------------------------- 1. Is there a way to determine if an object is an instantiation of a given template class? i.e. can you query whether something is a PhysicalImage (instead of a PhysicalImage)? 2. Use GetClassName() to detemine whether a given input is a class that we know has GetSpacing() and GetOrigin(). 3. Use a helper templated class that indicates whether a given class have GetSpacing()/GetOrigin() The only tests of the current implementation were itkShrinkImageTest and itkThresholdImageTest. In the former, the spacing and origin are computed by the specified filter. In the latter, the spacing and origin are passed through the pipeline. Jim Miller _____________________________________ Visualization & Computer Vision GE Corporate Research & Development Bldg. KW, Room C218B P.O. Box 8, Schenectady NY 12301 millerjv@crd.ge.com (518) 387-4005, Dial Comm: 8*833-4005, Cell: (518) 505-7065, Fax: (518) 387-6981 <> begin 600 Miller, James V (CRD).vcf M0D5'24XZ5D-!4D0-"E9%4E-)3TXZ,BXQ#0I..DUI;&QE3M.97<@66]R:SLQ,C,P,3M54T$- M"DQ!0D5,.U=/4DL[14Y#3T1)3D<]455/5$5$+5!224Y404),13I+5RU#,C$X M0CTP1#TP05`N3RX@0F]X(#@],$0],$%38VAE;F5C=&%D>2P@3F5W(%EO