Halcon焊点检测例子解析

  • 什么是焊点检测
    • 检测的目的
    • 检测的思路
    • 总结
    • Halcon焊点检测源码

什么是焊点检测


如图:以上为Halcon焊点检测例子所用图片【例程—>方法—>Blob分析—>ball.hdev】

按照上图操作可找到halcon焊点检测例程

检测的目的

①:识别焊点的个数
②:计算焊点的重心坐标,以及焊点面积
③:判断是否炸焊、少焊、漏焊

检测的思路

①:读取图片,若图片为彩色,则需要先灰度化图片

*读取图片(图片变量,'图片路径')
read_image (Image, 'D:\\image\\5.png')
*灰度化图片(原始图片,灰度化后的图片变量),因该图本就是灰度图片,故无需转灰度化操作
*rgb1_to_gray (Image, GrayImage)

②:进行灰度特征选择,一般是先过滤掉部分区域,但本例是在这过滤的部分区域当中,计算外矩形,而后在这矩形当中再次通过灰度特征选出焊点区域(因图片顶部的灰度与焊点灰度相近)

*二值化(图片,滤区域,灰色滤低值,灰色滤高值),得到128-255的灰度区域【白色255,黑色0】
threshold (Image, Region, 80, 255)


如上:红色区域为得到的二值化区域(注:虽然红色区域有断开,但所有的红色区域为一整个区域)

*预处理(导入的区域,导出处理后的区域,‘带方向矩形’),计算二值化得到灰度区域的外接矩形,目的是为了在此区域当中去选择焊点区域
shape_trans (Region, RegionTrans, 'rectangle2')


上图为预处理后的区域,目的是为了在此区域选择焊点区域,避免顶部灰度值相近的区域干扰

*抠图(原图,原图想要保留的区域,保留后的图片),做一个减域计算,减去顶部黑色部分
reduce_domain (Image, RegionTrans, ImageReduced)
*在处理后的图片做灰度特征选择,将灰度处于12-50的区域筛选出来
threshold (ImageReduced, Regions, 12, 50)


上图所有的红色部分为Regions,得到该区域后,通过圆度开运算保留圆度区域(也可以用腐蚀)

*圆形开运算(导入开运算区域,导出开运算后的区域,圆直径)
opening_circle (Regions, RegionOpening, 14)
*切割区域(需要切割的区域,切割后的区域集合),得到的区域是一个整体区域,需要切成若干个区域
connection (RegionOpening, ConnectedRegions)
*计算当前区域集合的个数
count_obj (ConnectedRegions, Number)


上图为是圆形开运算后切割区域得到的区域集合ConnectedRegions ,每种颜色代表着一个区域(如果按照操作后只有一个颜色,可点击菜单栏 可视化—>彩色数量—>12)

*特征选择(导入的区域,得到后的区域,‘根据的特征’,'','',‘')
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 461.29, 1551.61)
*显示焊点检测的原图
dev_display (Image)
*显示所有的焊点
dev_display (SelectedRegions)
*计算所有区域焊点的最小外接圆
smallest_circle (SelectedRegions, Row, Column, Radius)
*算出有多少个数
NumBalls := |Radius|
*直径
Diameter := 2 * Radius
*平均直径
meadDiameter := mean(Diameter)
*最小直径
minDiameter := min(Diameter)
*显示各个圆的直径
disp_message (WindowHandle, 'D:' + Diameter$'.4', 'image', Row - 2 * Radius, Column, 'white', 'false')
*关闭当前图形窗体


上图,为最终识别的结果图

总结

在动手之前,可先观察一下图片所要识别的区域有何特征,是否跟其他区域有相似地方。然后通过一系列的操作,将相似的地方加大差异化,过滤相似地方后通过特征等选择从而拿到想要检测的区域

Halcon焊点检测源码

dev_close_window ()
dev_open_window (0, 0, 700, 512, 'black', WindowHandle)
*读取图片(图片变量,'图片路径')
read_image (Image, 'D:\\image\\5.png')
*灰度化图片(原始图片,灰度化后的图片变量),因该图本就是灰度图片,故无需转灰度化操作
*rgb1_to_gray (Image, GrayImage)
*二值化,得到128-255的灰度区域【白色255,黑色0】
threshold (Image, Region, 80, 255)
*预处理,计算二值化得到灰度区域的外接矩形,目的是为了在此区域当中去选择焊点区域
shape_trans (Region, RegionTrans, 'rectangle2')
dev_display (RegionTrans)
*抠图,做一个减域计算,减去顶部黑色部分
reduce_domain (Image, RegionTrans, ImageReduced)
*灰度特征选择,将灰度处于12-50的区域筛选出来
threshold (ImageReduced, Regions, 12, 50)
*开运算,留下直径为14的圆
opening_circle (Regions, RegionOpening, 14)
*切割区域,得到的区域是一个整体区域,需要切成若干个区域
connection (RegionOpening, ConnectedRegions)
*计算当前的区域个数
count_obj (ConnectedRegions, Number)
*特征选择
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 461.29, 1551.61)
*显示焊点检测的原图
dev_display (Image)
*显示所有的焊点
dev_display (SelectedRegions)
*计算所有区域焊点的最小外接圆
smallest_circle (SelectedRegions, Row, Column, Radius)
*算出有多少个数
NumBalls := |Radius|
*直径
Diameter := 2 * Radius
*平均直径
meadDiameter := mean(Diameter)
*最小直径
minDiameter := min(Diameter)
*显示各个圆的直径
disp_message (WindowHandle, 'D:' + Diameter$'.4', 'image', Row - 2 * Radius, Column, 'white', 'false')
*关闭当前图形窗体
dev_close_window ()by:在下初入江湖,理解不到位的地方欢迎各位大佬留言,私信给予斧正,感谢!

Halcon焊点检测例子解析相关推荐

  1. Halcon焊点检测

    (1)channels_to_image:*多张图片组合成一个通道 (2)mean_n: *对多个通道图片做灰度平均运算,生成一张图片 (3)select_obj:选择数组中的一个 (4)comple ...

  2. halcon 焊点检测案例

    *循环读入图片 list_files('F:/halcon_test/circularity_die', 'files', Files) tuple_regexp_select (Files, '.p ...

  3. HALCON之焊点检测(二):基于形态学的基础焊点检测方法

    我们来看一下焊点检测的基础算法,这种方法基于halcon的形态学算法. 其基本流程为: 阈值分割->填充region->选择region 下面是实验图片 下面为halcon程序: read ...

  4. Halcon实例转OpenCV之焊点检测

    Halcon例程中有一个焊点检测例程ball.hdev,大家可以在例程中搜索查看,如下是实例使用的测试图和运行结果图: 测试图像: 运行结果图: 实现的大致步骤: ① 二值化后获取Board区域,设置 ...

  5. HALCON之焊点检测(一):焊点检测工艺要求

    一.焊点检测需求的由来 在锂电池生产线上,电芯被分为软包与硬包两种.其中软包的电芯最常见.大家使用的数码设备如大部分品牌的手机.平板.手环等产品许多都是软包电芯,如下图: 这种电芯的特点是其包装是材质 ...

  6. HALCON:lines_gauss用法解析

    HALCON:lines_gauss用法解析 lines_gauss:检测图像中的线条及其宽度,在视觉表面检测方面应用广泛. lines_gauss(Image : Lines : Sigma, Lo ...

  7. Halcon表面缺陷检测

    Halcon表面缺陷检测 本文章转载自 link 1* Optimize the fft speed for the specific image size 优化特定图像大小的FFT速度 optimi ...

  8. 视觉成长之路Halcon——颜色检测:GMM分类器

    视觉成长之路Halcon--颜色检测:GMM分类器 前言 一.算子介绍 二.程序 总结 前言 通过系统案例学习GMM分类器在颜色识别中的应用 一.算子介绍 1.gen_rectangle1通过两个坐标 ...

  9. 深度学习目标检测详细解析以及Mask R-CNN示例

    深度学习目标检测详细解析以及Mask R-CNN示例 本文详细介绍了R-CNN走到端到端模型的Faster R-CNN的进化流程,以及典型的示例算法Mask R-CNN模型.算法如何变得更快,更强! ...

最新文章

  1. 打造自己的树莓派监控系统1--CPU监控-matplotlib显示数据
  2. Android Retrofit @Streaming 注解失效(二)
  3. 团队-团队编程项目中国象棋-项目进度
  4. java.util.regex包下的Pattern和Matcher详解(正则匹配)
  5. Shell图形化监控网络流量
  6. HBase数据存储格式
  7. CSS3的边框(二)
  8. elementUI表单验证
  9. 机器视觉LED光源的选择及其性能优势
  10. 软件测试——检查代码
  11. PostgreSQL之Foreign Data Wrappers使用指南
  12. 使用calibre搭建了一套电子图书系统
  13. Win7系统开机动画设置
  14. mysql hive 建表语句_关于Mysql元数据如何生成Hive建表语句注释脚本
  15. 【渝粤教育】电大中专跨境电子商务理论与实务答案作业 题库
  16. 服务器系统补丁失败,windows server 2008更新补丁失败排错
  17. “IP地址/24”是什么意思
  18. 计算机搜索文件时找不到搜索按钮,win7搜索功能 为什么明明有那个文件却搜索不到呢?-win7搜索不到文件,win7搜索文件内容搜不出来...
  19. ARP欺骗实验-Wireshark-长角牛网络监控
  20. 两个顺序栈共享一个数组的存储空间

热门文章

  1. 2017年前思绪整理
  2. frontpage动态html效果,FrontPage基础教程特效按钮的制作
  3. 将训练好的模型转化为pb文件及pb应用
  4. 百兆、千兆网线的做法
  5. dreamweaver cs5 css教程,网页设计与制作——Dreamweaver CS5标准教程第12章 CSS+Div布局.pptx...
  6. c语言编译器10.110去广告,msvcp110.dll电脑文件
  7. 基于SSM框架的大学生自主学习网站的设计与开发/在线学习系统
  8. oracle scn 作用,Oracle中scn讲解
  9. e900V21e刷机固件及教程(电信创维)
  10. Swoft View 视图