[Insight-developers] VectorType of itk::LevelSetFunction
is FixedArray. Why not Vector?
Karthik Krishnan
Karthik.Krishnan at kitware.com
Thu Jul 7 23:42:12 EDT 2005
Hi Zach,
Its done. You can read/write FixedArrays of length 2.
If you need to add other lengths, you should be able to easily add that
duplicating code. Look at the cvs diffs
http://www.itk.org/cgi-bin/viewcvs.cgi/Code/IO/itkImageIOBase.cxx?root=Insight&r1=text&tr1=1.56&r2=text&tr2=1.55&diff_format=h
http://www.itk.org/cgi-bin/viewcvs.cgi/Code/IO/itkImageIOBase.h?root=Insight&r1=text&tr1=1.38&r2=text&tr2=1.37&diff_format=h
(thanks to VS6 for not supporting partial specialization! ).
Thanks
karthik
On Thu, 2005-07-07 at 18:21 -0700, Zachary Pincus wrote:
> Hi Luis,
>
> Thanks for your reply!
>
> Josh Cates had some good commentary for why not to use itk::Vector
> for advection fields:
>
> > Hi Zachary,
> >
> > As I recall, FixedArray was chosed for maximum compatibility with
> > the variety of vector types in itk. For whatever reason, all
> > numeric vectors do not inherit from itk::Vector. (To wit,
> > itk::CovariantVector is a sibling of itk::Vector and not its
> > child. This setup also allows floating-point RGB type images.)
> > Images of itk::Vector should work, but I think you'll also be ok
> > changing the typedef in your own code.
> >
> > Josh.
>
> I agree that it's easier to make a loop that copies a subclass of
> FixedArray into a FixedArray than copying one sibling type into
> another. Nevertheless, your point about Vector being the appropriate
> type for advection fields is very correct.
>
> I'll try a build on my machine and see how that goes.
>
> About the FixedArray read/write coverage: I can't seem to write
> Image<FixedArray<float, 2>, 2> images out to MHA/MHD files. Where
> would I look in the code to see what the coverage capabilities for a
> given file reader/writer are? (I'm not too familiar with how the
> reader/writer code is structured.)
>
> Zach
>
>
>
> On Jul 7, 2005, at 8:28 AM, Luis Ibanez wrote:
>
> >
> >
> > Hi Zach,
> >
> > Thanks for pointing this out.
> >
> > There is no aparent reason why this VectorType couldn't
> > be an itk::Vector instead of an itk::FixedArray.
> >
> >
> > The fact that the VectorType represents an advection field
> > is actually a good argument in favor of using an itk::Vector
> > type instead of the itk::FixedArray type.
> >
> > Note that the IO argument may not be the best reason for
> > changing the type. The coverage for reading and writing
> > itk::FixedArrays should be as complete as the one for
> > itk::Vectors
> >
> > The itk::Vector class derives from the itk::FixedArray,
> > so the only reason for having them separate, is the fact
> > that Vectors represent a geometrical concept in N-D space,
> > and can therefore have a particular set of operators defined.
> > A comparative discussion on the concept of Vectors, Points,
> > Arrays... has been added to the second edition of the
> > Software Guide:
> >
> > http://www.itk.org/ItkSoftwareGuide.pdf
> >
> > you will find it in section 8.8.1 "Geometrical Representation"
> > pdf-page 415.
> >
> >
> >
> > Probably the right way to proceed at this point, will be for
> > you to change the type in your local copy, run and submit an
> > experimental build, and if all the tests are green in the
> > Dashboard then we will proceed to change the type.
> >
> >
> > Please let us know if this option sounds reasonable to you.
> >
> >
> >
> > Thanks
> >
> >
> > Luis
> >
> >
> >
> >
> > -----------------------
> > Zachary Pincus wrote:
> >
> >> Hi guys,
> >> The base class for level set functions in ITK
> >> (itk::LevelSetFunction) typedef's VectorType as a FixedArray. This
> >> means that custom edge advection images need to have FixedArrays
> >> as pixels, which is inconvenient because most of the ImageWriter
> >> classes that deal with vector images only work with Vector-typed
> >> pixels, not FixedArray-typed pixels. Moreover, there are many
> >> appropriate numeric traits defined for Vector, but none for
> >> FixedArray -- this makes using filters on FixedArray images more
> >> challenging.
> >> Is there any reason why FixedArray images are used in this case
> >> and not Vector images? Do FixedArrays have fewer data members or
> >> fewer virtual functions so that using them is significantly
> >> faster? Or is there some other advantage? If not, is there any
> >> reason not to change the LevelSetFunction typedef to Vector
> >> instead of FixedArray? (And you guys prudently wouldn't want to
> >> make this an ITK-wide change, is there any reason I wouldn't want
> >> change it for my own ITK checkout?)
> >> Sure, I can pixel-by-pixel copy a Vector image to a FixedArray
> >> image, but if it's not necessary that's better for me.
> >> Zach
> >> _______________________________________________
> >> Insight-developers mailing list
> >> Insight-developers at itk.org
> >> http://www.itk.org/mailman/listinfo/insight-developers
> >>
> >
> >
> >
> > _______________________________________________
> > Insight-developers mailing list
> > Insight-developers at itk.org
> > http://www.itk.org/mailman/listinfo/insight-developers
> >
>
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at itk.org
> http://www.itk.org/mailman/listinfo/insight-developers
More information about the Insight-developers
mailing list