1 #include "itkImageFileReader.h"
2 #include "itkImageFileWriter.h"
3 #include "itkRescaleIntensityImageFilter.h"
4 #include "itkGradientMagnitudeRecursiveGaussianImageFilter.h"//带滤波梯度强度的头文件
5
6 int main( int argc, char * argv[] )
7 {
8 /*if( argc < 4 )
9 {
10 std::cerr << "Usage: " << std::endl;
11 std::cerr << argv[0] << " inputImageFile outputImageFile sigma" << std::endl;
12 return EXIT_FAILURE;
13 }*/
14 //类型必须基于输入和输出图像的像素进行实例化
15 typedef float InputPixelType;
16 typedef float OutputPixelType;
17 //使用它们就可以对输入、输出图像进行实例化
18 typedef itk::Image< InputPixelType, 3 > InputImageType;
19 typedef itk::Image< OutputPixelType, 3 > OutputImageType;
20 //现在同时使用输入和输出图像类型来实例化滤波器类型
21 typedef itk::ImageFileReader< InputImageType > ReaderType;
22 typedef itk::GradientMagnitudeRecursiveGaussianImageFilter<
23 InputImageType, OutputImageType > FilterType;
24 //通过调用 New( ) 方式来创建一个滤波器对象并将结果指向一个 itk::SmartPointer
25 ReaderType::Pointer reader = ReaderType::New();
26 //输入图像cuiti_256.mha
27 reader->SetFileName("cuiti_4.mha");//
28
29 FilterType::Pointer filter = FilterType::New();
30 //输入图像可以从另一个滤波器的输出得到。这里,源自于一个图像 reader 来得到
31 filter->SetInput( reader->GetOutput() );
32 //对高斯滤波核的标准差进行赋值
33 const double sigma = atof("1");
34 //现在设置高斯滤波核的标准差
35 filter->SetSigma(sigma);
36 //最后,通过调用 Update( ) 方式来执行滤波器
37 filter->Update();
38
39 typedef unsigned char WritePixelType;
40 typedef itk::Image< WritePixelType, 3 > WriteImageType;
41
42 typedef itk::RescaleIntensityImageFilter<
43 OutputImageType, WriteImageType > RescaleFilterType;
44
45 RescaleFilterType::Pointer rescaler = RescaleFilterType::New();
46
47 rescaler->SetOutputMinimum( 0 );
48 rescaler->SetOutputMaximum( 255 );
49
50 typedef itk::ImageFileWriter< WriteImageType > WriterType;
51
52 WriterType::Pointer writer = WriterType::New();
53 //输出强度图像
54 writer->SetFileName("GradientMagnitude_4.mha");
55 /*如果这个滤波器的输出已经连接到流水线中的其他滤波器,更新任何下游的滤波器将同
56 样触发这个滤波器的一个更新。例如,梯度强度滤波器可能连接到一个图像 writer*/
57 rescaler->SetInput( filter->GetOutput() );
58 writer->SetInput( rescaler->GetOutput() );
59 writer->Update();
60
61 return EXIT_SUCCESS;
62 }
输入三维图像(cuiti_4.mha):
切片1
切片2
切片3
切片4输出三维梯度强度图像(GradientMagnitude_4.mha):
切片1
切片2
切片3
切片4