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.pswp.cn/news/255266.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/255266.shtml

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

相关文章

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

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

search-guard 在 Elasticsearch 2.3 上的运用

uni3orns 2016/06/23 11:09Author:uni3orns参考内容:kibana.logstash.es/content/ela…groups.google.com/forum/#!for…github.com/floragunnco…此文章基于以下软件版本,不同版本可能略有差异:elasticsearch 2.3.3search-guard…

HALCON示例程序class_2dim_sup.hdev使用二维像素分类对图像进行分割

HALCON示例程序class_2dim_sup.hdev使用二维像素分类对图像进行分割 示例程序源码(加注释) 定义Interactive并赋值,0:固定框;1:手工绘制框。 Interactive : 0 读入图片 read_image (Image, ‘ic’) 关闭…

sys

sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初…

修改环境变量

在path变量后添加,对变量长度无限制,需要重启后生效reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;c:\newpath;whatever" /freg save "HKLM\SYSTEM\CurrentCont…

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

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

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

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

HALCON示例程序class_2dim_unsup.hdev基于二维直方图的聚类分类

HALCON示例程序class_2dim_unsup.hdev基于二维直方图聚类分类的颜色分类 示例程序源码(加注释) 读入图片 read_image (Image, ‘patras’)关闭窗口 dev_close_window ()得到图片尺寸大小 get_image_size (Image, Width, Height)打开窗口 dev_open_wind…

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…

idea compare功能 之一次bug修复

一次bug修复 最近开发完了一套单点系统,jenkins打包上传到服务器就出问题, 可以启动但是不能正常工作。 首先想到的是环境不一样, 于是把jenkins的jdk和maven都调整和本机大版本相同。 当然肯定是没卵用的, 于是查看日志 Class pa…

黑白CCD成像不理想,如何补色

黑白CCD成像不理想,如何补色

HALCON示例程序class_ndim_box.hdev基于多通道图像的分类

HALCON示例程序class_ndim_box.hdev基于多通道图像的分类 示例程序源码(加注释) 读入图片 read_image (Image, ‘ic’)创建一个新的分类器 create_class_box (ClassifHandle)获取图片大小 get_image_size (Image, Width, Height)关闭窗口 dev_close_wi…

gcc编译系统

一、 C语言编译过程 C语言的编译过程可分为四个阶段: 1、预处理(Preprocessing) 对源程序中的伪指令(即以#开头的指令)和特殊符号进行处理的过程。 伪指令包括:1)宏定义指令; 2&…

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

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

模型搜索 及 轮廓搜索 的原理

模型搜索 及 轮廓搜索 的原理

Linux中设置vim自动在运算符号两边加上空格

vim中设置自动在-之类的运算符号左右两边加上空格。原版的vim不带这个功能,写出的代码例如zxy,不美观,很多编译器(如VS)能够自动在符号两边加上空格,如z x y,看起来比较美观。 只要在.vimrc里…

HALCON示例程序class_ndim_norm.hdev基于多通道图像的分类

HALCON示例程序class_ndim_norm.hdev基于多通道图像的分类 示例程序源码(加注释) 读入图片 read_image (Image, ‘ic’)得到图片大小 get_image_size (Image, Width, Height)关闭窗口 dev_close_window ()根据图片大小打开窗口 dev_open_window (0, 0,…

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,修改前先备…

[HDOJ2586]How far away?(最近公共祖先, 离线tarjan, 并查集)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid2586 这题以前做过…现在用tarjan搞一发…竟然比以前暴力过的慢………… 由于是离线算法,需要Query来保存查询数据,Ans来保存结果。最后输出的时候按照idx的顺序输出,所以胡搞…