itk中的特征提取算法(三)
来源:互联网 发布:php简历管理系统 编辑:程序博客网 时间:2024/05/18 00:46
在图像处理过程中,目标物体给我们最直观的信息,除了形状,可能就是灰度了(抱歉,由于总是和医学图像相关,这里只讨论灰度图像,暂时不关注RGB)。本文要实现的目标是提取图像中灰度最大的点和最小的点。
itk给我们提供的类叫做:itkMinimumMaximumImageCalculator。看类名就知道,itk中的最大值最小值图像计算器。该计算器计算图像的最大值和最小值。类的设计依赖于itk的图像模版。提供了3个计算函数:
1.ComputeMaximum():计算最大值
2.ComputeMinimum():计算最小值
3.Compute():计算最大值和最小值
0..h中的私有成员变量:
1.ComputeMaximum():计算最大值
2.ComputeMinimum():计算最小值
3.Compute():计算最大值和最小值
0..h中的私有成员变量:
PixelType m_Minimum;//最大点灰度值 PixelType m_Maximum;//最小点灰度值 ImageConstPointer m_Image;//图像容器 IndexType m_IndexOfMinimum;//最大点坐标点 IndexType m_IndexOfMaximum;//最小点坐标点 RegionType m_Region;//算法执行de区域空间 bool m_RegionSetByUser;//自动/手动 区域空间标志位
1.构造函数:
template<class TInputImage>//itk模版MinimumMaximumImageCalculator<TInputImage>::MinimumMaximumImageCalculator(){ m_Image = TInputImage::New();//初始化输入图像内存空间//注意以下两句,比较有意思//最大值初始化为一个小数,最小值初始化为一个大数//这样些是不是很规范呢? m_Maximum = NumericTraits<PixelType>::NonpositiveMin(); m_Minimum = NumericTraits<PixelType>::max();//点坐标矩阵中用0填充 m_IndexOfMinimum.Fill(0); m_IndexOfMaximum.Fill(0);//默认自动选择区域空间(其实就是整个图像size) m_RegionSetByUser = false;}2.Compute方法:
template<class TInputImage>voidMinimumMaximumImageCalculator<TInputImage>::Compute(void){ if( !m_RegionSetByUser ) { m_Region = m_Image->GetRequestedRegion(); }//ImageRegionConstIteratorWithIndex很重要,迭代器//注意迭代器中的 ImageRegionConstIteratorWithIndex< TInputImage > it( m_Image, m_Region );//下面两句在初始化中出现过了,我猜是容错处理 m_Maximum = NumericTraits<PixelType>::NonpositiveMin(); m_Minimum = NumericTraits<PixelType>::max();//开始扫描图像矩阵,从第一个点开始,到最后一个点结束 while( !it.IsAtEnd() ) {//获得当前点的灰度值 const PixelType value = it.Get(); //如果比当前的最大值大,交换 if (value > m_Maximum) { m_Maximum = value; m_IndexOfMaximum = it.GetIndex(); }//如果比当前的最小值小,交换 if (value < m_Minimum) { m_Minimum = value; m_IndexOfMinimum = it.GetIndex(); }//继续下一个点 ++it; }}3.ComputeMaximum和ComputeMinimum方法都与Compute大同小异,略过。
4.最后一个有用的函数,设置区域:
template<class TInputImage>voidMinimumMaximumImageCalculator<TInputImage>::SetRegion( const RegionType & region ){ m_Region = region;//输入区域 m_RegionSetByUser = true;//如果人工输入,标志位则true}话说,这个特征点提取是不是太easy了点?
嗯,是的。但要记住,这里主要是分析itk官方源码,功能的实现是其次的。随时都要提醒自己,鱼和渔的区别,不要本末倒置,一叶障目,不见泰山。
阅读全文
0 0
- itk中的特征提取算法(三)
- itk中的特征提取算法(一)
- itk中的特征提取算法(二)
- itk中的特征提取算法(四)
- itk中的特征提取算法(五)
- itk中的图像分割算法(三)
- ITK 基于特征的血管提取01
- ITK 基于特征的血管提取02
- itk中的花式数据切割(三)
- itk中的图像分割算法(一)
- itk中的图像分割算法(二)
- itk中的图像分割算法(四)
- itk中的图像分割算法(五)
- 图像特征提取三大算法:HOG特征,LBP特征,Haar特征
- 激光雷达学习笔记(三)特征提取
- 激光雷达学习笔记(三)特征提取
- 激光雷达学习笔记(三)特征提取
- 激光雷达学习笔记(三)特征提取
- LeetCode 56. Merge Intervals
- 终于搞定了mfc声明全局变量
- [自学笔记]Tom Mitchell《机器学习》
- lombok简单使用
- 函数声明,函数表达式,块级作用域小结
- itk中的特征提取算法(三)
- mybatis-generator用法
- JSP数据交互
- ES6--Class、Module及常用特性
- 程序员最核心的竞争力是什么?
- PHP_安全编程建议
- idea中dependencies中总是有红色波浪线(缺少dependency)的解决办法
- 谷歌官方MVP例子分析
- python爬取mm131图片