ITK系列10_ MHA格式文件进行三维线性映射

实例10 MHA格式文件进行三维线性映射

#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
//线性映射头文件
#include "itkCastImageFilter.h"
#include "itkRescaleIntensityImageFilter.h"
#include "itkNormalizeImageFilter.h"

int main( int argc, char * argv[] )
{
 /* if( argc < 2 )
    {
    std::cerr << "Usage: " << std::endl;
    std::cerr << argv[0] << "   inputImageFile " << std::endl;
    return EXIT_FAILURE;
    }*/
//我们定义输入和输出图像的像素类型
  typedef   float    InputPixelType;
  //typedef   float            OutputPixelType;
  typedef  unsigned char  OutputPixelType;
  //然后,定义输入和输出图像类型
  typedef itk::Image< InputPixelType,  3 >   InputImageType;
  typedef itk::Image< OutputPixelType, 3 >   OutputImageType;
 
  typedef itk::ImageFileReader< InputImageType >  ReaderType;//读文件类型
  typedef itk::ImageFileWriter< OutputImageType >  WriterType;//写文件类型

  //使用定义的图像类型来对滤波器进行实例化
  typedef itk::RescaleIntensityImageFilter<
               InputImageType, OutputImageType >  RescaleFilterType;

  ReaderType::Pointer reader = ReaderType::New();//实例化对象reader
  WriterType::Pointer writer = WriterType::New();//实例化对象writer
 
  //通过调用 New( ) 操作来创建对象滤波器并将结果指向 itk::SmartPointers 
  RescaleFilterType::Pointer    rescaleFilter    = RescaleFilterType::New();

  reader->SetFileName( "CT_215.mha" );
  //现在将一个 reader 滤波器 ( 这里并未展示它的创建 ) 的输出作为输入连接到投射滤波器(四种)
  rescaleFilter->SetInput( reader->GetOutput() );//rescaleFilter滤波器
  /*接下来我们设置每个滤波器需要的参数。 CastImageFilter 和 NormalizeImageFilter 不需要
      任何参数。另一方面, RescaleIntensityImageFilter 需要用户提供想得到的输出图像像素值的
      最大最小值,这可以通过使用 SetOutputMinimum() 和 SetOutputMaximum() 方式来实现,如
      下所示*/
  rescaleFilter->SetOutputMinimum(  0 );
  rescaleFilter->SetOutputMaximum( 255 );
  
  writer->SetInput(rescaleFilter->GetOutput());//rescaleFilter滤波器
  //最后,通过调用 Update() 方式来运行这些滤波器
  //写文件,输出线性映射四种滤波效果
  writer->SetFileName("CT_215-RescaleIntensity0_255.mha");

  writer->Update();

  return EXIT_SUCCESS;
}

                                                        输入215张CT股骨图像数据(像素范围为-3024~+3071)(CT_215.mha)

                输出215张通过线性映射的CT股骨图像数据(像素范围为0~+255)(CT_215-RescaleIntensity0_255.mha)

 

ITK系列目录:

1 ITK图像数据表达之图像

2 ITK图像处理之图像滤波

3 ITK图像处理之图像分割

注:例程配套素材见系列目录

你可能感兴趣的:(ITK,ITK,MHA文件,三维线性映射,C++)