《itk实用demo》-重采样 512*512-256*256

版权声明:本文为博主原创文章,转载请注明出处,谢谢 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);

猜你喜欢

转载自blog.csdn.net/rabbitbride/article/details/82422169
今日推荐