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

Benoit Scherrer benoitscherrer at gmail.com
Thu Jan 13 19:56:19 EST 2011


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>
 ?

Thanks a lot
Benoit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/mailman/private/insight-developers/attachments/20110113/e7aff3a0/attachment.htm>


More information about the Insight-developers mailing list