[Insight-users] RequestedRegion (ImageToImageFilter)
    Torsten Schröer 
    torsten.schroeer at igd.fraunhofer.de
       
    Wed May 25 04:42:13 EDT 2005
    
    
  
Hello ITK friends,
I subclassed ImageToImageFilter to write an region growing based filter. 
Now I try to limit the region growing to a defined portion of the input 
image. I recognized the DataObjects SetRequestedRegion method as well as 
EnlargeOutputRequestedRegion, GenerateOutputRequestedRegion and 
GenerateInputRequestedRegion. But I don't understand how this works.
Examlpe:
// --- EXAMPLE BEGIN ---
// READING THE INPUT IMAGE:
   typedef unsigned short InputPixelType;
   typedef itk::Image< InputPixelType, 2 > InputImageType;
   typedef itk::ImageFileReader< InputImageType > ReaderType;
   ReaderType::Pointer reader = ReaderType::New();
   reader->SetFileName( av[1] );
   try {
     reader->Update();
   } catch (itk::ExceptionObject & e) {
     std::cerr << "exception in file reader " << std::endl;
     std::cerr << e.GetDescription() << std::endl;
     std::cerr << e.GetLocation() << std::endl;
     return EXIT_FAILURE;
   }
// PROCESSING THE IMAGE:
   InputImageType::Pointer image = reader->GetOutput();
// REQUESTED REGION:
   typedef InputImageType::IndexType IndexType;
   typedef InputImageType::SizeType SizeType;
   typedef InputImageType::RegionType RegionType;
   RegionType region;
   SizeType size;
   IndexType origin;
   origin[0] = 25;
   origin[1] = 25;
   size[0]   = 50;
   size[1]   = 50;
   image->SetRequestedRegion( region );
   image->PropagateRequestedRegion();
   typedef unsigned char OutputPixelType;
   typedef itk::Image< OutputPixelType, 2 > OutputImageType;
   typedef itk::MyRegionGrowingFilter< InputImageType, OutputImageType > 
MyRegionGrowingFilterType;
   MyRegionGrowingFilterType::Pointer filterRG = 
RegionGrowingHojjaFilterType::New();
   filterRG->SetInput( image );
   filterRG->Update( );
// SOME VISUALIZATION CODE (VTK)
...
// --- EXAMPLE END ---
Now, at the filters GenerateData method, I try to evaluate the 
RequestedRegionsSize:
typename Superclass::InputImageConstPointer inputImage  = this->GetInput();
SizeType size = inputImage->GetRequestedRegion().GetSize();
Determiated size at this point is always the entire image size and not 
the portion of the image set by SetRequestedRegion().
Any Ideas appreciated!
BTW: Is there a generic technique setting up specialized Neighborhoods 
(N4, N8 in 2D-data and N6, N18, N26 in 3D-data and so on)? 
RadiusType.Fill(1) always uses the entire Neighborhood (N8, N26 ...) and 
OffsetType is specific to image's dimension, which is bad for a generic 
filter programming. I need something like generic cross neighborhood.
Thanks a lot,
Torsten.
    
    
More information about the Insight-users
mailing list