[Insight-users] RegionOfInterestImageFilter Question

alex Dowson alexdowson at hotmail.com
Sat May 26 07:19:59 EDT 2012


Dear David

Here is my code and input image is 512x512 and gets error

#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageSeriesWriter.h"
#include "itkNumericSeriesFileNames.h"
#include "itkRescaleIntensityImageFilter.h"
#include "itkChangeInformationImageFilter.h"
#include "itkOrientImageFilter.h"
#include "itkMirrorPadImageFilter.h"
#include "itkRegionOfInterestImageFilter.h"
#include "itkConstantPadImageFilter.h"
#include "itkChangeInformationImageFilter.h"
#include "itkImageRegionConstIterator.h"
#include "itkImageRegionIterator.h"
#include "itkMultiplyByConstantImageFilter.h"


int main( int argc, char *argv[] )
{


    // Setup types
    typedef itk::Image<double, 2>   ImageType;
    typedef itk::Image<unsigned char, 2>   charType;

    typedef itk::ImageFileReader<ImageType>       ReaderType;
    ReaderType::Pointer reader = ReaderType::New();
    reader->SetFileName( "lena.jpg" );
    reader->Update();


    typedef itk::MirrorPadImageFilter< ImageType, ImageType > 
MirrorPadType;
    MirrorPadType::Pointer mirrorPadFilter = MirrorPadType::New();
    mirrorPadFilter->SetInput(reader->GetOutput());

    ImageType::SizeType upperfactors;
    upperfactors[0] = 20;
    upperfactors[1] = 30;

    ImageType::SizeType lowerfactors;
    lowerfactors[0] = 50;
    lowerfactors[1] = 40;


    mirrorPadFilter->SetPadLowerBound(lowerfactors);
    mirrorPadFilter->SetPadUpperBound(upperfactors);
    mirrorPadFilter->Update();


    ImageType::IndexType indexToDebug = 
mirrorPadFilter->GetOutput()->GetLargestPossibleRegion().GetIndex();
    ImageType::SizeType sizeToDebug = 
mirrorPadFilter->GetOutput()->GetLargestPossibleRegion().GetSize();

    std::cout << indexToDebug ;
    std::cout << sizeToDebug ;


    typedef itk::RegionOfInterestImageFilter< ImageType,ImageType> 
RoiCropType;
    RoiCropType::Pointer roiCropFilter = RoiCropType::New();
    roiCropFilter->SetInput(mirrorPadFilter->GetOutput());


    ImageType::IndexType index;
    index[0] = 15;
    index[1] = 0;

    ImageType::SizeType size;
    size[0] = 553;
    size[1] = 582;

    ImageType::RegionType roi;
    roi.SetIndex(index);
    roi.SetSize(size);

    roiCropFilter->SetRegionOfInterest(roi);

    try
    {
        roiCropFilter->Update();
    }
    catch (itk::ExceptionObject &ex)
    {
        std::cout << ex;
        return EXIT_FAILURE;
    }


    typedef itk::RescaleIntensityImageFilter<ImageType,charType> 
RescaleType;
    RescaleType::Pointer rescale = RescaleType::New();
    rescale->SetInput(roiCropFilter->GetOutput());
    rescale->SetOutputMinimum(0);
    rescale->SetOutputMaximum(255);


    typedef itk::ImageFileWriter<charType> ImageWriterType;
    ImageWriterType::Pointer writer = ImageWriterType::New();
    writer->SetFileName("out.jpg");
    writer->SetInput(rescale->GetOutput());


    try
    {
        writer->Update();
    }
    catch (itk::ExceptionObject &ex)
    {
        std::cout << ex;
        return EXIT_FAILURE;
    }



  return EXIT_SUCCESS;
}






-----Original Message----- 
From: David Doria
Sent: Saturday, May 26, 2012 4:22 PM
To: alex Dowson
Cc: itk
Subject: Re: [Insight-users] RegionOfInterestImageFilter Question

On Sat, May 26, 2012 at 5:47 AM, alex Dowson <alexdowson at hotmail.com> wrote:
> Hi
>
> I am using RegionOfInterestImageFilter file for cropping some region but 
> it
> gives me this error
>
> Description: Requested region is (at least partially) outside the largest
> possible region.
>
>
> I donot know what is problem here is my index and size for input and 
> output.
>
> Input LargestPossibleRegion:
> Index : [ –50,-40]   Size : [582,582]
>
> ROI Size :
> Index : [15,0]  Size: [ 553,582]
>
>
> Can anyone tell me what is doing I am wrong ? I am in already range for
> Region interest.
>
>
> Alex

That looks reasonable... but I've actually never used negative
indexes. Could you throw together a quick demo that sets up those
regions and demonstrates the error?

David 



More information about the Insight-users mailing list