HALCON示例程序circles.hdev边界轮廓的圆形拟合

HALCON示例程序circles.hdev边界轮廓的圆形拟合

小哥哥小姐姐觉得有用点个赞呗!
在这里插入图片描述

示例程序源码(加注释)

  • 读入图片
    read_image (Image, ‘double_circle’)
  • 窗口初始化
    dev_close_window ()
    get_image_size (Image, Width, Height)
    dev_open_window (0, 0, Width, Height, ‘black’, WindowHandle)
  • 将区域分割出来并且去除边界
  • 快速阈值分割
    fast_threshold (Image, Region, 0, 120, 7)
  • 使用形态学运算来计算区域的边界,这里就是将图片边界提取出来
    boundary (Region, RegionBorder, ‘inner’)
  • 剪切最小外接矩形内缩的区域
    函数原型clip_region_rel(Region : RegionClipped : Top, Bottom, Left, Right : )
    Region :输入区域;RegionClipped :输出区域缩小的区域;Top, Bottom, Left, Right:内缩量
    外接矩形内缩后与原有外接矩形形成一个矩形环,就是将区域减去这个矩形环生成的区域。

    clip_region_rel (RegionBorder, RegionClipped, 5, 5, 5, 5)
  • 使用半径为2.5的圆形元素对区域进行膨胀
    dilation_circle (RegionClipped, RegionDilation, 2.5)
  • 减少图像定义域
    reduce_domain (Image, RegionDilation, ImageReduced)

提取边缘

  • edges_sub_pix - 使用Deriche,Lanser,Shen或Canny过滤器提取亚像素精确边缘
    函数原型:edges_sub_pix(Image : Edges : Filter, Alpha, Low, High : )
    Image :输入图像;Edges :输出的边缘;Alpha:滤波器宽度;
    Low:滞后阈值操作的阈值下限;High: 滞后阈值操作的阈值上限

    edges_sub_pix (ImageReduced, Edges, ‘canny’, 2, 20, 60)
  • segment_contours_xld - 分割XLD轮廓为线段和圆弧或椭圆弧
    函数原型;segment_contours_xld(Contours : ContoursSplit :
    Mode, SmoothCont, MaxLineDist1, MaxLineDist2 : )
    Contours :输入轮廓;ContoursSplit:分割后的轮廓;Mode:轮廓分割模式;
    SmoothCont:用于平滑轮廓的点数;MaxLineDist1:轮廓与近似线之间的最大距离(第一次迭代);
    MaxLineDist2 :轮廓与近似线之间的最大距离(第二次迭代)

    segment_contours_xld (Edges, ContoursSplit, ‘lines_circles’, 5, 4, 3)
  • 对区域元素进行计数
    count_obj (ContoursSplit, Number)
    显示
    dev_display (Image)
    dev_set_draw (‘margin’)
    dev_set_color (‘white’)
    dev_update_window (‘off’)
    for I := 1 to Number by 1
    • 通过索引号选取数组内的指定元素
      select_obj (ContoursSplit, ObjectSelected, I)
    • 返回XLD轮廓的全局属性值’cont_approx’表示:对于’cont_approx’=-1,轮廓近似线段;
    • ‘cont_approx’=0,曲线近似椭圆;‘cont_approx’=1,曲线近似圆弧。
      get_contour_global_attrib_xld (ObjectSelected, ‘cont_approx’, Attrib)
    • 圆弧线段进行圆形拟合
      if (Attrib > 0)
      • fit_circle_contour_xld 对XLD轮廓进行圆弧拟合。
        fit_circle_contour_xld (ObjectSelected, ‘ahuber’, -1, 2, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
      • 绘制拟合出来的圆
        gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, rad(360), ‘positive’, 1.0)
        dev_display (ContCircle)
        endif
        endfor
  • 显示设置与显示
    dev_set_colored (12)
    dev_set_line_width (3)
    dev_display (ContoursSplit)

处理思路

这个例子是集边界提取、边界分割、边界拟合于一个程序,进行了实际的讲解。这个例子当中的关于xld操作的算子以后我们做边界提取、测量时会用到很多。

后记

大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

asp.net 微信企业号办公系统-流程设计--保存与发布

如果流程未设计完时可以先保存,以后再打开接着设计。点击工具栏上的保存按钮即可保存当前流程设计: 如果下次要接着设计,则可以打开该流程继续设计: 如果流程设计完成,可以点击安装按钮来发布流程,流程安装成功后即加入…

Canny边缘检测算法原理及其VC实现详解(二)

3、 Canny算法的实现流程 由于本文主要目的在于学习和实现算法,而对于图像读取、视频获取等内容不进行阐述。因此选用OpenCV算法库作为其他功能的实现途径(关于OpenCV的使用,作者将另文表述)。首先展现本文将要处理的彩色图片。 …

IDEA注册jar包使用和常用插件

IDEA注册jar包使用 点击获取下载地址或生成注册码 一、安装完成后,先不启动,首先如下图修改相关的地方。 二、启动IDEA,并且激活IDEA IDEA插件仓库 IntelliJ IDEA Plugins 一、Maven Helper 我一般用这款插件来查看maven的依赖树。在不使用此…

Android Monkey压力测试

一. JAVA环境的搭建 安装jdk-8u151-windows-x64,可以到官网或者应用中心下载.JAVA环境变量的搭建: 在"我的电脑"-"属性"-"高级"-"环境变量"中,点击新建,填写变量名为JAVA_HOME,变量值为JAVA安装的路径.在系统变量中找到Path,点击编辑,…

bzoj 4517: [Sdoi2016]排列计数

4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 637 Solved: 396[Submit][Status][Discuss]Description 求有多少种长度为 n 的序列 A,满足以下条件:1 ~ n 这 n 个数在序列中各出现了一次若第 i 个数 A[i] 的值为 i&#x…

自制反汇编逆向分析工具 迭代第六版本 (五)

本工具从最初版的跳转分布图只为了更直观地分析反汇编代码的分支结构,第三版开始对直观图进行逆向分支代码的输出,第四版对分支输出策略的一些探索,第五版结合之前的探索进行改进。第六版在现在功能的基础上进行增强,利用第六版&a…

centos7搭建FTP服务器

1.   使用 yum 安装 vsftpd:yum install -y vsftpd 2.  启动 VSFTPD:systemctl start vsftpd.service 3.  启动后可监听到21端口:netstat -nltp | grep 21 4.  配置FTP权限:(vsftpd.conf,修改前先备…

教你如何剖析源码

一、源码阅读需求 在学习中,我们会需要了解,学习,使用一个框架,一个新的函数库。在工作中,因为业务需求,因为性能问题,可能通过一个更高性能的工具,架构去优化我们的程序。 那么&…

php调用API支付接口(转自刘68)

首先访问 https://charging.teegon.com/ 注册账号, 找到开发配置 记下client_id和client_secret。 点击 天工开放平台 点击天工收银 点击 SDK下载与使用 选择php版下载 解压后获得 打开form.php这个是样板文件可以用它来测试是否成功,测试前需要先修…

单目相机标定原理

一.相机标定主要涉及三个坐标系:图像坐标系、摄像机坐标系和世界坐标系 【图像坐标系】 摄像机采集的图像变换为数字图像后,每副数字图像在计算机内为M x N数组,M行N列的图像中每一个元素(pixel)数值就是图…

Android开始之 activity_lifecycle和现场保护

生命周期: oncreate—onstart—onresume,--onpause--onstop,——onrestart——onstart——onresume,。。onpause。。。onstop。。。ondestroy 现在保护---保存系统状态 通过这个方法保存到数据库中或者xml中,&#xff…

Apache启动错误:could not bind to address[::]:443

Q:Windows环境下启动apache报错如下: 可是在httpd.conf文件中apache listen的明明是http 80端口,为什么会报443的错误? A:因为你的计算机安装了VM,所有有个vm的进程一直占用着443端口,在命令行下…

针孔相机拍摄的图像坐标和空间点的对应关系

一:摄像机成像原理 摄像机成像模型一般有三种:透镜投影模型(小孔摄像机模型)、正交投影模型和透视投影模型 光学中最基本的高斯成像公式:1/u 1/v 1/f (式一) 原理图如下: 二:认识三个…

粥做得好不好,全凭一个良心!

粥做得好不好,全凭一个良心! 工作不也是凭良心么! 文章中的红色字体表达了一切! 霜降节气的到来,意味着冬季的临近,而霜降后气温的降低,利于蔬菜的淀粉沉淀,收浆后的莲藕也变得更为…

黑盒测试

引言: 什么是黑盒测试呢!? 像我一样的测试小白就会望文生义了:对黑盒子测试 那么黑盒子是什么!? 思考5秒后,得出了这样的答案:黑盒子就是黑色的盒子,嘿嘿! 正文&#xf…

Expo大作战(十二)--expo中的自定义样式Custom font,以及expo中的路由RouteNavigation

简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻个人修改补充…

悬浮按钮

效果图 //将dp转换为px public static int dip2px(Context context, float dpValue) {final float scale context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale 0.5f); }//浮动图片监听 private void initListener() {//弹出对话框jianwen.set…

图像坐标:我想和世界坐标谈谈(A) 【计算机视觉学习笔记--双目视觉几何框架系列】

玉米竭力用轻松具体的描述来讲述双目三维重建中的一些数学问题。希望这样的方式让大家以一个轻松的心态阅读玉米的《计算机视觉学习笔记》双目视觉数学架构系列博客。这个系列博客旨在捋顺一下已标定的双目视觉中的数学主线。数学推导是有着几分枯燥的,但奇妙的计算…

img

转载于:https://www.cnblogs.com/SoulCode/p/6508720.html

图像坐标:我想和世界坐标谈谈(B)

二、图像坐标:我想和世界坐标谈谈(B) 玉米将在这篇博文中,对图像坐标与世界坐标的这场对话中涉及的第二个问题:谈话方式,进行总结。世界坐标是怎样变换进摄像机,投影成图像坐标的呢? 玉米做了一个简单的图示…