- 打开HDevelop -> 浏览HDevelop实例程序 -> 查找:clip -> 旋转clip.hdev -> 打开
- clip即回形针,原图片clip.png可在C:\Users\Public\Documents\MVTec\HALCON-12.0\examples\images中找到,如图所示:
- 运行程序,可得到结果,如图所示:
- 对源代码重要部分添加注释,如图所示:
1. binary_threshold(Image: Region : Method, LightDark : UsedThreshold)
|
Image |
输入图像 |
|
Region |
分割后的输出区域 |
|
Method |
分割方法,默认为'max_separability',还包括'smooth_histo' |
|
LightDark |
选取前景或背景?默认'dark',还包括'light' |
|
UsedThreshold |
使用的阈值大小 |
- 使用二进制阈值自动分割图像。
- binary_threshold分割单通道图像,使用自动定义的全局阈值,返回分割区域Region。UsedThreshold返回使用的阈值。
-
使用的阈值,由Method定义。目前有两种方法:'max_separability'
和'smooth_histo'。两种方法都要求图像具有双峰直方图。
- 'smooth_histo'提供与bin_threshold一样的功能;‘max_separability’希望能为UsedThreshold确定一个更小的值。另外,'max_separability'对于直方图中小的、孤立的峰值不敏感,且比'smooth_histo'的速度更快。
- Maximize separaility:基于灰度级直方图的自动阈值化。该算法,首先计算直方图,然后使用统计矩找到最佳阈值T*,使用T*将像素分为前景和背景,并将两类的可分性最大化。本方法只适用于byte和uint2类型的图像。
- Histrogram smoothing:首先确定灰度值的直方图,然后提取直方图中相关的最小值,用来阈值优化的参数。为了减少最小值的数量,直方图使用高斯平滑,就像auto_threshold,mask
size增大,直至平滑后的直方图中只含有一个最小值,然后T*设置为最小值的位置。
- 如果LightDark = 'light',所有像素的灰度值大于或等于T*的被选择。
- 如果LightDark = 'dark',所有像素的灰度值小于T*的被选择。
2. connection(Region: ConnectedRegions)
|
Region |
输入region |
|
ConnectedRegions |
连通域 |
- 计算region的连通域(connected components)。
- connection确定由Region给定的输入regions的连通域。邻域通过set_system('neighborhood', <4/8>)设置。默认为8邻域,用来确定前景的连通域。连通域的最大数量,通过set_system('max_connection', <Num>)设置,由connection返回。默认值0,表示所有连通域全部返回。
3. Orientation_region(Regions: : : Phi)
|
Regions |
需要计算的regions |
|
Phi |
region的方向(弧度制),注意:-pi <= Phi < pi |
-
本算子用于计算region的方向。本算子基于elliptic_axis。另外计算轮廓中距离重心最远的点。在旋转坐标系中,最远点的列坐标(column coordinate)小于重心的列坐标,pi的值加入到了角度中。
-
如果有多个regions,则结果保存在tuple中,tuple中值的编号与输入region的编号相同。