Halcon-常用阈值分割方法总结

本文主要阐述halcon中较为常见的几种分割算子

引言

halcon中分割算子:
(1)全局阈值分割:
threshold(Image : Region : MinGray, MaxGray : )
该算子适用于环境稳定,光照变化不大,目标与背景存在明显的灰度差的场合,根据灰度直方图确定阈值进行图像分割。

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)

(2)自动全局阈值分割
binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
该算子提供两种方法“max_separability”和“smooth_histo”。
最大限度的可分性(max_separability):根据“灰度直方图的阈值选择方法”的灰度直方图自动阈值调用。该算子首先计算图像的直方图,然后利用统计矩找到将像素分割为前景和背景的最优阈值,并最大化这两个类之间的可分性。此方法仅适用于byte和uint2图像。
直方图平滑(smooth_histo):首先确定灰度值的相对直方图。然后,从直方图提取相关的最小值,作为阈值操作的参数。为了减少最小值,直方图被平滑处理为一个高斯函数,就像在auto_threshold中一样。在平滑直方图中,掩模尺寸增大,直到得到2个波峰的最小值。然后,阈值设置为这个最小值的位置。

read_image (Image, 'clip')
binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)

(3)动态局部阈值分割
dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
(4)均值和标准偏差局部阈值分割
var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )
参数:
MaskWidth、 MaskHeight是用于滤波平滑的掩膜尺寸;
StdDevScale是标准差乘数因子(简称标准差因子);
AbsThreshold是设定的绝对阈值;
LightDark有4个值可选,’light’、’dark’、’equal’、’not_equal’。
需要强调的是var_threshold算子和dyn_threshold算子极为类似。不同的是var_threshold集成度更高, 并且加入了“标准差×标准差因子”这一变量。可以有效地减少噪声对分割的影响。
(5)自动全局阈值分割
auto_threshold(Image : Regions : Sigma : )
运行原理:
1.计算灰度直方图。
2.高斯平滑后从直方图提取最小值。
3.根据提取的最小值进行阈值分割,sigma越大提取区域越少。

read_image (Image, 'fabrik')
median_image (Image, Median, 'circle', 3, 'mirrored')
auto_threshold (Median, Regions, 3)

(6)快速全局阈值分割
fast_threshold(Image : Region : MinGray, MaxGray, MinSize : )
灰度值满足Gamma公式展示MinGray<=g<=MaxGray聚合为一个区域,为了节省时间按两步执行。
1.先处理行列间隔Minsize的所有像素点。
2.处理上一步选择点的领域。和threshold相比分割速度快。
(7)分水岭阈值分割
watersheds_threshold(Image : Basins : Threshold : )

算子分割实例

测试图片:硅片分选机隐裂站成像

Halcon-常用阈值分割方法总结_第1张图片
图1.1 隐裂站运行时硅片成像灰度均值为110±10
Halcon-常用阈值分割方法总结_第2张图片
图1.2 硅片较厚时会出现成像较黑
Halcon-常用阈值分割方法总结_第3张图片
图1.3 硅片较薄时成像较亮

(1)使用全局阈值三种样片测试效果
Halcon-常用阈值分割方法总结_第4张图片
正常片分割效果:硅片全覆盖
Halcon-常用阈值分割方法总结_第5张图片
厚片分割效果:有多余背景和中间空隙

Halcon-常用阈值分割方法总结_第6张图片
薄片分割效果:硅片全覆盖

测试代码:

全局阈值分割threshold (GrayImage, Region, 40, 255)

dev_update_off ()
dev_close_window ()
* Image Acquisition 01: Code generated by Image Acquisition 01
ImageFiles := []
ImageFiles[0] := 'C:/Users/yangguowei/Desktop/片子/薄片.png'
ImageFiles[1] := 'C:/Users/yangguowei/Desktop/片子/厚片.png'
ImageFiles[2] := 'C:/Users/yangguowei/Desktop/片子/正常片.png'
for Index := 0 to |ImageFiles| - 1 by 1
    read_image (Image, ImageFiles[Index])
    get_image_size (Image, Width, Height)
    *打开窗口用于显示三种类型图片分割效果展示
    dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
    * Image Acquisition 01: Do something
    rgb1_to_gray (Image, GrayImage)
    threshold (GrayImage, Region, 40, 255)
    dev_set_window (WindowHandle)
    dev_set_draw ('fill')
    dev_set_color ('red')
    dev_display (Image)
    dev_display (Region)
endfor

Halcon-常用阈值分割方法总结_第7张图片

你可能感兴趣的:(计算机视觉,深度学习)