[Insight-developers] backward compatibility issue with new streaming support

M.Staring at lumc.nl M.Staring at lumc.nl
Fri Dec 11 10:00:59 EST 2009


Dear developers,

In our institute (LKEB) we sometimes use the ITK image IO classes
without using the itk::ImageFileReader. (This way we can e.g. directly
read in the data buffer into our own image type: lkebImage.)

We recently updated the underlying ITK to a more recent version, and
found out that it did not work anymore. The reason it does not work are
the changes that were made to support streaming. A new member m_IORegion
was added to the class ImageIOBase; it's constructor initializes that
member to a 2D region of size [0 0]. The framework now expects that this
m_IORegion is set externally, which in the ITK is done in the
ImageFileReader (line 389 of the txx). However, we do not use the
ImageFileReader and therefore our code breaks.

To fix this issue I would expect that the m_IORegion is by default set
to the largest possible region (or the requested region) and not to size
0. I'm not sure if it is the best place to fix this, but this could be
fixed by adapting the Read() or ReadImageInformation()-functions of all
ImageIO's that support streaming. For example MetaImageIO::Read() could
check if m_IORegion was manually set, and if not set it to the requested
region. Something like:

if ( !m_IORegionManuallySet ) // or: if ( m_IORegion.GetSize() == 0 )
{
  m_IORegion = m_RequestedRegion; // or: m_IORegion =
m_LargestPossibleRegion;
}

and then proceed ...

What do you think ?

Regards,

Marius


Marius Staring, PhD
Division of Image Processing (LKEB)
Department of Radiology
Leiden University Medical Center
PO Box 9600, 2300 RC Leiden, The Netherlands
phone: +31 (0)71 526 1106, fax: +31 (0)71 526 6801
m.staring at lumc.nl
 


More information about the Insight-developers mailing list