一。自适应阈值法
adaptiveThreshold
来自 <自适应阈值(adaptiveThreshold)分割原理及实现_小武的博客-CSDN博客_adaptivethreshold>
自适应阈值法(adaptiveThreshold),它的思想不是计算全局图像的阈值,而是根据图像不同区域亮度分布,计算其局部阈值,所以对于图像不同区域,能够自适应计算不同的阈值,因此被称为自适应阈值法。(其实就是局部阈值法)
可以计算某个邻域(局部)的均值、中值、高斯加权平均(高斯滤波)来确定阈值。值得说明的是:如果用局部的均值作为局部的阈值,就是常说的移动平均法
当同一幅图像上的不同部分的具有不同亮度时。这种情况下我们需要采用自适应阈值。此时的阈值是根据图像上的每一个小区域计算与其对应的阈值。因此在同一幅图像上的不同区域采用的是不同的阈值,从而使我们能在亮度不同的情况下得到更好的结果。
链接:https://www.jianshu.com/p/47b6de954fcf
自适应阈值,则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值。这样做的好处:
1. 每个像素位置处的二值化阈值不是固定不变的,而是由其周围邻域像素的分布来决定的。
2. 亮度较高的图像区域的二值化阈值通常会较高,而亮度低的图像区域的二值化阈值则会相适应的变小。
3. 不同亮度、对比度、纹理的局部图像区域将会拥有相对应的局部二值化阈值。
来自 <自适应阈值化操作:adaptiveThreshold()函数 - _Challenger - 博客园>
与阈值分割类似,区域生长法也经常和其他分割算法配合使用。
MITK中的RegionGrowingTool采用连续阈值法(Connected Threshold)的变种自适应连续阈值法(Connected Adaptive Threshold)作为生长策略。
自适应连续阈值法则会根据种子点的像素值自动确定灰度区间,用户也可以自己编辑灰度区间。
来自 <医学影像处理与交互平台MITK----3D分割算法的应用_遥远的她-CSDN博客>
总结: 因为没有光线问题,或许不需要使用自适应
二。连接门限
来自 <基于C++的ITK图像分割与配准学习笔记3(图像分割)_亦我飞也的博客-CSDN博客>
区域生长方法最主要的算法复杂性是访问相邻像素。注水迭代器承担起这个责任并大大简化了区域生长算法的执行。
三。注水迭代器
itkConnectedThresholdImageFilter
|
|
FloodFilledImageFunctionConditionalIterator (没有cpp文件,三个构造方法具体实现看父类,实现了两个方法 获取像素值 和 设置像素值)
|
|
FloodFilledImageFunctionConditionaConstlterator(三个构造方法没有实现看父类,实现了判断这个像素是否应该被包括在洪水中)
|
|
FloodFilledFunctionConditionaConstlterator(三个构造方法有实现,调用了InitializeIterator初始化,DoFloodStep检查邻域放入队列)
|
|
ConditionalConstIterator(构造 析构 虚函数)
四。
漫水填充算法
来自 <图像处理之漫水填充算法(flood fill algorithm) - 云+社区 - 腾讯云>
基本思想
漫水填充算法,顾名思义就像洪水漫过一样,把一块连通的区域填满,当然水要能漫过需要满足一定的条件,可以理解为满足条件的地方就是低洼的地方,水才能流过去。在图像处理中就是给定一个种子点作为起始点,向附近相邻的像素点扩散,把颜色相同或者相近的所有点都找出来,并填充上新的颜色,这些点形成一个连通的区域。
算法实现
漫水填充算法实现最常见有四邻域像素填充法,八邻域 像素填充法,基于扫描线的填充方法。根据代码实现方式又可以分为递归与非递归。
OpenCV 泛洪填充 floodFill()
来自 <OpenCV 泛洪填充 floodFill()详解_ljt爱喝老猪阿茶的博客-CSDN博客>
floorFill(image, mask , seedPoint, newVal, loDiff, upDiff, flags)
floodFill只会填充处理对象对应的mask为0的区域
来自 <OpenCV 泛洪填充 floodFill()详解_ljt爱喝老猪阿茶的博客-CSDN博客>
其他第三方库:使用到的第三方库(不同的应用程序会用到的库不尽相同),如ANN、Boost、CppUnit、CTK、DCMTK、Eigen、GDCM、HDF5、ITK、MatchPoint、POCO、TinyXML、VIGRA、VTK、Zlib等,在superbuild机制下会自动下载安装,无需自我配置