HALCON常用算子

在 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 实数 用于进一步线段判断

常用 Mode 说明:

  • '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
    • 匹配模板(如 GMCA)

调参建议:

  • MaxLineDist1: 控制是否分段,太大则不分;太小则分得太碎
  • MaxLineDist2: 二次精度控制(一般设为略大于 MaxLineDist1

常与这些配合:

算子名 用途
edges_sub_pix 获取亚像素轮廓
union_adjacent_contours_xld 将多条碎线合并
fit_line_contour_xld 对每段拟合直线
get_contour_angle_xld 计算每段轮廓的方向

应用举例:

  • 将一条复杂轮廓分成多个直线段用于检测角度;
  • 拟合圆弧 + 直线构成的零件边缘;
  • 多边形检测、CAD 比对前处理;
  • 精密检测中的角点提取和线段建模。

如你有具体目标,比如测量零件边角提取折线轮廓结构,我可以提供完整流程(带结果显示),需要的话告诉我图像或用途即可。

在 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':暗线(背景亮)

你可能感兴趣的:(python,人工智能,前端)