xld(extended Line Descriptions):扩展线的描述。

在halcon中经常会用到的两个概念:
1、region简单的理解区域region,就是某种具有结构体性质的二值图,正常像素再图像放大后你看到的是一个个的小方块,所有在图像都会沿着像素单位(方块)走。
2、xld亚像素轮廓:是一系列有序的控制点集合是halcon中自己通过计算得到的点组成的轮廓,比region更为准确。

下图来直观的看一下region和xld,在图像上表现的不同:

这个是region,它是用每个小方块(像素)组成的:

这个是xld,可以看到线和每个像素(小方块)会有不同的交点,这是haolcon自己计算的:

XLD代表亚像素级别的轮廓或者多边形。

XDL就是一个轮廓函数,它不是基于像素,人们通常称他为亚像素,只不过它比像素更精确,可以精确到像素内部的一种描述。

在Halcon中,使用XLD表示亚像素的轮廓和多边形。常用edges_sub_pix算子来提取亚像素轮廓。
       我们都知道图片是由像素组成,当我们用halcon读取图像Image或者region的时候,获得的数据就是像素。这些数据结构都是像素级别的。
       获得图像后,我们可以通过亚像素阈值分割或者亚像素边缘提取,这样这些处理得到的结果其实就是用亚像素轮廓来表示。。
       上述所述亚像素轮廓其实在halcon中指的就是xld,它可以表示直线或多边形,是一组有序的控制点集合,控制点顺序用来说明彼此相连的关系。

亚像素的轮廓可以分为两种:
1.闭轮廓:首尾相交
2.开轮廓:首尾不相交
-------------------------xld:像素插值后拟合成得线段------------

汽车引擎盖圆孔检测与定位:

*二值化+区域转轮廓线+椭圆拟合=求取中心点
read_image(Image,'C:/Users/TIMI/Desktop/picture/fin1.png')
*先找亮度区域
threshold (Image, Regions, 128, 255)
*连通域做拆分connection
*如果存在孔洞要不要先填充一下
*fill_up(Regions,CircleRegion)
*有可能要做闭运算
closing_circle(Regions,RegionClosing,43.5)
connection(Regions,ConnectRegions)
*选取
select_shape_std(ConnectRegions,CircleRegion,'max_area',70)
*区域转凸形(就是多边形)
shape_trans(CircleRegion,transRegion,'convex')
*剪切出来
dev_set_color('yellow')
reduce_domain(Image,transRegion,ReduceImage)
*再找黑色区域(使用这个方法自动找到黑色区域)
binary_threshold(ReduceImage,BinaryRegion,'max_separability','dark',UsedThreshold)
connection(BinaryRegion,ConnectBinaryRegion)
count_obj(ConnectBinaryRegion,Number1)
fill_up(ConnectBinaryRegion,FillConnectBinaryRegion)
count_obj(FillConnectBinaryRegion,Number2)
select_shape (FillConnectBinaryRegion, SelectedRegions, ['area','circularity'],\'and', [10185.2,0.7269], [33888.9,1])*找到区域之后呢,做定位有两种方法:
*1、区域转轮廓线
gen_contour_region_xld(SelectedRegions,Contours,'border')
dev_set_draw('margin')
dev_display(Image)
select_shape_xld(Contours,SelectedXLD,'circularity', 'and', 0.7269,1)
fit_ellipse_contour_xld(SelectedXLD,'fitzgibbon',-1,0,0,200,3,2.0, \Row, Column, Phi, Radius1, Radius2, StartPhi, \EndPhi, PontOrder)
gen_ellipse_contour_xld(ContEllipse,Row,Column,Phi,Radius1,Radius2,0,6.28319, \'positive',1.5)
gen_cross_contour_xld(Cross1,Row,Column,36,rad(45))
dev_clear_window()
dev_display(Image)
dev_set_color('red')
dev_display(ContEllipse)
dev_set_color('green')
dev_display(Cross1)
*2、

结果:

概念参考:https://blog.csdn.net/weixin_42258743/article/details/107427493

halcon:(4)halcon中XLD的概念与应用----汽车引擎盖圆孔检测相关推荐

  1. halcon工件圆孔检测

    halcon工件圆孔检测 下面展示一些 码片. * This program gets the deviation between * circular contours and their best ...

  2. Halcon知识: XLD的概念

    一.halcon中XLD的概念与应用, 1.1  halcon中什么是XLD?        XLD(eXtended Line Descriptions):XDL就是一个轮廓函数,它不是基于像素,人 ...

  3. Halcon算子学习:XLD几种边缘连接函数

    Halcon算子学习:XLD几种边缘连接函数 1.union_cotangential_contours_xld (Contours : UnionContours : FitClippingLeng ...

  4. halcon算法库中各坐标系,位姿的解释及原理

    halcon算法库中各坐标系,位姿的解释及原理 前言 在学习halcon和光学原理的过程中,经常会听到像素坐标系,窗口坐标系,世界坐标系等等,很多时候会一头雾水,这时候一定要仔细甄别,了解其原理,才能 ...

  5. 【Halcon】halcon中的常用算子的中文说明

    HALCON中的算子大全(中英对照) sub_image (ImageConverted1, ImageConverted2, ImageSub, 1, 0)一幅图减另一幅图.用一幅图的灰度减另一幅的 ...

  6. Baumer工业相机堡盟工业相机如何使用BGAPISDK联合Halcon将图像中的六一快乐字体提取出来(C#)

    Baumer工业相机堡盟工业相机如何使用BGAPISDK联合Halcon将图像中的六一快乐字体提取出来(C#) Baumer工业相机 Baumer工业相机使用Halcon图像算法的技术背景 Baume ...

  7. ☀️手把手教你HALCON在VS2017中搭建C++环境☀️《❤️记得收藏❤️》

    ☀️手把手教你HALCON在VS2017中搭建C++环境☀️<❤️记得收藏❤️>

  8. 【Halcon】Halcon语法 与 《halcon工业应用实用教程》

    http://blog.sina.com.cn/s/blog_61cc743001018gny.html 好久没有写篇文章了.写一篇总结吧. 1.Halcon的自我描述 Program Logic Ø ...

  9. 【Halcon】Halcon与OpenCV介绍、比较

    from:https://blog.csdn.net/taily_duan/article/details/51499769 1.MVTec HALCON MVTec HALCON 是世界上最全能的机 ...

最新文章

  1. Linux登录那点事
  2. 死锁产生原因-竞争临时资源
  3. NFV技术本质是强调网络功能的软硬件同化能力,实现网络价值由硬件向软件的前移
  4. 确定需要改变几个位,才能将整数A转变为整数B
  5. 【5】C++语法与数据结构之STL_list学生管理系统_链表内排序_函数指针
  6. 4 初学入门_2020年最新版,如何挑选入门级,进阶级和专业级网球拍(12月更新)...
  7. java stream intermediateterminal方法
  8. 如何提高VS2010的性能,VS2010不再…
  9. mysql show sleep_mysq解决sleep进程过多的办法
  10. 优秀代码所具备的5大品质 你的代码呢?
  11. 蓝桥杯13-20届真题答案解析(Java 大学 B 组)2013年省赛真题5_有理数类
  12. python安装setup.py命令_python安装模块如何通过setup.py安装(超简单)
  13. android内存碎片问题优化梳理
  14. RestAssured实现POST请求
  15. 动漫设计系统(基于ASP.NET的动态网站)
  16. php判断某天星期几,php怎么判断指定日期是星期几?
  17. android 修改充电图标,更换图标、修改充电音...这个软件把iPhone玩成了安卓
  18. android 手机 p8 GRA-CL00 无法收到组播问题记录
  19. 古有陈天华万字血书抗沙俄,今有本剧蒻万字背包虐dp(01,完全,多重,分组,混合等各种背包详解 + 板子题+ 奇奇怪怪滴变式题)
  20. 2014阿里巴巴实习生招聘-研发工程师笔试题/网络编程小结

热门文章

  1. window路径和linux路径变换,从linux样式路径转换时,Docker装入的卷将; C添加到Windows路径的末尾...
  2. n皇后问题JS实现(N-Queens)
  3. 中国互联网+光伏逆变器行业商业模式创新与投资机会深度研究报告
  4. Gradle安装使用以及基本操作
  5. Hat’s Words(字典树)
  6. OC学习笔记之Foundation框架NSNumber、NSValue和NSDate(转)
  7. 在js中使用createElement创建HTML对象和元素
  8. 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较
  9. 爱不释手(Typingfaster)1.78beta,重大升级,欢迎试用,期待反馈。
  10. token验证失败_ASP.NET CORE WEBAPI JWT 带BEARER的TOKEN