Halcon焊点检测例子解析
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焊点检测例子解析相关推荐
- Halcon焊点检测
(1)channels_to_image:*多张图片组合成一个通道 (2)mean_n: *对多个通道图片做灰度平均运算,生成一张图片 (3)select_obj:选择数组中的一个 (4)comple ...
- halcon 焊点检测案例
*循环读入图片 list_files('F:/halcon_test/circularity_die', 'files', Files) tuple_regexp_select (Files, '.p ...
- HALCON之焊点检测(二):基于形态学的基础焊点检测方法
我们来看一下焊点检测的基础算法,这种方法基于halcon的形态学算法. 其基本流程为: 阈值分割->填充region->选择region 下面是实验图片 下面为halcon程序: read ...
- Halcon实例转OpenCV之焊点检测
Halcon例程中有一个焊点检测例程ball.hdev,大家可以在例程中搜索查看,如下是实例使用的测试图和运行结果图: 测试图像: 运行结果图: 实现的大致步骤: ① 二值化后获取Board区域,设置 ...
- HALCON之焊点检测(一):焊点检测工艺要求
一.焊点检测需求的由来 在锂电池生产线上,电芯被分为软包与硬包两种.其中软包的电芯最常见.大家使用的数码设备如大部分品牌的手机.平板.手环等产品许多都是软包电芯,如下图: 这种电芯的特点是其包装是材质 ...
- HALCON:lines_gauss用法解析
HALCON:lines_gauss用法解析 lines_gauss:检测图像中的线条及其宽度,在视觉表面检测方面应用广泛. lines_gauss(Image : Lines : Sigma, Lo ...
- Halcon表面缺陷检测
Halcon表面缺陷检测 本文章转载自 link 1* Optimize the fft speed for the specific image size 优化特定图像大小的FFT速度 optimi ...
- 视觉成长之路Halcon——颜色检测:GMM分类器
视觉成长之路Halcon--颜色检测:GMM分类器 前言 一.算子介绍 二.程序 总结 前言 通过系统案例学习GMM分类器在颜色识别中的应用 一.算子介绍 1.gen_rectangle1通过两个坐标 ...
- 深度学习目标检测详细解析以及Mask R-CNN示例
深度学习目标检测详细解析以及Mask R-CNN示例 本文详细介绍了R-CNN走到端到端模型的Faster R-CNN的进化流程,以及典型的示例算法Mask R-CNN模型.算法如何变得更快,更强! ...
最新文章
- 打造自己的树莓派监控系统1--CPU监控-matplotlib显示数据
- Android Retrofit @Streaming 注解失效(二)
- 团队-团队编程项目中国象棋-项目进度
- java.util.regex包下的Pattern和Matcher详解(正则匹配)
- Shell图形化监控网络流量
- HBase数据存储格式
- CSS3的边框(二)
- elementUI表单验证
- 机器视觉LED光源的选择及其性能优势
- 软件测试——检查代码
- PostgreSQL之Foreign Data Wrappers使用指南
- 使用calibre搭建了一套电子图书系统
- Win7系统开机动画设置
- mysql hive 建表语句_关于Mysql元数据如何生成Hive建表语句注释脚本
- 【渝粤教育】电大中专跨境电子商务理论与实务答案作业 题库
- 服务器系统补丁失败,windows server 2008更新补丁失败排错
- “IP地址/24”是什么意思
- 计算机搜索文件时找不到搜索按钮,win7搜索功能 为什么明明有那个文件却搜索不到呢?-win7搜索不到文件,win7搜索文件内容搜不出来...
- ARP欺骗实验-Wireshark-长角牛网络监控
- 两个顺序栈共享一个数组的存储空间
热门文章
- 2017年前思绪整理
- frontpage动态html效果,FrontPage基础教程特效按钮的制作
- 将训练好的模型转化为pb文件及pb应用
- 百兆、千兆网线的做法
- dreamweaver cs5 css教程,网页设计与制作——Dreamweaver CS5标准教程第12章 CSS+Div布局.pptx...
- c语言编译器10.110去广告,msvcp110.dll电脑文件
- 基于SSM框架的大学生自主学习网站的设计与开发/在线学习系统
- oracle scn 作用,Oracle中scn讲解
- e900V21e刷机固件及教程(电信创维)
- Swoft View 视图