Halcon阈值分割方法简析

1. 基于直方图的自动阈值分割

1.1 关键算子

auto_threshold(Image : Regions : Sigma : ):使用多阈值分割单通道图像。
首先,计算图像的灰度直方图。
然后,使用标准差为Sigma的一维高斯滤波器对直方图进行滤波。
进而,从直方图中提取相关灰度极小值,依次作为阈值操作的参数。每个灰度值区间生成一个区域。因此,区域的数目就是极小值数加一。

binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
全局自动阈值分割,对灰度直方图存在两个波峰按照不同的方法进行分割。
1: 计算图像的灰度直方图。
2:使用max_separability方法(最大限度可分OTSU),适用于直方图存在两个波峰的情况,即图像前景背景的有明显区别。方法是利用统计矩找到将像素分割为前景和背景的最优阈值,并最大化这两个类之间的可分性。此方法仅适用于byte和uint2图像。
3:smooth_histo方法(直方图平滑),直方图提取最小值,作为阈值操作的参数。为了减少最小值,直方图用高斯函数平滑处理。在平滑直方图中,掩模尺寸增大,直到找到最小值。然后,阈值设置为这个最小值的位置。
LightDark:表示提取的是黑色部分还是白色部分。

threshold(Image : Region : MinGray, MaxGray : )
根据图像的灰度确定阈值进行分割。用于物体与背景存在明显灰度差的图像。

fast_threshold(Image : Region : MinGray, MaxGray, MinSize : )
快速全局阈值分割。灰度值满足MinGray<=g<=MaxGray则分割为一个区域,为了节省时间按两步执行。
第一,先处理行列间隔Minsize的所有像素点。
第二,处理上一步选择点的领域。

2.局部自动阈值分割

2.1 关键算子

dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
实际项目中由于图像背景不一致,目标经常表现为比背景局部亮一些或暗一些,无法通过全局阈值操作进行分割,这时需要通过求原像素值与滤波后像素值的差找到一个局部阈值进行分割。
其方法为:
1:将OrigImage进行滤波平滑处理,得到ThresholdImage 。
2:用OrigImage和ThresholdImage 逐像素进行比较,根据参数Offset(邻域比较的区间范围)和LightDark分割出相关区域。
当选择light时,就筛选出相对参考图更亮的区域,dark相反。选equal时,选取和参考图差不多的区域。

var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )
该算子为基于图像均值和标准偏差的局部阈值分割,能够较好的分开目标和背景。
MaskWidth、 MaskHeight:掩膜单元;
StdDevScale:标准差乘数因子;
AbsThreshold:绝对阈值;
LightDark:表示希望分割的灰度值亮弱。
具体方法:用掩膜区域遍历整幅图像,与原始图像的区域灰度值进行对比,当原图灰度比掩膜区域的灰度均值低(0.2,12)个灰阶时,即可分割出该区域。
1、当标准差因子StdDevscale>=0时, v(x.y)取(StdDevscale标准差)和AbsThreshold中较大的那个 ;
2、当标准差因子StdDevScale<= 0时, v(xy)取(StdDevscale
标准差)和AbsThreshold中较小的那个。

watersheds_threshold(Image : Basins : Threshold : )
分水岭算法。
1:通过分水岭算法watersheds()获取图像的盆地。
2:若盆地部分的灰度小于设定的阈值Threshold,则被合并到一起。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值