[Insight-users] Streaming and InPlaceImageFilter

Simon Rit simon.rit at creatis.insa-lyon.fr
Mon Mar 21 13:04:54 EDT 2011


Hi,
I have filed bug #0011993
(http://public.kitware.com/Bug/view.php?id=11993) but I can not assign
it to you.
I agree with your reader->Update() remark in this simple test case.
However, in some cases, the input buffered region is automatically
enlarged and it would not help. This was my case in a much more
complicated situation...
Thanks for looking into it!
Simon

On Mon, Mar 21, 2011 at 3:19 PM, Bradley Lowekamp
<blowekamp at mail.nih.gov> wrote:
> Hello Simon,
> Can you please report this as  a bug in the bug tracker:
> http://www.vtk.org/Wiki/ITK_Procedure_for_Contributing_Bug_Fixes#Entering_a_bug
> You can assign it to me also.
> BTW, if you don't call "reader->Update()" I believe it would work.
> Thanks,
> Brad
> On Mar 21, 2011, at 10:06 AM, Simon Rit wrote:
>
> Hi,
> I have a problem with InPlaceImageFilter when using streaming. When I
> connect the input of an InPlaceImageFilter to a filter that has been
> updated and try to write the output of this filter with
> SetNumberOfStreamDivisions set e.g. to 2, only the first half of the
> filter is updated. I have written a simple test case to reproduce this
> problem (using ITK 3.20):
>
> ////////////////////////////////////////////////////////////////////////////////////////
> #include <itkImageFileReader.h>
> #include <itkImageFileWriter.h>
> #include <itkMultiplyByConstantImageFilter.h>
>
> int main(int argc, char * argv[])
> {
>  typedef double PixelType;
>  const unsigned int Dimension = 3;
>  typedef itk::Image< PixelType, Dimension > ImageType;
>
>  typedef itk::ImageFileReader<ImageType> ReaderType;
>  ReaderType::Pointer reader = ReaderType::New();
>  reader->SetFileName(argv[1]);
>  reader->Update();
>
>  typedef itk::MultiplyByConstantImageFilter< ImageType, PixelType,
> ImageType > FilterType;
>  FilterType::Pointer filter = FilterType::New();
>  filter->SetInput(reader->GetOutput());
>  filter->SetConstant(0.);
>  filter->SetInPlace(atoi(argv[2]));
>
>  typedef itk::ImageFileWriter< ImageType > WriterType;
>  WriterType::Pointer writer = WriterType::New();
>  writer->SetInput(filter->GetOutput());
>  writer->SetFileName(argv[3]);
>  writer->SetNumberOfStreamDivisions(2);
>  writer->Update();
>
>  return EXIT_SUCCESS;
> }
> ////////////////////////////////////////////////////////////////////////////////////////
>
> To run this testPgm, compile it, use a test image input.mha and run
> successively:
> $ testPgm input.mha 0 output0.mha
> $ testPgm input.mha 1 output1.mha
> output0.mha and output1.mha should be the same but are not: only half
> of output1.mha is set to 0 instead of the full image.
>
> I believe that the reason is the test "if (bufferedRegion ==
> largestRegion)" in itkImageFileWriter.txx. With InPlaceImageFilter,
> the region might be buffered but only the requested region has been
> updated...
> Am I missing something? Is this a (known) bug? Any easy fix?
> Obviously, I can disable the inplace capability but I believe this
> should be fixed since it concerns many filters.
> Thanks in advance for your help!
> Simon
>
> NB:  I had similar problems with StreamingImageFilter but I did not
> investigate where the problem was in this case.
> _____________________________________
> 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://www.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-users
>
> ========================================================
>
> Bradley Lowekamp
>
> Lockheed Martin Contractor for
>
> Office of High Performance Computing and Communications
>
> National Library of Medicine
>
> blowekamp at mail.nih.gov
>
>


More information about the Insight-users mailing list