View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0010008ITKpublic2009-12-07 17:582010-10-21 12:31
ReporterBradley Lowekamp 
Assigned ToBradley Lowekamp 
PrioritynormalSeveritymajorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0010008: Unable to stream with JoinSeriesImageFilter, due to 0 sized requested region causing updates
DescriptionWhen a JoinSeriesImageFilter is requested to stream, not all of it's inputs need to be updated. To accomplish this the filter sets the input's requested regions to the buffered region ( which is size 0 ). This results in propagation and execution of the upstream pipeline with said 0 sized region. Which then causes excessive execution at best but likely exceptions of erroneous behavior for upstream filters.

Many filters do not handle 0 size regions correctly, including ImageFileReader. Also the ImageRegion appears not to be robust with empty sizes regions as well.

I contend that the pipeline should not execute ProcessObjects who's output has a zero size requested region. But the UpdateOutputInformation and PropagateRequestedRegion should.

By setting the Image's requested region to 0 size a filter is explicitly requesting that no pixel be updated. Therefore, there is no need to execute the up stream filters.

The attach test shows how this bug results in the source image being read N^2 times where N is the number of z slices. ( the input and output must be of metaImage type for IO streaming to work).
Additional InformationThe bug can be resolved by adding the following method to ImageBase::

template<unsigned int VImageDimension>
void
ImageBase<VImageDimension>
::UpdateOutputData()
{
  if( this->GetRequestedRegion().GetNumberOfPixels() > 0
      || this->GetLargestPossibleRegion().GetNumberOfPixels() == 0 )
    {
    this->Superclass::UpdateOutputData();
    }
  else
    {
    // itkWarningMacro(<<"Not executing UpdateOutputData RequestedRegion:" << this->GetRequestedRegion() << " BufferedRegion: " << this->GetBufferedRegion());
    }
}

The check for the empty LargestPossibleRegion's size is needed because, some test expect UpdateOutputData to throw an exception when no input has been set.
TagsNo tags attached.
Resolution Date
Sprint
Sprint Status
Attached Filescxx file icon itkJoinSeriesImageFilterStreamingTest.cxx [^] (3,421 bytes) 2009-12-07 17:58

 Relationships

  Notes
(0018871)
Bradley Lowekamp (developer)
2009-12-14 14:41

Committed Patch:

http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkImageBase.txx.diff?cvsroot=Insight&r1=1.60&r2=1.61 [^]
http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkImageBase.h.diff?cvsroot=Insight&r1=1.82&r2=1.83 [^]

Committed Test (not enabled yet):
http://public.kitware.com/cgi-bin/viewcvs.cgi/Testing/Code/BasicFilters/itkJoinSeriesImageFilterStreamingTest.cxx?cvsroot=Insight&rev=1.1&view=markup [^]
(0018986)
Bradley Lowekamp (developer)
2009-12-23 10:31
edited on: 2010-01-15 09:26

Committed patch to ImageFileReader so that is will not throw an exception with a zero sized region:
http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/IO/itkImageFileReader.txx?root=Insight&r1=1.88&r2=1.89&sortby=date [^]

(0019146)
Bradley Lowekamp (developer)
2010-01-15 09:27

The committed patch appears to have fixed the issue.

 Issue History
Date Modified Username Field Change
2009-12-07 17:58 Bradley Lowekamp New Issue
2009-12-07 17:58 Bradley Lowekamp File Added: itkJoinSeriesImageFilterStreamingTest.cxx
2009-12-07 18:01 Bradley Lowekamp Description Updated
2009-12-07 18:01 Bradley Lowekamp Additional Information Updated
2009-12-07 18:02 Bradley Lowekamp Additional Information Updated
2009-12-14 10:45 Bradley Lowekamp Status new => assigned
2009-12-14 10:45 Bradley Lowekamp Assigned To => Bradley Lowekamp
2009-12-14 14:41 Bradley Lowekamp Note Added: 0018871
2009-12-23 10:31 Bradley Lowekamp Note Added: 0018986
2010-01-15 09:26 Bradley Lowekamp Note Edited: 0018986
2010-01-15 09:27 Bradley Lowekamp Note Added: 0019146
2010-01-15 09:27 Bradley Lowekamp Status assigned => resolved
2010-01-15 09:27 Bradley Lowekamp Resolution open => fixed
2010-10-21 12:31 Gabe Hart Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team