首页 > 其他分享 >ITK 实例5 PNG图像进行不带滤波的二维梯度强度提取

ITK 实例5 PNG图像进行不带滤波的二维梯度强度提取

时间:2023-08-16 14:34:19浏览次数:42  
标签:滤波器 typedef ITK 梯度 强度 滤波 图像 PNG itk

  图像梯度的强度广泛地应用在图像分析中,主要用来帮助检测对象轮廓和分离均匀区域。 itk::GradientMagnitudeImageFilter 使用一个简单的有限差分方式来计算图像中每个像素位置的梯度强度。例如:在二维情况下计算等同于将图像使用模块类型,如下所示:然后计算它们的平方和并计算和的平方根。

 1 #include "itkImage.h"
 2 #include "itkImageFileReader.h"
 3 #include "itkImageFileWriter.h"
 4 #include "itkRescaleIntensityImageFilter.h"
 5 #include "itkGradientMagnitudeImageFilter.h"//梯度强度头文件
 6  
 7 int main( int argc, char * argv[] )
 8 {
 9  /* if( argc < 3 )
10     {
11     std::cerr << "Usage: " << std::endl;
12     std::cerr << argv[0] << "  inputImageFile  outputImageFile " << std::endl;
13     return EXIT_FAILURE;
14     }*/
15   //选择输入和输出图像的像素类型:
16   typedef    float    InputPixelType;
17   typedef    float    OutputPixelType;
18   //使用像素类型可以定义输入、输出图像类型
19   typedef itk::Image< InputPixelType,  2 >   InputImageType;
20   typedef itk::Image< OutputPixelType, 2 >   OutputImageType;
21  
22   typedef itk::ImageFileReader< InputImageType >  ReaderType;
23   //通过定义输入输出图像类型来定义梯度强度的类型:
24   typedef itk::GradientMagnitudeImageFilter<
25                InputImageType, OutputImageType >  FilterType;
26   //通过调用 New( ) 方式来创建一个滤波器对象并将结果指向一个 itk::SmartPointer :
27   ReaderType::Pointer reader = ReaderType::New();
28   reader->SetFileName("BrainProtonDensitySlice.png");
29  
30   FilterType::Pointer filter = FilterType::New();
31   //输入图像可以从另一个滤波器的输出得到。这里,源于一个图像 reader 来得到:
32   filter->SetInput( reader->GetOutput() );
33   //最后,通过调用 Update( ) 方式来执行滤波器:
34   filter->Update();
35   
36  
37   typedef unsigned char                          WritePixelType;
38   typedef itk::Image< WritePixelType, 2 >        WriteImageType;
39   typedef itk::RescaleIntensityImageFilter<
40                OutputImageType, WriteImageType > RescaleFilterType;
41  
42   RescaleFilterType::Pointer rescaler = RescaleFilterType::New();
43  
44   rescaler->SetOutputMinimum(   0 );
45   rescaler->SetOutputMaximum( 255 );
46  
47   typedef itk::ImageFileWriter< WriteImageType >  WriterType;
48   WriterType::Pointer writer = WriterType::New();
49   writer->SetFileName("GradientMagnitude_out.png");
50   //如果这个滤波器的输出已经连接到流水线中的其他滤波器,更新任何下游的滤波器将同
51   //样触发这个滤波器的一个更新。例如,梯度强度滤波器可能连接到一个图像 writer 
52   rescaler->SetInput( filter->GetOutput() );
53   writer->SetInput( rescaler->GetOutput() );
54   writer->Update();
55  
56   return EXIT_SUCCESS;
57 }

 输入图像        

 梯度强度图

  上图阐述了梯度强度滤波器对一个 MRI 脑部图像切片作用的效果。这个图片展示了这个滤波器对噪声数据的灵敏性(即对噪声灵敏)。由于梯度强度图像的动态范围往往比输入图像的动态范围要小,所以必须注意选择用来表达输出图像的图像类型。通常,这个规则会产生异常,例如,合成图像包含高对比对象。这个滤波器在计算梯度前不会对图像进行任何滤波。因此这个结果对噪声非常敏感,而且并不一定是尺度空间分析的最佳选择。

标签:滤波器,typedef,ITK,梯度,强度,滤波,图像,PNG,itk
From: https://www.cnblogs.com/ybqjymy/p/17633940.html

相关文章

  • ITK 实例6 PNG图像进行带滤波的二维梯度强度提取
    微分是对一个数字数据的不规则操作。实际中可以方便地定义一个执行微分的比例。在执行这样的滤波时使用一个高斯核被认为是最便捷的选择。通过选择一个特定的高斯标准差(σ),就可以选择一个相应的比例来去除通常被认为是噪声的高频部分。itk::GradientMagnitudeRecursiveG......
  • ITK 实例7 向量图像(将一个向量存储到一个图像像素中)
    1#include"itkVector.h"//向量类的头文件2#include"itkImage.h"34intmain(int,char*[])5{6/*向量类的使用是在基于空间中代表坐标和维数的类型之上进行模板化的。在此例中,向7量的长度和图像长度相匹配,但是并不是完全相同。我们可以用一个三维的向......
  • ITK 实例6 RGB图像像素色彩成分的访问
    1#include"itkImage.h"2#include"itkImageFileReader.h"3//为了使用itk::RGBPixel类,包含头文件4#include"itkRGBPixel.h"5//在ITK中如何表示RGB图像。6intmain(int,char*argv[])7{8//RGBPixeld类的使用是基于用来代表红、绿和蓝的像素......
  • ITK 实例8 从缓冲器中输入图像数据
    1#include"itkImage.h"2#include"itkImportImageFilter.h"//包含ImportImageFilter(图像像素数据导入缓冲器)类的头文件3#include"itkImageFileWriter.h"4//这个例子阐述了如何将数据输入到itk::Image类中。这在同其他软件系统相连时更加有5//用。许多......
  • ITK 实例1 ITK环境测试
    1#include"itkImage.h"//包含图像类的头文件2#include<iostream>34intmain()5{6//创建一个三维、像素是无符号短字符数据类型的图像7typedefitk::Image<unsignedshort,3>ImageType;8//调用New()操作创建图像并将结果分配到itk::......
  • ITK 实例2 创建图像(手动创建一个itk::Image类)
    1#include"itkImage.h"//图像类的头文件23//这个例子阐述了如何人为地创建一个itk::Image类,下面是对图像类进行实例化、声明4//和创建的最简单程序代码。56intmain(int,char*[])7{8//创建一个三维、像素是无符号短字符数据类型的图像9typ......
  • VTK 实例45:理想低通滤波器(频域处理)
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageData.h>7#include<vtkImageIdealLowPass.h>8#include&l......
  • VTK 实例46:巴特沃斯低通滤波器(频域处理)
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageData.h>7#include<vtkImageButterworthLowPass.h>8#incl......
  • VTK 实例47:理想高通滤波器(频域处理)
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageData.h>7#include<vtkImageIdealHighPass.h>8#include&......
  • VTK 实例48:巴沃斯特高通滤波器(频域处理)
    1#include"vtkAutoInit.h"2VTK_MODULE_INIT(vtkRenderingOpenGL2);3VTK_MODULE_INIT(vtkInteractionStyle);45#include<vtkSmartPointer.h>6#include<vtkImageData.h>7#include<vtkImageButterworthHighPass.h>8#inc......