版权声明:本文为博主原创文章,转载请注明出处,谢谢 https://blog.csdn.net/rabbitbride/article/details/82422169
重采样
//---------------------------------------------------------------------------------------------
std::cout <<"----升采样----"<< std::endl;
typedef itk::ResampleImageFilter<ImageType, ImageType> ResampleImageFilterType;
ResampleImageFilterType::Pointer resample = ResampleImageFilterType::New();
resample->SetInput(multiplyFilter0->GetOutput());
typedef itk::AffineTransform<double,3> TransformType;
TransformType::Pointer transform = TransformType::New();
resample->SetTransform(transform);
typedef itk::NearestNeighborInterpolateImageFunction<ImageType,double> InterpolatorType;
InterpolatorType::Pointer interpolator = InterpolatorType::New();
resample->SetInterpolator(interpolator);
resample->SetDefaultPixelValue(0);
ImageType::SizeType size;
size = multiplyFilter0->GetOutput()->GetLargestPossibleRegion().GetSize();
ImageType::SizeType outputSize2;
outputSize2[0] = size[0]*2;
outputSize2[1] = size[1]*2;
outputSize2[2] = size[2]*2;
resample->SetSize(outputSize2);
double outputSpacing[3];
outputSpacing[0] = multiplyFilter0->GetOutput()->GetSpacing()[0] * (static_cast<double>(size[0]) / static_cast<double>(outputSize2[0]));
outputSpacing[1] = multiplyFilter0->GetOutput()->GetSpacing()[1] * (static_cast<double>(size[1]) / static_cast<double>(outputSize2[1]));
outputSpacing[2] = multiplyFilter0->GetOutput()->GetSpacing()[2] * (static_cast<double>(size[2]) / static_cast<double>(outputSize2[2]));
resample->SetOutputSpacing(outputSpacing);
double origin[3];
origin[0] = 0.0;
origin[1] = 0.0;
origin[2] = 0.0;
resample->SetOutputOrigin(origin);
ImageType::DirectionType direction;
direction.SetIdentity();
resample->SetOutputDirection(direction);