[Insight-users] WG: Problem with the warp image filter
Merrem, Andreas
andreas.merrem at medma.uni-heidelberg.de
Wed Jun 9 14:34:13 EDT 2010
Sorry, I guess I had a little format problem in the code. It should be:
typedef itk::WarpImageFilter <ImageType, ImageType, DeformationFieldType> ResamplerType;
typedef itk::LinearInterpolateImageFunction <ImageType, double> LinearInterpolatorType;
LinearInterpolatorType::Pointer LinearInterpolator = LinearInterpolatorType::New();
ResamplerType::Pointer resampler = ResamplerType::New();
ImageType::Pointer ResampledImage = ImageType::New();
resampler-> SetInterpolator(LinearInterpolator);
resampler-> SetOutputSpacing (InputImage->GetSpacing());
resampler-> SetOutputOrigin(InputImage->GetOrigin());
resampler-> SetDeformationField (DeformationField);
resampler-> SetInput (InputImage);
resampler-> Update();
ResampledImage = resampler-> GetOutput();
Anyway, those typos were not the problem in my program.
Thanks,
Andreas
-----Ursprüngliche Nachricht-----
Von: Merrem, Andreas
Gesendet: Mittwoch, 9. Juni 2010 20:27
An: 'Luis Ibanez'; insight-users at itk.org
Betreff: Problem with the warp image filter
Hi Luis (I'm very happy about help from anyone who has an idea),
Thanks a lot for your previous help.
I have tried to use the itk::WarpImageFilter on a 3D DICOM volume with origin [-199.071, 3.32761, 170.176] and spacing [1.5626, 1.5625, 4]. For testing, I used a deformation field filled with zero vectors to output the same image I put in.
It works perfectly for 2D png images with spacing [1,1] and origin [0,0]. However, when I try to warp the dicom volume with the exact same procedure, the resampled image contains only pixel values of 0. In both cases, I set the origin and spacing of the deformation field and of the output image equal to those of the input image.
I have no idea what causes this problem, and I have verified that it has nothing to do with reading or writing the image files.
I set up the filter in the following way:
typedef itk::WarpImageFilter <ImageType, ImageType, DeformationFieldType>ResamplerType;
typedef itk::LinearInterpolateImageFunction <ImageType, double> LinearInterpolatorType;
LinearInterpolatorType::Pointer LinearInterpolator = LinearInterpolatorType::New(); ResamplerType::Pointer resampler = ResamplerType::New(); ImageType::Pointer ResampledImage = ImageType::New();
resampler-> SetInterpolator(LinearInterpolator);
resampler-> SetOutputSpacing (InputImage->GetSpacing()); SetOutputOrigin
resampler-> (InputImage->GetOrigin()); SetDeformationField
resampler-> (DeformationField); SetInput (InputImage); Update();
ResampledImage = resampler-> GetOutput();
This is really a bit mysterious to me, so if you see what I am missing, that would be very helpful.
Best regards,
Andreas
More information about the Insight-users
mailing list