halcon进化日记-0805halcon官方十大例程之提取物体边缘
01-源码
文件所在目录:edges_sub_pix.hdev
D:\MVTec\docDATA\HALCON-24.11-Progress-Steady\examples\hdevelop\Filters\Edges
源码:
halcon的程序是由一系列算子(operator)按照一定顺序执行,满足需求,实现功能。
什么顺序,通过控制语句(control)里面的条件(if...else)、循环(for/while)等约束算子。
通过 Procedure(过程)实现模块化。
02-代码分析
2.1 看现象
F5 运行
F2 重置运行
F6 单步 跳过 函数
F9 停止
F5,第一次按下,'fabrik'原图,及彩色边缘显现。
F5,第二次按下,stop()处停止,及局部放大。
初步得到:该段代码的功能是提取图像边缘,并将边缘显示出来。
2.2 看逻辑
要看逻辑,需看控制。观察一个树木,首先看主干,再看枝干。
先看看程序里面有没有,
■ 条件分支:if...elseif...else...endif、switch...case...end。
■ 循环结构:for循环(指定步长)、while循环(条件判断),支持break和continue控制流程 。
没有,此部分过。
2.3 看内容
文件源码:
-
This example shows how subpixel precise edges can be extracted from an image.
-
此示例显示了亚像素精确边缘如何从图像中提取。
-
1.关闭窗口及初始化
dev_close_window ()
read_image (Image, 'fabrik')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) -
The default parameter were adapted to find more connected edges in the image.
-
默认参数经过调整,可在图像中找到更多连接的边缘。
edges_sub_pix (Image, Edges, 'canny', 2, 12, 22) -
使用 subpixel 精度的 Canny 方法提取边缘
🎯 作用: 调用 Halcon 的 亚像素级边缘检测算子,从图像 Image 中提取边缘,结果保存在 Edges(一个 XLD 结构,表示边缘轮廓)。
dev_set_part (0, 0, 511, 511)
- 设置显示窗口的感兴趣区域 (ROI),这里是从 (0,0) 到 (511,511),即显示图像左上角的一部分
dev_display (Image)
dev_set_colored (6) - 设置边缘显示为彩色模式,6 表示使用多种颜色显示不同的 XLD 边缘轮廓,便于区分
dev_display (Edges) - 在原图之上叠加显示,检测出的亚像素边缘(XLD 格式)
disp_continue_message (WindowHandle, 'black', 'true') - 在窗口中显示 “按任意键继续” 的提示信息,黑色文字
stop () - 暂停程序执行,等待用户按键,用于观察当前结果
- Zoom into the image to enable detailed edge inspection
- 放大图像以实现详细的边缘检查
dev_set_part (160, 250, 210, 300)
- 将显示区域缩小到图像的局部:从坐标 (160,250) 到 (210,300),用于放大观察某个区域的边缘
dev_display (Image) - 再次显示原图(局部)
dev_display (Edges) - 再次显示边缘(局部)
仔细观察边缘是否准确、连续、噪音是否过多等。
2.4 看算子
edges_sub_pix (Image, Edges, 'canny', 2, 12, 22)
🔍 参数详解:
🔍 参数详解:
参数 含义
Image 输入图像,通常是单通道灰度图
Edges 输出的边缘轮廓,数据类型为 XLD(亚像素级轮廓对象)
'canny' 使用的边缘检测方法,Canny 算子,适合提取细腻、少噪声的边缘
2 Sigma(高斯平滑参数):控制图像平滑程度,值越大图像越模糊,小边缘越容易被抑制。2,是轻度平滑
12 低阈值(Low Threshold):低于此值的边缘会被丢弃
22 高阈值(High Threshold):高于此值的边缘被认定为强边缘,介于两者之间的可能是弱边缘(但 Canny 会连接强边缘)
--
🧠 小知识:
● Canny 是经典边缘检测算法,Halcon 的 edges_sub_pix 实现了其亚像素精度版本,即不仅检测出边缘,还能精确定位到像素之间的真实边缘位置(如小数坐标),比整数像素精度更高!
本文来自博客园,作者:黛色星霜,转载请注明原文链接:https://www.cnblogs.com/ijiangnan/articles/19023050

知识点 说明
edges_sub_pix 算子 Halcon 中用于提取亚像素精度边缘的核心算子,比普通 edges 精度更高
Canny 方法 经典边缘检测算法,Halcon 中通过 'canny' 参数调用,适合提取清晰连贯的边缘
subpixel(亚像素)精度 不仅检测出边缘,还能定位到亚像素位置(如 123.45 像素),对测量至关重要
XLD 数据类型 Halcon 中表示亚像素轮廓/边缘的数据结构,可用于后续测量、拟合、筛选等
可视化对比 如何将原图与边缘检测结果叠加显示,直观评估效果
局部放大观察 如何设置显示区域,放大查看细节,这是调试边缘检测的关键技巧
交互式调试 通过 stop() 和 disp_continue_message() 让程序暂停,便于观察结果
浙公网安备 33010602011771号