一、提要

这里介绍,如何将图像的对象返回成图形的几何元素问题。Halcon中对应的算子很多,这里将从最重要的开始介绍,然后逐一揭示其它算子的用途。好了,就开始吧!

二、算子001:将轮廓线分割成线段和园弧

2.1  segment_contours_xld算子

        segment_contours_xld:该函数将轮廓线通过分段,变成圆弧、线段的集合,通过该集合拟合成外轮廓。

1)函数形式

segment_contours_xld(Contours : ContoursSplit : Mode, SmoothCont, MaxLineDist1, MaxLineDist2 : )

2)参数解析 

  • Contours:被处理外轮廓
  • ContoursSplit:输出曲线集合
  • mode:规定曲线的形式【 'lines' | 'lines_circles' | 'lines_ellipses'】
  • SmoothCont:定义光滑处理的滤波点数;

3)详细解析

  • Mode:

segment_contours_xld 如果 Mode='lines' 则将输入轮廓 Contours 分割成线,如果 Mode='lines_circles' 则分割成线和圆弧,如果 Mode='lines_ellipses' 则分割成线和椭圆弧。分割的轮廓在 ContoursSplit 中返回。

关于输出轮廓是表示直线还是圆弧或椭圆弧的信息是通过全局轮廓属性“cont_approx”完成的(参见 get_contour_global_attrib_xld)。如果'cont_approx'=-1,则轮廓最好由线段近似,如果'cont_approx'=0,则由椭圆弧近似,如果'cont_approx'=1,则由圆弧近似。

  • SmoothCont

segment_contours_xld 首先通过多边形逼近输入轮廓。这样,轮廓在弯曲区域中被过度分割。在此之后,如果轮廓可以通过弧更好地近似,则相邻的线段分别由圆弧或椭圆弧代替。如果 SmoothCont 设置为 > 0 的值,则首先对输入轮廓进行平滑处理(请参阅 smooth_contours_xld)。这对于防止多边形近似中的非常短的段以及实现与圆形或椭圆弧的更稳健拟合是必要的,因为平滑抑制了轮廓上的异常值。

  • MaxLineDist1 和 MaxLineDist2

因为逼近是分两布完成的,首先是多变形逼近,然后是圆弧逼近。MaxLineDist1是指在多边形逼近的时候,原轮廓和拟合线的最大距离。

初始多边形近似是通过使用最大距离为 MaxLineDist1 的 Ramer 算法(参见 gen_polygons_xld)完成的。在此之后,圆弧或椭圆弧被拟合到相邻的线段中。如果生成的圆弧到轮廓的最大距离小于两条线段的最大距离,则将两条线段替换为圆弧。重复此过程,直到不再发生更改。

在此之后,仍然由线段近似的轮廓部分再次使用具有最大距离 MaxLineDist2 的多边形近似进行分割,并且在可能的情况下将新创建的线段合并为圆弧或椭圆弧。显然,仅当 MaxLineDist2 < MaxLineDist1 时才会更改输出。这种两步法比使用 MaxLineDist2 的一步法更有效,因为第一步生成的线段较少,因此必须较少执行圆形或椭圆拟合。因此,可以更有效地找到可以用长弧近似的部分输入轮廓。第二步,找到可以用短弧近似的部分输入轮廓,并细化长弧的末端部分。

生成的轮廓至少有 3 个像素长,并且包含输入轮廓的至少 6 个连续点。长度小于 3 像素或轮廓点少于 6 个的所有输入轮廓都将被复制到输出轮廓而不进行修改。

2.2 轮廓线性质算子get_contour_global_attrib_xld

( 先进行回归regress_contours_xld(Contours : RegressContours : Mode, Iterations : ) )

get_contour_global_attrib_xld 返回一个 XLD 轮廓的全局属性值.

例如:通过道格拉斯-普克算法,得到曲线的折线,其中折线与曲线距离di最大值、di平均值,【i=1,2,3,4】这些统计属性,称为曲线的全局属性。

1)函数形式:

get_contour_global_attrib_xld(Contour : : Name : Attrib)

2)参数说明

  • Contour:输入的曲线集
  • Name:
  • Attrib

get_contour_global_attrib_xld 返回Attrib中XLD轮廓Contour的全局属性Name的值。全局属性是为每个轮廓定义的附加值,例如,一个轮廓的回归线的法向量('regr_norm_row'和'regr_norm_col')。定义此类属性的运算符包含对已定义值的名称和语义的描述。 query_contour_global_attribs_xld 可用于查询为特定轮廓定义了哪些属性。

2.3 轮廓线性质算子get_contour_attrib_xld
get_contour_attrib_xld
返回一个XLD轮廓的点属性值。

比如:某个轮廓线

通过【图像处理】道格拉斯-普克算法(曲线的线段逼近)_无水先生的博客-CSDN博客

得到离散点【P1,P2,P3,P4,P5】算子get_contour_attrib_xld就是专门描述上述折线点的局部属性的算子。

【Halcon知识】外轮廓线的算子相关推荐

  1. Halcon矩阵(Matrix)算子详解

    Halcon矩阵(Matrix)算子详解 创建(Creation) create_matrix copy_matrix repeat_matrix clear_matrix 访问(Access) ge ...

  2. halcon知识:圆度和紧凑度

    一.说明 本文是halcon知识:select_shape究竟怎么用(1)的继续,关于select_shape的用途说的还不够,因为这些属性很多,有必要分开介绍. 二.圆度和紧凑度的直观演示 2.1 ...

  3. HALCON示例程序obj_diff.hdev算子obj_diff 的使用

    HALCON示例程序obj_diff.hdev算子obj_diff 的使用 示例程序源码(加注释) 关于显示类函数解释 read_image (Image, 'particle') 二值化 thres ...

  4. Halcon平铺tile三算子浅析

    Halcon平铺tile三算子浅析 文章目录 Halcon平铺tile三算子浅析 1. 平铺三算子 2. tile_channels 3. tile_images 4. tile_images_off ...

  5. 采用CAD刀具插件(飞狼刀模工具箱)的求外轮廓线功能快速提取包装盒刀模图

    1.打开需要绘制刀模图的包装盒盒型图,或通过工具箱里的盒型库功能事先绘制盒型. 2.通过工具箱的求外轮廓线快速求出外形,操作步骤为:点击求外轮廓线图标->选择盒型图->按右键. 3.通过板 ...

  6. CAD生成外轮廓线插件v1.0绿色版

    CAD生成外轮廓线插件是一款可以帮你在CAD中选择对象外轮廓线的插件,有时候我们需要选择一些相交对象的外轮廓线,这款插件可以帮助到你. 使用方法: 1. 在CAD中输入AP,加载下载的LSP程序:Ou ...

  7. unity-Shader显示模型外轮廓线

    unity模型外轮廓线shader 效果图 线的颜色可调,粗细可调 参数设置 shader代码 Shader "WCL/Wireframe" {Properties {_Color ...

  8. Halcon工具之轮廓线

    H a l c o n 工 具 之 轮 廓 线 Halcon工具之轮廓线 Halcon工具之轮廓线 第一步: 第二步: 第三步:描绘 4 查看灰度变化 5 求导(微分)

  9. 【Halcon知识】select_contours_xld算子的环境

    一.提要 每个halcon的算子都有一个生态,它是生态一个环节:花点时间了解清楚是非常必要的.本文着重对算子select_contours_xld进行解刨. 二.生态前半部分 在调用select_co ...

最新文章

  1. XDP/eBPF — BPF
  2. 【BZOJ-4245】OR-XOR 按位贪心
  3. centos下安装PHP的IDE,如何在 CentOS 8 上安装和使用 PHP 编辑器
  4. Same Sum Blocks
  5. Java黑皮书课后题第6章:**6.28(梅森素数)如果一个素数可以写成2^p-1的形式,其中p是某个正整数,那么这个素数就称作梅森素数。编写程序,找出p≤31的所有梅森素数,然后显示如下结果
  6. Java类加载器(一)——类加载器层次与模型
  7. 优化传输文件的性能- -零拷贝
  8. hadoop安全模式
  9. jquery实现页面加载进度条(转)
  10. 为什么手机网速太慢_手机明明是满格信号,为什么网速却非常慢?原来是这些功能在捣鬼...
  11. D1-H哪吒 设置hdmi分辨率
  12. 【梦幻童年win7热门主题】
  13. C#选择文件、选择文件夹、打开文件(OpenDialog,FolderBrowserDialog)
  14. Ubuntu 切换中文目录为英文目录
  15. grep正则表达式后面的单引号和双引号的区别?
  16. 互联网盈利模式,网络策划运营模式
  17. 一天外汇交易走势时间分布
  18. 【python进阶】古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  19. mongoose 入门(四)使用aggregate 聚合管道、使用 populate 实现关联查询
  20. 控制反转 vs 依赖注入

热门文章

  1. 解决本地文件不显示SVN图标的问题
  2. CSV转tfRecord
  3. 律师所小程序开发 律师小程序开发定制 律所小程序源码定制
  4. idea查看meven历来_历来十大编程笑话
  5. ROS坐标系中base_link和base_footprint的区别
  6. linux配置添加组播mac地址,端口静态添加组播MAC地址如何实现
  7. android测试测试模拟器,模拟和测试其他浏览器
  8. 繁华落尽,捡拾一地伤
  9. KMS激活windows 2008序列号
  10. 常规项目风险识别的规范流程和方法