[Insight-developers] ITK image for diffusion weighted data
Karthik Krishnan
Karthik.Krishnan at kitware.com
Fri Aug 5 17:32:14 EDT 2005
Hi Gordon and others,
Luis asked me to send an email summarizing the status of the ITK image
for diffusion weighted data:
Here is the proposal and details
http://www.itk.org/Wiki/Proposals:VectorImage
The classes recenlty committed to handle the same are
http://www.itk.org/Insight/Doxygen/html/classitk_1_1VectorImage.html
http://www.itk.org/Insight/Doxygen/html/classitk_1_1VectorImageToImageAdaptor.html
http://www.itk.org/Insight/Doxygen/html/classitk_1_1DefaultVectorPixelAccessor.html
http://www.itk.org/Insight/Doxygen/html/classitk_1_1Accessor_1_1VectorImageToImagePixelAccessor.html
A Test for the image and the adaptor, with some timing statistics to
allocate a 200x200x200 image with 6 Diffusion weighted measurements and
fill the buffer with some value.
http://www.itk.org/Testing/Sites/chiarugi.uiowa/Linux64-g++-3.4-opt/20050805-0100-Nightly/Results/__Testing_Code_Common_itkVectorImageTest.html
There is a typo in the message output: It reads Allocating an Array,
FixedArray and VectorImage respectively.
Funnily contrary to what I would have expected the VectorImage is faster
than the FixedArray. I would have expected them to be comparable. Turns
out this is because the "operator=" in FixedArray is not inlined by the
compiler due to a for loop in there!
$ nm -C itkVectorImageTest.o | grep FixedArray | grep operator= | grep float
itk::FixedArray<float, 6>::operator=(itk::FixedArray<double, 3> const&)
Of course the image will be largely useless until the iterators support
it unless you want to use the slow SetPixel/GetPixel methods. The
implementation of iterators for these images is still pending. More on
the wiki.
Thanks
Regards
Karthik
>
>
> ------------------------------------------------------------------------
>
> Subject:
> ITK Image for DWI data
> From:
> "Gordon Kindlmann" <gk at bwh.harvard.edu>
> Date:
> 5 Jul 2005 17:52:43 -0400
> To:
> "Luis Ibanez" <luis.ibanez at kitware.com>
>
> To:
> "Luis Ibanez" <luis.ibanez at kitware.com>
> CC:
> "Kikinis MD Kikinis" <kikinis at bwh.harvard.edu>, "William E Lorensen"
> <lorensen at crd.ge.com>, "Steve Pieper" <pieper at bwh.harvard.edu>
>
>
> hello,
>
> This is the message that I said I'd send to Luis after the Programming
> Week, based on our informal discussions about the need for an ITK
> image that can gracefully handle the kind of data that arises in
> diffusion-weighted image experiments.
>
> The basic requirements are:
>
> - a pixel type for a vector/array/list of measurements, in which the
> number of measurements is known only at run time. While a given DWI
> protocol has a fixed number of measurements, a user can reasonably
> want to analyze and compare DWI datasets with any number of different
> measurements without having to recompile.
>
> - The list of measurements should not add to the nominal dimension of
> the image, since, for example, the orientation information will not
> include that axis (e.g. DWI datasets have 3-D orientation information,
> not 4-D).
>
> - For reasons of memory efficiency, as well compatibility with
> memory-layout of other software, it would be ideal if the memory
> representations of the pixels' values were contiguous (so that the
> last DWI value for the Nth pixel proceeds the first DWI value for the
> N+1st pixel). It was the point that led Luis to reconsider the
> initial suggestion of simply creating an image of arrays (which also
> suffers a heavy one-time cost in allocating each pixel's array).
>
> This came up in the context of doing DWI processing in ITK, and there
> are at least two cases in this context:
>
> - using ITK to process the numerous existing NAMIC diffusion datasets
> in an efficient way. This is the most pressing case. Some people are
> already estimating tensors from DWI in ITK, but they're using
> volume-interleaved memory layout, which is opposite of what we would
> want. It would be very convenient if NAMIC participants could
> experiment with linear, non-linear, and other tensor estimation
> methods within a standard framework. Lacking such a framework, every
> NAMIC group is going to come up with their own non-interoperable methods.
>
> - Doing filtering or tractography in the DWI space, instead of in the
> space of estimated tensors. At least one published tractography
> method (Conturo PNAS '99) interpolate DWIs and estimate tensors at
> every step, and this has the advantage of dealing with noise in its
> own domain, instead of complicating it with the additional step of
> tensor estimation. Other methods (such as estimating two tensors per
> DWI list) also require access to the original DWIs.
>
> I'm not likely to be the one to implement a prototype of this kind of
> image (unless we want more Dashboard fireworks!), but I wanted to
> remind us of the need, and to volunteer to continue to be a sounding
> board for ideas, and a tester for possible implementations.
>
> Gordon
>
>
>
More information about the Insight-developers
mailing list