[Insight-users] Reading complex data

Julien Michel julien.michel at c-s.cnes.fr
Mon Mar 17 11:03:46 EDT 2008


Dear itk developpers,

If you try to read a complex image into an 
itk::Image<std::complex<ValueType> >, you will get a blank (still 
complex) image.

In fact, the itk::ImageFileReader is calling DoConvertBuffer(...) to 
convert the buffer from ValueType * to std::complex<ValueType> *.

This method uses the itk::ConvertPixelBuffer object to perform the 
conversion.

This object has a Convert(...) method, which handles the conversion 
cases, depending on the input and output number of components. The cases 
where input or/and output number of components is 2 is not handled in 
the switch() case: blocks, so the conversion is not made.

The solution would be to enrich the swith()case: block with the cases 
with two components, and write the corresponding convert method, for 
instance :

ConvertComplexToComplex(...);
ConvertMultiComponentToComplex(...);

I did try it, and it seems to work. Of course I can develop my own 
ConvertPixelBuffer object and pass it to the ImageFileReader (second 
template), but I think it will benefit to all itk users if this code is 
integrated into the official itk repository.

I can provide the modified itkConvertPixelBuffer.* files for you to test 
  and integrate if you want.

Best regards,

Julien Michel


More information about the Insight-users mailing list