工控编程吧

标题: halcon binary_threshold函数介绍 [打印本页]

作者: qq263946146    时间: 2019-5-29 13:22
标题: halcon binary_threshold函数介绍
binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
binary_threshold使用自动确定的全局阈值分割单通道图像,
并在Region 中返回分割后的区域。
例如,这对于在照明均匀的背景下分割字符非常有用。
binary_threshold还在参数UsedThreshold中返回使用的阈值。


所使用的阈值由Method确定。
目前,该操作符提供了以下两种方法:
“max_separability”和“smooth_histo”。
这两种方法只适用于具有双峰直方图的图像。


smooth_histo方法提供了与bin_threshold操作符相同的功能。
max_separability方法倾向于确定较小的值,保存到UsedThreshold
此外,它对柱状图中远离光谱其余部分的窄孤立峰不太敏感,而且通常比“smooth_histo”更快。


通过选择Method = 'max_separability',
根据Otsu调用基于灰度直方图的自动阈值(参见参考文献中的文章)。
该算法首先计算图像的直方图,然后利用统计矩找到将像素划分为前景和背景的最优阈值T,
最大限度地提高了这两类像素的可分性。此方法仅适用于byte和uint2图像。
LightDark =light 选择灰度值大于T的全部像素。
LightDark =dark选择灰度值小于T的全部像素。

选择Method = 'smooth_histo' ,binary_threshold通过下面方法来确定阈值T:
首先,确定灰度值的相对直方图。
然后从直方图中提取相关的最小值,作为阈值操作的参数。
为了减少最小值的数量,直方图用高斯函数进行平滑,如auto_threshold。
将掩码大小放大,直到平滑直方图中只有一个最小值。
然后,将阈值T设置为这个最小值的位置。
LightDark =light 选择灰度值大于T的全部像素。
LightDark =dark选择灰度值小于T的全部像素。

例程:
read_image (Clip, 'clip')
get_image_size (Clip, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width / 2, Height / 2, 'black', WindowID)
dev_display (Clip)
binary_threshold (Clip, Dark, 'max_separability', 'dark', UsedThreshold)
connection (Dark, Single)
select_shape (Single, Selected, 'area', 'and', 5000, 10000)
orientation_region (Selected, Phi)
area_center (Selected, Area, Row, Column)
dev_set_line_width (3)
dev_set_draw ('margin')
Length := 80
dev_set_color ('blue')
disp_arrow (WindowID, Row, Column, Row - Length * sin(Phi), Column + Length * cos(Phi), 4)


[halcon]1[/halcon]







欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4