主要讲述几种halcon中经常用到的一些阈值分割算子。
全局阈值分割,适用于环境稳定,目标与背景存在明显的灰度差的场合。(即根据高低双阈值将图像分为前景和背景)
利用灰度直方图确定阈值进行图像分割。一般是物体与背景之间存在一个明显的灰度差,直方图会存在两个波峰一个是目标一个是背景,那么阈值就是物体与背景之间的最小值。
read_image (Image, ‘clip‘) gray_histo (Image, Image, AbsoluteHisto, RelativeHisto) gen_region_histo (Region, AbsoluteHisto, 255, 255, 1) *利用直方图获取阈值 histo_to_thresh (AbsoluteHisto,10, MinThresh, MaxThresh) *全局阈值分割 threshold (Image, Region1, MinThresh, MaxThresh)
自动全局阈值分割,主要对灰度直方图存在两个波峰图像的自动阈值分割。提供两种方法“max_separability”和“smooth_histo”。
read_image (Image, ‘clip‘) binary_threshold (Image, Region, ‘max_separability‘, ‘dark‘, UsedThreshold)
局部阈值分割,当前背景之间差异明显时,可以设定全局阈值进行threshold,但很多情况下由于背景不均一,目标体经常表现为比背景局部亮一些或暗一些,无法确定全局阈值操作(无法通过单个高低阈值对整幅图像分割),需要通过其邻域找到一个合适的阈值进行分割这时就要用到局部阈值分割了。
均值和标准偏差局部阈值分割,能够较好的分开目标和背景,对不适合的参数设置不敏感。
参数列表:
MaskWidth、 MaskHeight是用于滤波平滑的掩膜尺寸;
StdDevScale是标准差乘数因子(简称标准差因子);
AbsThreshold是设定的绝对阈值;
LightDark有4个值可选,’light’、’dark’、’equal’、’not_equal’。
需要强调的是var_threshold算子和dyn_threshold算子极为类似。不同的是var_threshold集成度更高,并且加入了“标准差×标准差因子”这一变量。可以有效地减少噪声对分割的影响。
自动全局阈值分割(根据直方图确定阈值),运行原理:
read_image (Image, ‘fabrik‘) median_image (Image, Median, ‘circle‘, 3, ‘mirrored‘) auto_threshold (Median, Regions, 3)
快速全局阈值分割,灰度值满足MinGray<=g<=MaxGra聚合为一个区域,为了节省时间按两步执行。
分水岭阈值分割,可以提取分水岭盆地。其原理:
综上所述,全局threshold分割和局部的dyn_threshold分割用的比较多。尤其是图片光照不均匀,而dyn_threshold选对两个分割图,再对结果做些筛选处理,效果会很好。一般用适当尺度的均值滤波图和原图,还有用灰度开闭的图来局部分割。
转载于:说说几个常用的阈值分割算子 - 机器长眼睛 - 博客园 (cnblogs.com)
原文:https://www.cnblogs.com/xyf327/p/14880728.html