[Insight-users] about itkResampleImageFilter

Yixun Liu yxliu at fudan.edu.cn
Sat Jul 29 21:14:28 EDT 2006


Thank you for your reply!

I have used VTK and ITK for three years and I cannot make mistake like this.:-). I added some codes as shown below. Now everything is ok.  However, why not itk automatically change the request region when possible largest region change?

Regards,

Yixun Liu



typedef itk::Image<short, 3> ImageType;
typedef itk::ResampleImageFilter<ImageType, ImageType>  ResampleFilterType;
ResampleFilterType::Pointer resampler = ResampleFilterType::New();
 
resampler->SetTransform( transform );
// resampler->SetInterpolator(this->interpolator);
resampler->SetInput( movingImage );
size =  fixedImage->GetLargestPossibleRegion().GetSize();
size[2] = 1;
index[2] = 24;
index[0] = index[1] = 0;
this->resampler->SetSize(size);
this->resampler->SetOutputStartIndex(index);
this->resampler->SetOutputOrigin(  fixedImage->GetOrigin() );
this->resampler->SetOutputSpacing( fixedImage->GetSpacing() );
this->resampler->SetDefaultPixelValue( 100 );

 region.SetSize(size);//added code
 region.SetIndex(index);//added code
 this->resamplerZ->GetOutput()->SetRegions(region);//added code


this->resampler->Update();


  


----- Original Message ----- 
From: "Luis Ibanez" <luis.ibanez at kitware.com>
To: "Yixun Liu" <yxliu at fudan.edu.cn>
Cc: "ITK" <insight-users at itk.org>
Sent: Sunday, July 30, 2006 6:12 AM
Subject: Re: [Insight-users] about itkResampleImageFilter


> Hi Yixun,
> 
> It is a common mistake to get values from the Image before it has been
> read with a reader.
> 
> In your code you are using the methods
> 
>   GetSpacing()
>   GetOrigin()
>   GetLargestPossibleRegion()
> 
> 
> in the fixed image.
> 
> It is very likely that you have not updated yet the reader of the
> fixed image, and therefore the image lacks any information at the
> moment you are invoking all these methods.
> 
> 
> 
>   Regards,
> 
> 
> 
>       Luis
> 
> 
> 
> -----------------------
> Yixun Liu wrote:
>> Hi,
>>  
>> The fixedImage and movingImage both are 256 x 256 x 48. I use the grid 
>> with size 256 x 256 x 1 and start index (0,0,24) as the resample grid. I 
>> do as below,
>>  
>> typedef itk::Image<short, 3> ImageType;
>> typedef itk::ResampleImageFilter<ImageType, ImageType>  ResampleFilterType;
>> ResampleFilterType::Pointer resampler = ResampleFilterType::New();
>>  
>>  resampler->SetTransform( transform );
>> // resampler->SetInterpolator(this->interpolator);
>>  resampler->SetInput( movingImage );
>>  size =  fixedImage->GetLargestPossibleRegion().GetSize();
>>  size[2] = 1;
>>  index[2] = 24;
>>  index[0] = index[1] = 0;
>>  this->resampler->SetSize(size);
>>  this->resampler->SetOutputStartIndex(index);
>>  this->resampler->SetOutputOrigin(  fixedImage->GetOrigin() );
>>  this->resampler->SetOutputSpacing( fixedImage->GetSpacing() );
>>  this->resampler->SetDefaultPixelValue( 100 );
>>  this->resampler->Update();
>>  
>> After resampled I change the index from (0,0,24) to (0,0,16). However 
>> itk exception throwed. I debug into ITK and found the 
>> possiblelargestregion change from (0,0,24) to (0,0,16), but the 
>> requestregion still is (0,0,24). The requestregion is not in the range 
>> of the possiblelargestregion, so the exception throw. Why not ITK 
>> automatically change the requestregion when the largestpossibleregion 
>> change?
>>  
>>  
>>  
>> Regards,
>>  
>> Yixun Liu
>> 
>>  
>> 
>> 
>> ------------------------------------------------------------------------
>> 
>> _______________________________________________
>> Insight-users mailing list
>> Insight-users at itk.org
>> http://www.itk.org/mailman/listinfo/insight-users
> 
>


More information about the Insight-users mailing list