当前位置: 首页 > 网络知识

ITK 实例8 PNG图像进行不带滤波的二维导函数提取

时间:2026-01-29 09:25:26

使用itk::DerivativeImageFilter来计算一幅图像的偏微分——图像沿一个特定的坐标轴方向上的微分。

1 #include "itkImage.h" 2 #include "itkImageFileReader.h" 3 #include "itkImageFileWriter.h" 4 #include "itkRescaleIntensityImageFilter.h" 5 6 #include "itkDerivativeImageFilter.h"//不带滤波导函数头文件 7 8 int main( int argc, char * argv[] ) 9 17 /*接下来,必须定义输入、输出图像的像素类型,并使用它们实例化图像类型。注意:由 18 于导数值是可正可负的,所以选择的图像应具有符号类型是很重要的*/ 19 typedef float InputPixelType; 20 typedef float OutputPixelType; 21 22 const unsigned int Dimension = 2; 23 24 typedef itk::Image< InputPixelType, Dimension > InputImageType; 25 typedef itk::Image< OutputPixelType, Dimension > OutputImageType; 26 27 typedef itk::ImageFileReader< InputImageType > ReaderType; 28 typedef itk::ImageFileWriter< OutputImageType > WriterType; 29 //现在就可以使用图像类型来定义滤波器类型并创建滤波器对象 30 ReaderType::Pointer reader = ReaderType::New(); 31 WriterType::Pointer writer = WriterType::New(); 32 //输入图像 33 reader>SetFileName("BrainProtonDensitySlice.png"); 34 保存输出某方向(本例由于为二维图,所以为x轴或y轴)导数图像 35 //writer>SetFileName("BrainProtonDensitySlice_Derivative.png"); 36 37 typedef itk::DerivativeImageFilter< 38 InputImageType, OutputImageType > FilterType; 39 40 FilterType::Pointer filter = FilterType::New(); 41 //使用 SetOrder( ) 方式来选择微分的阶数。使用 SetDirection( ) 方式来选择计算微分的坐标方向 42 filter>SetOrder(atoi("1"));//选择一阶微分 43 filter>SetDirection( atoi("0") );//选择X方向 44 /*可以从任何其他滤波器得到这个滤波器的输入,例如一个 reader 。输出可以像一个 writer 45 一样传递给其他滤波器流水线。任何下游的滤波器调用 update 都可以触发微分滤波器的运 46 行*/ 47 filter>SetInput( reader>GetOutput() ); 48 /*writer>SetInput( filter>GetOutput() );*/ 49 /*writer>Update();*/ 50 51 typedef itk::Image< unsigned char, Dimension > WriteImageType; 52 53 typedef itk::RescaleIntensityImageFilter< 54 OutputImageType, 55 WriteImageType > NormalizeFilterType; 56 57 typedef itk::ImageFileWriter< WriteImageType > NormalizedWriterType; 58 59 NormalizeFilterType::Pointer normalizer = NormalizeFilterType::New(); 60 NormalizedWriterType::Pointer normalizedWriter = NormalizedWriterType::New(); 61 62 normalizer>SetInput( filter>GetOutput() ); normalizedWriter>SetInput( normalizer>GetOutput() ); 64 65 normalizer>SetOutputMinimum( 0 ); 66 normalizer>SetOutputMaximum( 255 ); 67 //导数图像(含有负数)进行(0255)线性标准化后图像 68 normalizedWriter>SetFileName("Derivative_normalizer_x_1.png"); 69 normalizedWriter>Update(); 70 71 return EXIT_SUCCESS; 72 }

下图阐述了 DerivativeImageFilter 对一个 MRI 脑部图像作用的效果。微分是沿 着 x 轴和y轴方向来计算的。从这个结果可以看出对图像中的噪声的敏感度是很明显的。



上一篇:ITK 实例8 孤立连接算法对脑部PNG图像进行二维分割
下一篇:OpenCV3.2图像分割 实例1:读取单张JPG图像(测试环境)
ITK
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素