在 HALCON 中,segment_contours_xld
是一个用于分割轮廓(XLD Contours)的算子,目的是将复杂或长的轮廓线条切分成多个更规则的线段或子段,方便后续几何拟合、分析、测量等操作。
segment_contours_xld(Contours, SegmentedContours, Mode, SmoothCont, MaxLineDist1, MaxLineDist2)
参数名 | 类型 | 说明 |
---|---|---|
Contours |
输入 XLD | 要分割的原始轮廓(可以是多个) |
SegmentedContours |
输出 XLD | 分割后得到的子轮廓 |
Mode |
'lines' 、'lines_circles' 等 |
分割类型(线段/线段+圆弧) |
SmoothCont |
布尔/整型 | 是否对输入轮廓平滑(1 = 是,0 = 否) |
MaxLineDist1 |
实数 | 判断拐点(角点)的灵敏度,越小越敏感 |
MaxLineDist2 |
实数 | 用于进一步线段判断 |
'lines'
:将轮廓按角度突变点分成直线段;'lines_circles'
:同时提取线段和弧段(适用于边角 + 圆弧的轮廓);'polygons'
:拟合为折线轮廓(类似轮廓简化);'poly_segments'
:输出拟合段,便于后续计算方向等。read_image(Image, 'metal_part.png')
edges_sub_pix(Image, Edges, 'canny', 1, 20, 40)
* 联通边缘
union_adjacent_contours_xld(Edges, Contours, 10, 1, 'attr_keep')
* 分段
segment_contours_xld(Contours, Segments, 'lines', 1, 5, 10)
* 显示
dev_display(Image)
dev_set_color('green')
dev_display(Segments)
SegmentedContours
是一组新的 XLD 轮廓(线段或弧段)fit_line_contour_xld
)MaxLineDist1
: 控制是否分段,太大则不分;太小则分得太碎MaxLineDist2
: 二次精度控制(一般设为略大于 MaxLineDist1
)算子名 | 用途 |
---|---|
edges_sub_pix |
获取亚像素轮廓 |
union_adjacent_contours_xld |
将多条碎线合并 |
fit_line_contour_xld |
对每段拟合直线 |
get_contour_angle_xld |
计算每段轮廓的方向 |
如你有具体目标,比如测量零件边角、提取折线轮廓结构,我可以提供完整流程(带结果显示),需要的话告诉我图像或用途即可。
在 HALCON 中,lines_gauss
是一个用于检测图像中线结构(Line Features)的算子,采用基于高斯导数的方式提取亚像素级线条。它常用于提取细长、对比明显的线,如电路线、划痕、笔迹、管道等。
lines_gauss(Image, Lines, Sigma, Low, High, MaxLength, Mode)
参数 | 类型 | 说明 |
---|---|---|
Image |
灰度图像 | 输入图像,需为单通道(灰度) |
Lines |
输出 | 检测到的线轮廓(XLD 格式,亚像素) |
Sigma |
实数 | 高斯平滑参数(建议 0.6 ~ 2.5),越大越平滑 |
Low |
实数 | 低阈值(边缘响应的强度),控制噪声过滤 |
High |
实数 | 高阈值,线响应强度的上限 |
MaxLength |
实数 | 检测到的线段最大长度(像素) |
Mode |
字符串 | 'light' :亮线(背景暗),'dark' :暗线(背景亮) |