少有人走的路

勇哥的工业自动化技术网站

勇哥的实验:halcon阈值分割算子细谈(六)var_threshold和dyn_threshold的比较

阈值分割引言

C#
阈值分割有非常多的算法,大体上分为全局和局部算法。
全局算法包括全局固定阈值和基于图像直方图的阈值,局部算法包括局部动态阈值分割。
基于图像直方图阈值分割的方法也有很多,比如常规的高斯滤波双峰法,OTSU大津法。
但是这类所有的法都基于一个假设:图像是有前景和背景的,待分割目标处于背景中,即图像直方图是双峰的。
如果因为非均匀光照导致待分割目标不处于背景或前景中,即图像直方图无双峰,
那么基于图像直方图的所有法都是不甚理想的
只能在此基础上进行一定的变换,例如nbl算法等,这些都属于局部算法。

任何算法,都会基于假设空间的。没有假设空间,所有算法性能一致。包括经典算法和深度学习算法。

本系列的贴子勇哥通过实验来细品它们之间的差别,以求以后可以精准应用。


这一节比较一下var_threshold和dyn_threshold。


原始图像,背景不均匀。

image.png

dyn_threshold的执行结果RegionUnion1

image.png

dyn_threshold的执行结果RegionUnion2

image.png



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

版权声明:本文为博主原创文章,转载请附上博文链接!



发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864