知识点是鱼,套路是渔。授人以鱼不如授人以渔!”

一般在做项目时,无论是边缘检测、瑕疵检测、Blob检测等应用,都有一定的通用套路,也可以说是通用处理框架,在此框架下根据具体应用具体分析,基本上所有项目都可完成。

总结起来:通用套路 + 灵活运用

对于初学者来说,只需掌握通用套路即可,灵活运用需要经过大量的练习才可达到,运用大学里学马克思哲学时的一句话概括,“量变引起质变”,当你达到这个程度之时,俨然成为集大成者了。

边缘检测通用思路:

  • 设置ROI感兴趣区域,此区域需包含待检测边缘;

  • 二值化处理,并打散连接区域,进一步选取目标区域;

  • 将目标区域进行膨胀处理;

  • 将目标区域进行腐蚀处理;

  • 将膨胀后的区域和腐蚀后的区域进行减操作,并进行抠图处理,目的为了得到有边缘的真实图像;

  • 使用边缘检测算子提取亚像素轮廓;

  • 根据得到的真实边缘,进步处理和计算所需的线、弧、圆等;

现学现用:检测圆

处理思路:1. 根据以上所讲套路,求得外边缘轮廓;

2. 根据所得轮廓,拟合圆;
1:检测外边缘轮廓

外边缘处理后,如下图所示,会提取一些干扰轮廓,第2部分–拟合圆,会对此进行处理。

附第一部分 halcon源代码

*读入图片 
read_image (Image, ‘cicle.bmp’)

*计算图片大小,并以原图尺寸显示 
get_image_size (Image, Width, Height) 
dev_close_window () 
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle) 
dev_display (Image)

*01. 设置ROI感兴趣区域 
gen_rectangle1 (ROI, 50, 50, 550, 550) 
reduce_domain (Image, ROI, ImageReduced)

*02. 二值化处理,并打散连接区域,选取目标区域 
threshold (ImageReduced, Regions, 23, 255) 
connection (Regions, ConnectedRegions) 
select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 57706.4, 86146.8)

*03. 将目标区域进行膨胀处理 
dilation_circle (SelectedRegions, RegionDilation, 10)

*04. 将目标区域进行腐蚀处理 
erosion_circle (SelectedRegions, RegionErosion, 4) 
*填充孔洞 
fill_up (RegionErosion, RegionFillUp)

*05. 将膨胀后的区域和腐蚀后的区域进行减操作,并进行抠图处理,目的为了得到有边缘的真实图像 
difference (RegionDilation, RegionFillUp, RegionDifference) 
union1 (RegionDifference, RegionUnion) 
reduce_domain (ImageReduced, RegionUnion, ImageReduced1)

*06. 使用canny算子提取亚像素轮廓 
edges_sub_pix (ImageReduced1, Edges, ‘canny’, 1, 20, 40)

2:拟合圆

此时进行套路中的最后一步,根据得到的真实边缘,进步处理和计算所需的线、弧、圆等,在这一步我们常用分割函数 segment_contours_xld,联合相邻直线函数 union_collinear_contors_xld,选择轮廓函数select_contours_xld,联合相同圆函数 union_cocircular_contours_xld等函数,进一步对边缘轮廓处理,也可根据找到的轮廓边缘,得到点云数据,拟合成圆、直线、椭圆等;

处理后如下图所示。

附第二部分 halcon源代码

*07. 根据得到的真实边缘,进步处理和计算所需的线、弧、圆等 
segment_contours_xld (Edges, ContoursSplit, ‘lines_circles’, 5, 4, 2) 
select_contours_xld (ContoursSplit, SelectedContours, ‘contour_length’, 8, 1000, -0.5, 0.5) 
union_adjacent_contours_xld (SelectedContours, UnionContours3, 10, 1, ‘attr_keep’) 
fit_circle_contour_xld (UnionContours3, ‘algebraic’, -1, 0, 0, 3, 2, Row1, Column1, Radius1, StartPhi, EndPhi, PointOrder) 
gen_circle (Circle, Row1, Column1, Radius1)

*显示结果 
dev_set_line_width (2) 
dev_set_draw (‘margin’) 
dev_display (Image) 
dev_display (Circle)

原图及完整源代码见百度网盘:

链接:https://pan.baidu.com/s/1FLZGJ7abz7CoqoweuGv3uQ 密码:au2h

halcon教程- 边缘检测 亚像素边缘提取 轮廓提取相关推荐

  1. 【Halcon视觉】图像亚像素边缘提取

    目录 概念 算子 代码 实例 1.概念 亚像素:原先的像素单位为1,变为比1小的精度.亚像素比像素精度更高. 亚像素边缘提取原理:采用插值算法,精确定位边缘的位置. 2.算子 Halcon提供了亚像素 ...

  2. 亚像素边缘提取的例子

    求帮忙下载: 1.http://download.csdn.net/detail/pkma75/925394 pkma75 资源积分:1分 备注:pdf格式,用曲线拟合的方法计算亚像素,编程易实现,具 ...

  3. halcon像素统计_Halcon学习(27-1)halcon测量技术:亚像素,亚像素精度

    友发来两个小项目,要求亚像素精度.突然想问几个问题:1.何为亚像素?2.何为亚像素精度?3.使用亚像素测量,系统应注意什么? 1.何谓亚像素? 面阵摄像机的成像面以像素为最小单位.例如某CMOS摄像芯 ...

  4. 使用OpenCV实现Halcon算法(1)亚像素提取边缘,Sub-Pixel Edge Detector

    声明:本篇仅仅是分享网上的开源项目,算法非本人原创.转载文章: <A Sub-Pixel Edge Detector: an Implementation of the Canny/Devern ...

  5. halcon 亚像素定义以及测量拟合

    流程: 实现流程: 1>采集图像 2>预处理(RoI) :缩小干扰的区域 3>亚像素的边缘提取(xld) edges_sub_pix 边缘提取算子 threshold_sub_pix ...

  6. opencv亚像素边缘精度_opencv亚像素边缘检测

    一种新的基于 Zernike 正交矩亚像素边缘定位的直径测量方法 [J], 宋晋国; 党 宏社; 洪英; 梁勇 2.一种改进的正交 Fourier-Mellin 矩亚像素边缘检测算法 [C...... ...

  7. MATLAB亚像素定位,亚像素精准边缘定位

    1.http://download.csdn.net/detail/pkma75/925394 pkma75 资源积分:1分 备注:pdf格式,用曲线拟合的方法计算亚像素,编程易实现,具有较强的实用价 ...

  8. opencv亚像素边缘精度_OpenCV亚像素角点cornerSubPixel()源代码分析

    上一篇博客中讲到了goodFeatureToTrack()这个API函数能够获取图像中的强角点.但是获取的角点坐标是整数,但是通常情况下,角点的真实位置并不一定在整数像素位置,因此为了获取更为精确的角 ...

  9. 基于亚像素的图像测量仪标定算法(满视场棋盘格,张正友标定法)

    图像测量仪对测量的精度极高,能达到0.001毫米,所有的图像边缘分割和摄像头标定,都在亚像素级水平上进行.目前我们能做到1/100个像素的提取.图像测量仪的关键部分在于亚像素分割.亚像素分割算法各种各 ...

  10. halcon像素统计_Halcon(八)亚像素轮廓XLD

    fast_threshold (Image, Region, 0, 120, 7) boundary (Region, RegionBorder, 'inner') dilation_circle ( ...

最新文章

  1. UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机
  2. 用 ArrayList 还是 LinkedList?
  3. jQuery的AJAX
  4. [数据结构]合并有序数组
  5. sort()函数、C++
  6. yum 不能安装应用,提示There are no enabled repos Run yum repolist all
  7. 【软件工程】--软工文档总结
  8. 《Effective C#》Item 7:推荐使用不可改变的原子值类型
  9. 通过elasticsearch对日志进行搜索热词统计
  10. 解决tomcat内存溢出问题
  11. 打印机扫描计算机远程扫描仪,怎么用打印机扫描文件-彩色网络打印机扫描设置FTP版...
  12. 计算机硬盘显示ntfs,电脑硬盘显示NTFS
  13. CNVD-2020-10487复现(Apache Tomcat文件包含漏洞)
  14. 20.4版本Ubuntu中部署LAMP环境,部署论坛discuz
  15. CTO说出了我的成长慢的原因,价值10万:“在VUCA时代,必须掌握的12种永久技能。”...
  16. elementui中导航组件点击二级菜单页面跳转但是二级菜单关闭问题
  17. Linux的for循环语句
  18. 改成每天晚上锻炼身体
  19. 林大ACM培训心得day4
  20. ACCA的详细介绍以及报名条件,这里全的有!

热门文章

  1. 轻松制作趣味配图,这个小程序真会玩
  2. Wordpress网站渗透测试(进阶详细思路)
  3. 使用3CDaemon 进行ftp 传输文件 (linux-开发板) 的方法
  4. KVM虚拟化技术介绍以及相关操作
  5. 字段计算器python教程_字段计算器综合(python-02)
  6. pywinauto实战-操作h2testw.exe自动化测试脚本
  7. android javacv,【首发】AndroidStudio配置JavaCV环境
  8. C# SQLHelper类
  9. 黑客帝国产业链调查:熊猫烧香作者一年赚千万
  10. Flask 框架学习1