阈值分割引言
阈值分割有非常多的算法,大体上分为全局和局部算法。 全局算法包括全局固定阈值和基于图像直方图的阈值,局部算法包括局部动态阈值分割。 基于图像直方图阈值分割的方法也有很多,比如常规的高斯滤波双峰法,OTSU大津法。 但是这类所有的法都基于一个假设:图像是有前景和背景的,待分割目标处于背景中,即图像直方图是双峰的。 如果因为非均匀光照导致待分割目标不处于背景或前景中,即图像直方图无双峰, 那么基于图像直方图的所有法都是不甚理想的 只能在此基础上进行一定的变换,例如nbl算法等,这些都属于局部算法。 任何算法,都会基于假设空间的。没有假设空间,所有算法性能一致。包括经典算法和深度学习算法。 本系列的贴子勇哥通过实验来细品它们之间的差别,以求以后可以精准应用。
这一节比较一下var_threshold和dyn_threshold。
原始图像,背景不均匀。
dyn_threshold的执行结果RegionUnion1
dyn_threshold的执行结果RegionUnion2
read_image (Image20210127211919, 'C:/Users/Administrator/Desktop/微信截图_20210127211919.png') dyn_threshold(Image20210127211919, Image20210127211919, RegionDynThresh,15, 'light') var_threshold(Image20210127211919, Region, 11, 11, 0.2,1, 'dark') fill_up(Region, RegionFillUp1) connection(RegionFillUp1, ConnectedRegions1) select_shape(ConnectedRegions1, SelectedRegions, 'area', 'and', 550, 99999999) union1(SelectedRegions, RegionUnion1) mean_image(Image20210127211919, ImageMean, 5, 5) dyn_threshold(Image20210127211919, ImageMean, RegionDynThresh1,1, 'dark') fill_up(RegionDynThresh1, RegionFillUp) connection(RegionFillUp, ConnectedRegions) select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 550, 99999999) union1(SelectedRegions, RegionUnion2)
dyn_threshold的特点:
1. 它是一种局部阈值算子
2. 它通过平均图像灰度来确定局部领域
3. 它使用前需要指定一个图像滤波器,例如mean_image
滤波尺寸>被提取物体的直径较好。
如果滤镜掩码的尺寸太大,那么相邻非常近的物体将会连在一起。
使用滤波掩码宽度推荐2*D+1,其中D为物体直径。
4. 它选出的所有像素要比局部领域要黑,也就是比均值滤波后的图像要黑。
var_threshold的特点:
1. 它是一种动态阈值算子
2. 它可以较好的分开前景与背景
3. 它对不适合的参数设置不敏感。
4. 它的执行时间比dyn_threshold要长。
未完待续……
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

