[Insight-users] ResampleImageFilter : blank result from upsampling x2
Vaaksiainen
vaaksiainen at gmail.com
Wed Sep 25 04:02:47 EDT 2013
Hello yall
I'm suffering with ResampleImageFilter. In particular, upsampling an image
produces all zero image (or whatever defaultpixelvalue happens to be) and I
just can't figure out why?
Basically, I'm writing a composite filter, which downsamples the image for
some internal purpose as follows (purposely using linear interpolation, not
Gaussian):
Some times I explicitly added IdentityTransform and
LinearInterpolateImageFunction, but as far as I know, they are defaults so
I left them out. If I comment out pyramid up (preprocessor if statement),
then I get the actual downsampled image from my filter as output. So the
only problem is upsampling.
I have examined the output from 'filter' and it has spacing as expected
(twice the size of original input), origin at zero, directions following
cartesian axes and image size half the original. So nothing there... As you
see, have tried have tried multiple combinations for pyrup parameters, none
seems working.
Help appreciated.
Best
-Vaaksiainen
BTW, using ITK 4.4.1, Visual Studio 9, Windows 7 x64.
******
typedef itk::ResampleImageFilter<
TImage, TImage, float > ResamplerType;
typedef MyOwnImageToImageFilter<TImage,TImage>
MyOwnImageToImageFilter;
typename TImage::SpacingType spacing = this->GetInput()->GetSpacing();
typename TImage::SizeType size =
this->GetOutput()->GetRequestedRegion().GetSize();
// e.g. m_Decimation = .5
for ( unsigned int i = 0; i < TImage::ImageDimension; ++i)
{
spacing[i] /= m_Decimation;
size[i] = (unsigned int)( (double)size[i] * m_Decimation );
}
ResamplerType::Pointer pyrdown = ResamplerType::New();
pyrdown->SetOutputSpacing( spacing );
pyrdown->SetSize( size );
pyrdown->SetInput( this->GetInput() );
MyOwnImageToImageFilter::Pointer filter = MyOwnImageToImageFilter::New();
// set filter parameters
filter->SetInput( pyrdown->GetOutput() );
#if 1
ResamplerType::Pointer pyrup = ResamplerType::New();
//pyrup->SetOutputSpacing( this->GetInput()->GetSpacing() );
pyrup->SetUseReferenceImage( 1 );
pyrup->SetReferenceImage( this->GetInput() );
//pyrup->SetOutputStartIndex( roi.GetIndex() );
//pyrup->SetSize( this->GetOutput()->GetRequestedRegion().GetSize() );
pyrup->SetInput( filter->GetOutput() );
pyrup->SetDefaultPixelValue( 14.0f );
#else
MyOwnImageToImageFilter::Pointer pyrup = filter;
#endif
pyrup->Update();
this->SetNthOutput( 0, pyrup->GetOutput() );
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20130925/cbb54351/attachment.htm>
More information about the Insight-users
mailing list