[Insight-users] itk::PCAShapeSignedDistanceFunction
Luis Ibanez
luis.ibanez at kitware.com
Wed, 14 Apr 2004 16:43:11 -0400
Hi Lucas,
It is unlikely that a class taken from the CVS
version of ITK will work correctly when grafted
into version 1.6.
Please use a CVS checkout in order to have a
consistent set of source files.
You may want to keep both a 1.6 version and
a CVS version of ITK in your machine, if disk
space is not a concern...
Regards,
Luis
-------------------
Lucas Lorenzo wrote:
> Hi Lydia,
>
> sorry for my delayed answer but thanks a lot for your help.
>
> I'm having some problems when compiling itkBinaryThresholdSpatialFunction
> I'm compiling it against the released 1.6 ITK version. Should I use the
> CVS version exclusively ?
> The errors I'm getting are listed bellow.
> Thanks,
>
> Lucas
>
>
> /lucas:TEST> make
> Building object file BinaryThresholdSpatialFunctionTest.o...
> /usr/local/include/InsightToolkit/Common/itkImageBase.h: In
> instantiation of
> `itk::GetImageDimension<itkBinaryThresholdSpatialFunctionTest(int,
> char**)::SphereFunctionType>':
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:65:
> instantiated from
> `itk::BinaryThresholdSpatialFunction<itkBinaryThresholdSpatialFunctionTest(int,
> char**)::SphereFunctionType>'
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:65:
> instantiated from here
> /usr/local/include/InsightToolkit/Common/itkImageBase.h:42: error: `
> ImageDimension' is not a member of type `
> itkBinaryThresholdSpatialFunctionTest(int, char**)::SphereFunctionType'
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:
> In instantiation of
> `itk::BinaryThresholdSpatialFunction<itkBinaryThresholdSpatialFunctionTest(int,
> char**)::SphereFunctionType>':
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:65:
> instantiated from here
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:65:
> error: non-constant
> `itk::GetImageDimension<itkBinaryThresholdSpatialFunctionTest(int,
> char**)::SphereFunctionType>::ImageDimension' cannot be used as template
> argument
> /private/var/automount/mom/u/lucas/Borrar/TEST/itkBinaryThresholdSpatialFunction.h:
> In instantiation of
> `itk::BinaryThresholdSpatialFunction<itkBinaryThresholdSpatialFunctionTest(int,
> char**)::SphereFunctionType>':
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:65:
> instantiated from here
> /private/var/automount/mom/u/lucas/Borrar/TEST/itkBinaryThresholdSpatialFunction.h:51:
> error: non-constant
> `itk::GetImageDimension<itkBinaryThresholdSpatialFunctionTest(int,
> char**)::SphereFunctionType>::ImageDimension' cannot be used as template
> argument
> /private/var/automount/mom/u/lucas/Borrar/TEST/itkBinaryThresholdSpatialFunction.h:
> In instantiation of
> `itk::BinaryThresholdSpatialFunction<itkBinaryThresholdSpatialFunctionTest(int,
> char**)::SphereFunctionType>':
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:65:
> instantiated from here
> /private/var/automount/mom/u/lucas/Borrar/TEST/itkBinaryThresholdSpatialFunction.h:62:
> error: non-constant
> `itk::GetImageDimension<itkBinaryThresholdSpatialFunctionTest(int,
> char**)::SphereFunctionType>::ImageDimension' cannot be used as template
> argument
> /private/var/automount/mom/u/lucas/Borrar/TEST/itkBinaryThresholdSpatialFunction.txx:
> In instantiation of
> `itk::BinaryThresholdSpatialFunction<itkBinaryThresholdSpatialFunctionTest(int,
> char**)::SphereFunctionType>':
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:65:
> instantiated from here
> /private/var/automount/mom/u/lucas/Borrar/TEST/itkBinaryThresholdSpatialFunction.txx:59:
> error: non-constant
> `itk::GetImageDimension<itkBinaryThresholdSpatialFunctionTest(int,
> char**)::SphereFunctionType>::ImageDimension' cannot be used as template
> argument
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:
> In
> function `int itkBinaryThresholdSpatialFunctionTest(int, char**)':
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:84:
> error: `
> OutputType' is not a member of type `
>
> itk::BinaryThresholdSpatialFunction<itkBinaryThresholdSpatialFunctionTest(int,
>
> char**)::SphereFunctionType>'
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:84:
> error: parse
> error before `=' token
> /private/var/automount/mom/u/lucas/Borrar/TEST/BinaryThresholdSpatialFunctionTest.cxx:85:
> error: `
> /
> Errors continue ...
>
> On Apr 2, 2004, at 4:47 PM, Lydia Ng wrote:
>
> Ok, I think I have a solution.
>
>
>
> The FloodFilledSpatialFunctionConditionalIterator might be the answer.
>
> Basically, this iterator starts at a user specify seed point(s) and
> only explore the pixels for which a SpatialFunction returns a
> non-zero value.
>
>
>
> Note that this will only visits the pixels which are connected (via
> the SpatialFunction membership criteria) to the seed point. So if
> the region you desired is composed of several separate regions, you
> will need at lease one seed point per region.
>
>
>
> To use this iterator the way you want, you would need to wrap the
> PCAShapeSignedDistanceFunction into another SpatialFunction that
> returns true if the distance is within [low_val, high_val] and false
> otherwise.
>
>
>
> I have just created such a class BinaryThresholdSpatialFunction and
> checked it into cvs.
>
>
>
> The test itkBinaryThresholdSpatialFunction illustrates how to
> connect up a ShapeSignedDistanceFunction (the test uses the simpler
> sphere function – but the mechanism is the same) and how it can be
> used in conjunction with the
> FloodFilledSpatialFunctionConditionalIterator.
>
>
>
> Check it out.
>
>
>
> -Lydia
>
>
>
>
>
> -----Original Message-----
> *From:* Lucas Lorenzo [mailto:lucas at cvrti.utah.edu]
> *Sent:* Thursday, April 01, 2004 11:09 AM
> *To:* Lydia Ng
> *Cc:* ITK
> *Subject:* Re: [Insight-users] itk::PCAShapeSignedDistanceFunction
>
>
>
> Thanks Lydia,
>
>
>
> what I'm doing right now is using an ImageConstIteratorWithIndex to
> iterate over a FeatureImageType image and at each iteration step I'm
> getting the index (GetIndex()) so as to evaluate the
> PCAShapeSignedDistanceFunction. Then, if the signe distance function
> value is within the window I've already defined, I perform other
> operations using the FeatureImage values.
>
>
>
> So, the previous process works but very slowly.
>
>
>
> Is there a way to iterate directly over the
> PCAShapeSignedDistanceFunction, getting the index ONLY when the
> signed distance value is within the window (calling this way method
> GetIndex() a few times) ? This way I assume the process would be
> much faster.
>
>
>
> Thanks,
>
>
>
> Lucas
>
>
>
> On Apr 1, 2004, at 11:54 AM, Lydia Ng wrote:
>
>
>
> Lucas,
>
>
>
> I don't believe there is apart from polling one pixel at a time.
>
>
>
> Even if you use a combination of filters
>
> SpatialFunctionImageEvaluatorFilter->BinaryThresholdImageFilter you
> will
>
> still need to eventually visit every pixel to find which is within
> range.
>
>
>
> - Lydia
>
>
>
> -----Original Message-----
>
> From: Lucas Lorenzo [mailto:lucas at cvrti.utah.edu]
>
> Sent: Thursday, April 01, 2004 9:53 AM
>
> To: ITK
>
> Subject: [Insight-users] itk::PCAShapeSignedDistanceFunction
>
>
>
> Hi all,
>
>
>
> sorry for insisting but I do not give up yet.
>
> Does anyone know of a fast, efficient way to get the indexes of those
>
> pixels falling within a particular window (lets call them low_val and
>
> high_val) from a PCAShapeSignedDistanceFunction ?
>
> Thanks,
>
>
>
> Lucas
>
>
>
> Lucas Lorenzo
>
>
>
> University of Utah
>
> Nora Eccles Harrison CardioVascular Research and Training Institute
>
> Fellows Room
>
> 95 South 2000 East
>
> Salt Lake City, UT 84112-5000
>
>
>
> e-mail: lucas at cvrti.utah.edu
>
> telephone: 801-587-9536
>
>
>
> _______________________________________________
>
> Insight-users mailing list
>
> Insight-users at itk.org
>
> http://www.itk.org/mailman/listinfo/insight-users
>
> _______________________________________________
>
> Insight-users mailing list
>
> Insight-users at itk.org
>
> http://www.itk.org/mailman/listinfo/insight-users
>
>
>
> Lucas Lorenzo
>
>
>
> University of Utah
>
> Nora Eccles Harrison CardioVascular Research and Training Institute
>
> Fellows Room
>
> 95 South 2000 East
>
> Salt Lake City, UT 84112-5000
>
>
>
> e-mail: lucas at cvrti.utah.edu
>
> telephone: 801-587-9536
>
> Lucas Lorenzo
>
> University of Utah
> Nora Eccles Harrison CardioVascular Research and Training Institute
> Fellows Room
> 95 South 2000 East
> Salt Lake City, UT 84112-5000
>
> e-mail: lucas at cvrti.utah.edu
> telephone: 801-587-9536
>