ITK系列13_ PNG图像进行不带滤波的二维梯度强度提取

梯度

梯度在一些背景下表示梯度向量而在其他情况下可以表示梯度向量的大小。 ITK 滤波器在涉及这个概念时通过强度这个概念来区别该不明确概念。 ITK 提供可以计算图像梯度向量图像强度大小的滤波器。

方向导数:一个函数沿指定方向的变化率。

梯度:方向导数变化最大的方向。

 

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

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

                                                                             

#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkRescaleIntensityImageFilter.h"
#include "itkGradientMagnitudeImageFilter.h"//梯度强度头文件

int main( int argc, char * argv[] )
{
 /* if( argc < 3 )
    {
    std::cerr << "Usage: " << std::endl;
    std::cerr << argv[0] << "  inputImageFile  outputImageFile " << std::endl;
    return EXIT_FAILURE;
    }*/
  //选择输入和输出图像的像素类型:
  typedef    float    InputPixelType;
  typedef    float    OutputPixelType;
  //使用像素类型可以定义输入、输出图像类型
  typedef itk::Image< InputPixelType,  2 >   InputImageType;
  typedef itk::Image< OutputPixelType, 2 >   OutputImageType;

  typedef itk::ImageFileReader< InputImageType >  ReaderType;
  //通过定义输入输出图像类型来定义梯度强度的类型:
  typedef itk::GradientMagnitudeImageFilter<
               InputImageType, OutputImageType >  FilterType;
  //通过调用 New( ) 方式来创建一个滤波器对象并将结果指向一个 itk::SmartPointer :
  ReaderType::Pointer reader = ReaderType::New();
  reader->SetFileName("BrainProtonDensitySlice.png");

  FilterType::Pointer filter = FilterType::New();
  //输入图像可以从另一个滤波器的输出得到。这里,源于一个图像 reader 来得到:
  filter->SetInput( reader->GetOutput() );
  //最后,通过调用 Update( ) 方式来执行滤波器:
  filter->Update();
  

  typedef unsigned char                          WritePixelType;
  typedef itk::Image< WritePixelType, 2 >        WriteImageType;
  typedef itk::RescaleIntensityImageFilter<
               OutputImageType, WriteImageType > RescaleFilterType;

  RescaleFilterType::Pointer rescaler = RescaleFilterType::New();

  rescaler->SetOutputMinimum(   0 );
  rescaler->SetOutputMaximum( 255 );

  typedef itk::ImageFileWriter< WriteImageType >  WriterType;
  WriterType::Pointer writer = WriterType::New();
  writer->SetFileName("GradientMagnitude_out.png");
  //如果这个滤波器的输出已经连接到流水线中的其他滤波器,更新任何下游的滤波器将同
  //样触发这个滤波器的一个更新。例如,梯度强度滤波器可能连接到一个图像 writer 
  rescaler->SetInput( filter->GetOutput() );
  writer->SetInput( rescaler->GetOutput() );
  writer->Update();
 
  return EXIT_SUCCESS;
}

                                                                           

                                                           输入图像                                                       梯度强度图

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

 

ITK系列目录:

1 ITK图像数据表达之图像

2 ITK图像处理之图像滤波

3 ITK图像处理之图像分割

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦我飞也

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值