一、案例说明

边界提取:以前的边缘提取都建立在前景通过thresold将区域提取出,然后从区域提出XLD,但是,如果区域无法提出就不好办了。此例子告诉大家,不必二值化提取,也能取出边缘来,edges_sub_pix 就能做到。

本案例主要给出一种对比度不明显的图中,提取出圆、椭圆、直线的例子。

在用Halcon进行图像处理的过程中,必须对轮廓进行分割,将轮廓分为直线段、圆(或圆弧)、椭圆弧不同的段,轮廓分割最常用的算子是segment_contours_xld

二、算子介绍

segment_contours_xld——Segment XLD contours into line segments and circular or elliptic arcs(将一个XLD轮廓分割为直线段、圆(圆弧)、椭圆弧。)

signature(语法):
segment_contours_xld(Contours :  ContoursSplit :  Mode,  SmoothCont,  MaxLineDist1,  MaxLineDist2 : )
参数说明:
Contours 需要进行分割的轮廓。
ContoursSplit 分割后的轮廓tuple。
Mode 分割轮廓的方式,可以选择'lines'(使用直线段分割), 'lines_circles'(使用直线段和圆(弧)分割), 'lines_ellipses'(使用直线段和椭圆弧分割)。
SmoothCont 轮廓平滑的参数,可以抑制在折线逼近过程中过短的线段,能更加鲁棒的逼近圆和椭圆。
MaxLineDist1 第一次用Ramer算法(即用直线段递进逼近轮廓)时的MaxLineDist,在逼近完成之后,再用圆弧或椭圆弧对相邻分割线段进行拟合,如果拟合圆弧到轮廓的距离小于逼近线段到轮廓的距离,就用圆弧替代逼近线段,这个过程一致迭代直到所有的线段拟合完毕。
MaxLineDist2 第二次逼近轮廓时的MaxLineDist,只有当MaxLineDist2
这种两步逼近算法效率较高,因为在第一次逼近过程中,递进逼近的直线段较少,因此较大直径的圆弧能够被高效的分割出来。在第二次逼近过程中,能够被小直径圆弧逼近的轮廓被找到,同时大直径圆弧的末端被重新定义。
Remark:
分割得到的轮廓是直线段、圆(圆弧)或者椭圆弧可以通过分割后轮廓的全局属性'cont_approx’参数的值来确定(参考get_contour_global_attrib_xld)。
如果'cont_approx'=-1,这一部分轮廓最适合被拟合为直线段。
如果'cont_approx'=0,这一部分轮廓最适合被拟合为椭圆弧。
如果'cont_approx'=1,这一部分轮廓最适合被拟合为圆弧。

三、轮廓分割的例子:

read_image (Image, 'pumpe')
edges_sub_pix (Image, Edges, 'canny', 1.5, 15, 40)
segment_contours_xld (Edges, ContoursSplit, 'lines_circles', 5, 4, 2)
count_obj (ContoursSplit, Number)
gen_empty_obj (Lines)
gen_empty_obj (Circles)for I := 1 to Number by 1select_obj(ContoursSplit, Contour, I)get_contour_global_attrib_xld (Contour, 'cont_approx', Type)if (Type == -1)concat_obj (Lines, Contour, Lines)elseconcat_obj (Circles, Contour, Circles)endif
endforfit_line_contour_xld (Lines, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
fit_circle_contour_xld (Circles, 'atukey', -1, 2, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)

Halcon知识:segment_contours_xld算子相关推荐

  1. 【Halcon知识】外轮廓线的算子

    一.提要 这里介绍,如何将图像的对象返回成图形的几何元素问题.Halcon中对应的算子很多,这里将从最重要的开始介绍,然后逐一揭示其它算子的用途.好了,就开始吧! 二.算子001:将轮廓线分割成线段和 ...

  2. halcon知识:hough变换检出图像的直线

    一.说明 用hough变换查找直线:hough的原理见文章:  图像处理:Hough变换原理分析 此文专门介绍halcon的具体算子实现. 二.示例代码 * Detect lines in an im ...

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

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

  4. halcon知识:select_shape究竟怎么用(1)?

    说明 select_shape是halcon的强大算子,需要重点研究,本例按照Features='area',对Operation进行说明,但是更多的案例将在一个更大的文档中说明. 一. 测试sele ...

  5. Halcon之segment_contours_xld

    Halcon之segment_contours_xld segment_contours_xld:将轮廓分割成线段.圆形.椭圆形轮廓段 segment_contours_xld (Edges, Con ...

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

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

  7. halcon知识:图像纹理特征提取cooc_feature_matrix

    一.关于共生矩阵 如果不懂啥叫共生矩阵,将无法阅读该文.如果试图搞明白啥叫共生矩阵,请看我的另一篇博文,<hjalcon知识:共生矩阵> 本片介绍共生矩阵产生的其它属性:能量.相关性.同质 ...

  8. halcon知识:差分模板variation_model

    一.差分模板 这个示例程序展示了如何使用 HALCON 的变分模型算子执行典型的打印质量检查.程序检测在笔夹上的不正确打印.该程序类似于程序 print_check.hdev.主要区别是每个字符都是单 ...

  9. Halcon知识 : 乘法图像融合

    1 算子mult_image halcon提供的关于融合图像的问题mult_image算子是图像融合的工具: 其中:g1是图像omage1的像素,g2是图像omage2的像素,Mult是一个系数,Ad ...

最新文章

  1. JAVA-Socket通信笔记
  2. bluecam连接步骤说明_磊科路由器登录设置及默认密码说明
  3. 宝塔服务器环境好不好_服务器环境怎么搭建?(宝塔环境搭建教程)
  4. iOS 注册密码加密 添加了时间戳 遇到的问题...
  5. 对java多线程里Synchronized的思考
  6. python列表中的冒号_python 列表中[ ]中冒号‘:’的作用
  7. 浅谈块级元素和行级元素的相对定位和绝对定位问题
  8. linux 编译3g驱动_linux重新编译内核
  9. 使用screen的时候出现了如下错误: Cannot open your terminal '/dev/pts/0' - please check.
  10. windows无法访问指定设备_恢复 你的电脑/设备需要修改 未连接或无法访问所需设备。...
  11. Akka Remote Actor_简单示例二
  12. python 获取当前日期和时间_如何在Python中获取当前日期和时间?
  13. c语言有趣小程序,c语言小程序代码大全(9个经典的C语言小程序)
  14. asp.net网上书店系统
  15. 是否可以将现有图表导入到 think-cell?
  16. 自动化和半自动矢量化提取地物矢量轮廓
  17. Fingerprint 解锁流程
  18. 附件英文计算机英语,详情请参见附件的英文说法
  19. 金三银四,给大家肝一下面试题~
  20. 概率论在实际生活的例子_日常生活中的概率统计

热门文章

  1. MCMC笔记Metropilis-Hastings算法(MH算法)
  2. torch_geometric 笔记: 数据集Cora 简易 GNN
  3. 文巾解题 523. 连续的子数组和
  4. MATLAB应用实战系列(四十五)-matlab任意图形轮廓坐标提取【含源代码】
  5. Pandas实战教程 | DataFrame连接 pd.concat()
  6. #论文 《Wide Deep Learning for Recommender System》翻译
  7. numpy.argsort详解
  8. Hyperledger Fabric 1.4 Kafka集群部署教程
  9. 亚马逊:区块链模块化,造币流水线化
  10. 汤晓鸥谈深度学习三大核心要素:算法设计、高性能的计算能力以及大数据