[Insight-developers] Wrong behaviour of ImageFileReader when reading an itk::VectorImage<itk::FixedArray<double, 6>, 3> ?

Benoit Scherrer benoitscherrer at gmail.com
Tue Jan 18 21:48:52 EST 2011


Hi,

Thank you very much for all these answers!

I don't know of a way to get the number of components in
> TOutputImage::PixelType. It would require us to define a NumberOfComponents
> in the traits of all pixels in itkNumericTraits. The IO class has no way of
> knowing the specific pixel type you've instantiated. One has to rely on the
> IO, for instance if the pixel type is an Array, (in which case, the image
> cannot tell you the number of components in the array. The IO tells you by
> parsing the file). You have a peculiar situation where you want to get the
> number of components from the pixel and not from the IO.


Yes i think it is really the point. Now i understand that the IO class has
no way to know the size of the pixel type without
a NumberOfComponents property in the itkNumericTraits.

You could use ImageAdaptors for presenting
> a VectorImage as an Image of Tensors.


Thanks, i will look at it (i m a little bit concerned about the speed
though. but there is no free lunch...)

Also, since
typedef itk::VectorImage<itk::DiffusionTensor<double>,3>
ImageOfVariableNumberOfTensorsType;
seems to work as long as you don't write/load the data, i could also convert
the output of
the IO class to my ImageOfVariableNumberOfTensorsType type, knowing that
each tensor is composed
of 6 elements.

Thanks
Benoit


>
> -----------------------------------------------------------------
> On Mon, Jan 17, 2011 at 10:46 AM, Benoit Scherrer
> <benoitscherrer at gmail.com> wrote:
> > Ok thanks!
> > But so there is no way to use:
> > typedef itk::VectorImage<itk::DiffusionTensor<double>, 3>
> TensorVectorImage;
> >
> > to read a set of tensors at each voxel ?
> > ( itk::DiffusionTensor inherits itk::FixedArray)
> > It would be useful to do for example:
> > TensorVectorImage tensors;
> > tensors[i].GetFractionalAnisotropy()
> > Thanks
> > Benoit
> >
> > On Thu, Jan 13, 2011 at 11:26 PM, Karthik Krishnan
> > <karthik.krishnan at kitware.com> wrote:
> >>
> >>
> >> On Fri, Jan 14, 2011 at 6:26 AM, Benoit Scherrer
> >> <benoitscherrer at gmail.com> wrote:
> >>>
> >>> Hi,
> >>> I wanted to use the type:
> >>> typedef itk::VectorImage<itk::FixedArray<double, 6>, 3>
> >>> TensorVectorImage;
> >>> to make a vector image of tensors.
> >>> Everything compiles well. But when i use the
> >>> itk::ImageFileReader<TensorVectorImage>
> >>> it seems that things goes wrong. When trying to iterate on the image :
> >>> itk::ImageRegionConstIterator<TensorVectorImage>
> >>>  it(image, image->GetLargestPossibleRegion());
> >>> while(!it.IsAtEnd())
> >>> {
> >>> itk::VariableLengthVector<itk::FixedArray<double, 6> > tensors =
> >>> it.Get();
> >>>                (...)
> >>> ++it;
> >>> }
> >>> it compiles but during the execution goes out of the data bounds.
> >>> By looking into ImageFileReader<TOutputImage,
> >>> ConvertPixelTraits>::GenerateOutputInformation
> >>> I found the lines:
> >>>   if( strcmp( output->GetNameOfClass(), "VectorImage" ) == 0 )
> >>>     {
> >>>     typedef typename TOutputImage::AccessorFunctorType
> >>> AccessorFunctorType;
> >>>     AccessorFunctorType::SetVectorLength( output,
> >>> m_ImageIO->GetNumberOfComponents() );
> >>>     }
> >>> So here m_ImageIO->GetNumberOfComponents() will returns 6 for a simple
> >>> tensor file (Dimension
> >>> of the VectorImage = 1), instead of 1 (after the offsets computed
> >>> in ImageRegionConstIterator are wrong).
> >>> So should ImageFileReader divides m_ImageIO->GetNumberOfComponents() by
> >>> the number of components
> >>> of TOutputImage::PixelType ? (i manually set it to 1 in the debugger,
> >>> it's working. However i didn't tried
> >>> with an image with 12 components, ie two tensors)
> >>> Or is it a bad idea to use  itk::VectorImage<itk::FixedArray<double,
> 6>,
> >>> 3>  ?
> >>
> >> To make a VectorImage of tensors, you declare it simply as
> >> itk::VectorImage< double, 3 > and set the VectorLength on the image to
> 6.
> >>
> >> Or you could use itk::Image< FixedArray< double, 6 >, 3 >.
> >>
> >> The two are equivalent.
> >>
> >>
> >>>
> >>> Thanks a lot
> >>> Benoit
> >>>
> >>> _______________________________________________
> >>> Powered by www.kitware.com
> >>>
> >>> Visit other Kitware open-source projects at
> >>> http://www.kitware.com/opensource/opensource.html
> >>>
> >>> Kitware offers ITK Training Courses, for more information visit:
> >>> http://kitware.com/products/protraining.html
> >>>
> >>> Please keep messages on-topic and check the ITK FAQ at:
> >>> http://www.itk.org/Wiki/ITK_FAQ
> >>>
> >>> Follow this link to subscribe/unsubscribe:
> >>> http://www.itk.org/mailman/listinfo/insight-developers
> >>>
> >>
> >
> >
> >
> > --
> > / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
> /
> > / /
> > Benoit Scherrer
> > Postdoctoral Research Fellow
> > Computational Radiology Laboratory,
> > Harvard Medical School (Boston)
> >
> > http://www.crl.med.harvard.edu/
> > http://www.BenoitScherrer.com
> > / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
> /
> > / /
> >
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Kitware offers ITK Training Courses, for more information visit:
> > http://kitware.com/products/protraining.html
> >
> > Please keep messages on-topic and check the ITK FAQ at:
> > http://www.itk.org/Wiki/ITK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.itk.org/mailman/listinfo/insight-developers
> >
> >
>



-- 
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ /
Benoit Scherrer
Postdoctoral Research Fellow
Computational Radiology Laboratory,
Harvard Medical School (Boston)

http://www.crl.med.harvard.edu/
http://www.BenoitScherrer.com
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ /
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/mailman/private/insight-developers/attachments/20110118/77aec1a6/attachment.htm>


More information about the Insight-developers mailing list