阈值处理,用来分割图像
当图像中物体的灰度值存在差异,可以通过阈值分割的方法提取出目标所在区域
1. auto_threshold
auto_threshold(Image : Regions : Sigma : )
直方图自动阈值(自适应阈值)
自动阈值输入必须是是单通道图像,会有多阈值分割,Sigma用于对灰度直方图进行高斯平滑,决定了平滑的程度(分割细致程度),当sigma很大时,灰度直方图基本会被平滑为只剩下一个波峰,而分割是根据平滑后直方图的波谷来进行的,Sigma小,分割的越细致。
2. bin_threshold
bin_threshold(Image : Region : : )
使用自动确定的阈值分割图像
3. binary_threshold
binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
Image:需要进行阈值的图像
Region:处理后的区域
Method:分割方法('max_separability':最大限度的可分性, 'smooth_histo':直方图平滑)
LightDark:提取的是黑色部分还是白色部分
UsedThreshold:自动阈值使用的阈值值
针对全图像进行阈值分割处理,获得的区域要么是亮区域,要么是暗区域。
4. dual_threshold
dual_threshold(Image : RegionCrossings : MinSize, MinGray, Threshold : )
Threshold 表示用于分割的阈值数值
MinSize表示分割出来的区域的最小面积(即数像素的数目个数)
MinGray表示分割出来的区域对应的原图中图像像素的最高灰度不能低于MinGray设定值。
5. dyn_threshold
dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
局部阈值分割,一般与mean_image联合使用:
mean_image(Image,Mean,21,21)
dyn_threshold(Image,Mean, RegionDynThresh,15,'dark')
当前背景之间差异明显时,可以设定全局阈值进行threshold,但很多情况下由于背景不均一,目标体经常表现为比背景局部亮一些或暗一些,无法确定全局阈值操作,需要通过其邻域找到一个合适的阈值进行分割。
6. fast_threshold
fast_threshold(Image : Region : MinGray, MaxGray, MinSize : )
快速二值化
针对全图像进行阈值分割处理,阈值分割部分的效果和threshold是相同的,但是,该算子还增加了最小块的限制,直接能去掉小于MinSize 的区域。
7. threshold
threshold(Image : Region : MinGray, MaxGray : )
- Image是输入图像
- Region是分割后的结果
- MinGray 和MaxGray是输入的控制参数,分割的最小灰度值与最大灰度值
针对全图像进行阈值分割处理,输出的是最小灰度值和最大灰度值之间的区域
8. var_threshold
var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )
MaskWidth、 MaskHeight是用于滤波平滑的掩膜单元;
StdDevScale是标准差乘数因子(简称标准差因子);
AbsThreshold是设定的绝对阈值;
LightDark有4个值可选,’light’、’dark’、’equal’、’not_equal’。
动态阈值分割-根据局部均值和方差
var_threshold图像灰度值在均值与方差之和以上或在均值与方差之差以下
需要强调的是var_threshold算子和dyn_threshold算子极为类似。不同的是var_threshold集成度更高,并且加入了“标准差×标准差因子”这一变量。
更多halcon和六轴机械臂算法干货公众号: