当前位置: 首页 > news >正文

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':暗线(背景亮)
http://www.xdnf.cn/news/718813.html

相关文章:

  • 【读代码】BabyAGI:自我构建的自主代理框架深度解析
  • Linux入门
  • C语言中函数指针和指针函数的定义及用法
  • 【leetcode】19. 删除链表的倒数第N个节点
  • CppCon 2014 学习第3天:Viewing the world through array-shaped glasses
  • 计算机网络常见体系结构、分层必要性、分层设计思想以及专用术语介绍
  • Mybatis(Plus)对JSON / Array类型进行序列化
  • 2.环境搭建
  • 项目更改权限后都被git标记为改变,怎么去除
  • ai绘制mg人物半侧面头型
  • 2025年OE SCI2区TOP,进化麻雀搜索算法ESSA+海洋阻尼器迟滞建模与辨识,深度解析+性能实测
  • 进程同步机制-信号量机制-记录型信号量机制中的的wait和signal操作
  • 未来楼宇自控系统升级优化,为绿色建筑发展注入更强动力支撑
  • 大模型应用开发之评估
  • 浅谈学习(费曼学习法)
  • 四叉树实现四边形网格
  • OpenGL —— 2.9.1、摄像机之模拟CS鼠标视角转动,可切换线框模式显示(附源码,glfw+glad)
  • 力扣刷题Day 64:括号生成(22)
  • 什么是物化视图(Materialized View)?
  • Redis的大Key问题如何解决?
  • [预训练]Encoder-only架构的预训练任务核心机制
  • 【Day39】
  • 【Doris基础】Apache Doris数据模型全面解析:选择最适合你的数据组织方式
  • ProfibusDP转DeviceNet协议转换网关应用于S7-300PLC控制埃斯顿DeviceNet焊机项目
  • unity—特效闪光衣服的设置
  • 亚马逊桌布运营中的利润核算与优化:从成本管控到决策升级
  • MonoPCC:用于内窥镜图像单目深度估计的光度不变循环约束|文献速递-深度学习医疗AI最新文献
  • 5.3.1_2二叉树的层次遍历
  • 博客摘录「 Activiti7工作流引擎:基础篇(二) 自动生成表结构」2024年9月13日
  • 更换Homebrew 源