Halcon焊点检测
(1)channels_to_image:*多张图片组合成一个通道
(2)mean_n: *对多个通道图片做灰度平均运算,生成一张图片
(3)select_obj:选择数组中的一个
(4)complement: 求补集
(5)expand_region(Regions, ForbiddenArea : RegionExpanded : Iterations, Mode : )
区域扩张,ForbiddenArea:不允许扩张到的区域。'maximal':扩张到极限
* board.hdev: Detection of missing solder
*
get_system ('clip_region', Information)
set_system ('clip_region', 'true')
dev_update_window ('off')
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowID)
read_image (Images, ['ic0','ic1','ic2','ic3'])
*多张图片组合成一个通道
channels_to_image (Images, Ic)
select_obj (Images, Input1, 1)
dev_display (Input1)
set_display_font (WindowID, 14, 'mono', 'false', 'false')
disp_continue_message (WindowID, 'black', 'true')
stop ()
select_obj (Images, Input2, 2)
dev_display (Input2)
disp_continue_message (WindowID, 'black', 'true')
stop ()
select_obj (Images, Input3, 3)
dev_display (Input3)
disp_continue_message (WindowID, 'black', 'true')
stop ()
select_obj (Images, Input4, 4)
dev_display (Input4)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*对多个通道图片做灰度平均运算,生成一张图片
mean_n (Ic, ImageMean)
dev_display (ImageMean)
*选出所有应当有的焊点
threshold (Images, Darks, 0, 40)
union1 (Darks, Dark)
fill_up (Dark, DarkFilled)
dev_set_color ('green')
dev_display (DarkFilled)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*选出焊点以外的底板
threshold (Images, Lights, 100, 255)
union1 (Lights, Light)
*两个区域相交选出良好的焊点轮廓
intersection (DarkFilled, Light, Intersection)
dev_display (ImageMean)
dev_display (Intersection)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*用焊点的补集更准确的选出底板
complement (DarkFilled, Back)
dev_set_color ('red')
dev_display (Back)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*expand_region:扩张良好的焊点轮廓而不越过底板的区域,使清楚显示良好的焊点区域。
*因为图片除了底板就是焊点,所有如果所有焊点良好则焊点轮廓适当生长并填充后应该填满底板以外的所有区域
*但有不良的焊点包含且孤立在底板区域内时,这些孔洞将不能填满,这些就是不良焊点
*不选择'maximal',只要适当扩张轮廓再填充,以免干扰不良焊点
expand_region (Intersection, Back, RegionExpanded, 10, 'image')
fill_up (RegionExpanded, Good)
dev_display (ImageMean)
dev_set_color ('green')
dev_display (Good)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*用所有焊点减去良好焊点,求出不良焊点
difference (DarkFilled, Good, Rest)
dev_set_color ('red')
dev_display (Rest)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*expand_gray : ???
expand_gray (Rest, Ic, Good, Bad, 'maximal', 'image', 5)
dev_display (Bad)
disp_continue_message (WindowID, 'black', 'true')
stop ()
connection (Bad, ConnectedBad)
select_shape (ConnectedBad, BigBad, 'area', 'and', 150, 99999)
area_center (BigBad, AreaBad, Row, Column)
count_obj (BigBad, NumMissingSolder)
AreaMissingSolder := sum(AreaBad)
dev_display (Images)
dev_set_color ('green')
dev_set_draw ('margin')
dev_set_line_width (3)
dev_display (Good)
dev_set_color ('red')
dev_display (BigBad)
dev_set_draw ('fill')
dev_set_line_width (1)
dev_update_window ('on')
set_system ('clip_region', Information)
Halcon焊点检测相关推荐
- Halcon焊点检测例子解析
Halcon焊点检测例子解析 什么是焊点检测 检测的目的 检测的思路 总结 Halcon焊点检测源码 什么是焊点检测 如图:以上为Halcon焊点检测例子所用图片[例程->方法->Blob ...
- halcon 焊点检测案例
*循环读入图片 list_files('F:/halcon_test/circularity_die', 'files', Files) tuple_regexp_select (Files, '.p ...
- Halcon实例转OpenCV之焊点检测
Halcon例程中有一个焊点检测例程ball.hdev,大家可以在例程中搜索查看,如下是实例使用的测试图和运行结果图: 测试图像: 运行结果图: 实现的大致步骤: ① 二值化后获取Board区域,设置 ...
- HALCON之焊点检测(二):基于形态学的基础焊点检测方法
我们来看一下焊点检测的基础算法,这种方法基于halcon的形态学算法. 其基本流程为: 阈值分割->填充region->选择region 下面是实验图片 下面为halcon程序: read ...
- HALCON之焊点检测(一):焊点检测工艺要求
一.焊点检测需求的由来 在锂电池生产线上,电芯被分为软包与硬包两种.其中软包的电芯最常见.大家使用的数码设备如大部分品牌的手机.平板.手环等产品许多都是软包电芯,如下图: 这种电芯的特点是其包装是材质 ...
- Halcon缺陷检测系列
Halcon缺陷检测系列Halcon缺陷检测系列Halcon缺陷检测系列 一 注塑吸嘴缺口检测 二 铣刀刀口破损缺陷检测 三 网状产品表面破损检测 四 手机摄像头图像表面的轻微缺陷检测 五 皮革纹理表 ...
- Halcon表面缺陷检测
Halcon表面缺陷检测 本文章转载自 link 1* Optimize the fft speed for the specific image size 优化特定图像大小的FFT速度 optimi ...
- Halcon 缺陷检测 金属拉丝表面缺陷检测(乘法增强、傅里叶变换与卷积、纹理过滤、动态阈值)
Halcon 缺陷检测 拉丝表面缺陷检测(乘法增强.傅里叶变换与卷积.纹理过滤.动态阈值) 文件下载 链接:https://pan.baidu.com/s/1HNl4vy0jEaFx5OUuBDAMX ...
- 视觉成长之路Halcon——颜色检测:GMM分类器
视觉成长之路Halcon--颜色检测:GMM分类器 前言 一.算子介绍 二.程序 总结 前言 通过系统案例学习GMM分类器在颜色识别中的应用 一.算子介绍 1.gen_rectangle1通过两个坐标 ...
最新文章
- java拦截到登陆界面,JavaWeb 使用Filter实现自动登录
- HR 的那些黑话大全,太扎心了!(漫画)
- CPU 和 GPU频率设置
- MyBatis框架笔记03:MyBatis实现CRUD
- vue项目启动出现cannot GET /服务错误
- 最简单的DX窗口程序
- 天文坐标系的转换 时角坐标和赤道坐标系的转化
- c语言口袋妖怪代码大全,口袋妖怪代码大全.docx
- JAFFE表情库介绍
- python 视频转图片
- 解决object at 0x01DB75F0
- 每一个赞扬背后都有一两个“慕名而来”,而每一个抱怨背后都有100个“弃你而去”。
- 计算机网络 FDM TDM
- 深度学习基础笔记——前向传播与反向传播
- 【信号处理】数字信号处理Matlab设计附GUI界面和报告
- 华为od一面面试算法
- 2个实用的解决R语言中文乱码方法
- 某校2016专硕算法设计
- 如何下载谷歌/百度/高德大字体地图用于打印
- photoshop出现“不能打开暂存盘文件,因为该文件已锁定”解决办法