《itk实用demo》-升采样 256---512

升采样 256—512

//函数化    升采样 重置大小
void resize(ImageType::Pointer input,ImageType::Pointer src,ImageType::Pointer* dst)
{
 std::cout <<"----升采样----"<< std::endl;
 typedef itk::ResampleImageFilter<ImageType, ImageType> ResampleImageFilterType;
 ResampleImageFilterType::Pointer resample = ResampleImageFilterType::New();
 resample->SetInput(input);

 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);
 resample->SetSize(src->GetLargestPossibleRegion().GetSize());
 resample->SetOutputSpacing(src->GetSpacing());
 resample->SetOutputOrigin(src->GetOrigin());

 ImageType::DirectionType direction;
 direction.SetIdentity();
 resample->SetOutputDirection(direction);
     try
    {    
       resample->UpdateLargestPossibleRegion();
    }
        catch( itk::ExceptionObject & exp )
    {
      cerr << "Exception caught !" << std::endl;
      cerr << exp << std::endl;
    }
       *dst = resample->GetOutput();
} 
//用法
  ImageType::Pointer dst = ImageType::New();
  resize(castFilter->GetOutput(),original->GetOutput(),&dst); 

  int dims_v[3];
  dims_v[0] = (int)( dst->GetLargestPossibleRegion().GetSize()[0]);
  dims_v[1] = (int)( dst->GetLargestPossibleRegion().GetSize()[1]);
  dims_v[2] = (int)( dst->GetLargestPossibleRegion().GetSize()[2]);
--------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------------
  std::cout <<"----升采样----"<< std::endl;
  typedef itk::ResampleImageFilter<ImageType, ImageType> ResampleImageFilterType;
  ResampleImageFilterType::Pointer resample = ResampleImageFilterType::New();
  resample->SetInput(original_aortic->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 = original_heart->GetOutput()->GetLargestPossibleRegion().GetSize();
  ImageType::SizeType outputSize2;
  outputSize2[0] = size[0];
  outputSize2[1] = size[1];
  outputSize2[2] = size[2];
  resample->SetSize(outputSize2);

  double outputSpacing[3];
  outputSpacing[0] = original_heart->GetOutput()->GetSpacing()[0];
  outputSpacing[1] = original_heart->GetOutput()->GetSpacing()[1];    
  outputSpacing[2] = original_heart->GetOutput()->GetSpacing()[2];
  resample->SetOutputSpacing(outputSpacing);

  double origin[3];
  origin[0] = original_heart->GetOutput()->GetOrigin()[0];
  origin[1] = original_heart->GetOutput()->GetOrigin()[1];
  origin[2] = original_heart->GetOutput()->GetOrigin()[2];
  resample->SetOutputOrigin(origin);

  ImageType::DirectionType direction;
  direction.SetIdentity();
  resample->SetOutputDirection(direction);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值