对于常规的pcb的元件缺失检测大致步骤。
第一:售前,需要快速判断元件是贴片,引脚式,常规裸露式,并使用ROI直接进行快速的blob分析,使用特征面积选择即可快速的完成早期评估工作。
第二:根据需求判断,是否需要模板匹配单对多还是多对多的处理。
第三:实际代码书写,对于模板匹配的输出文件,应以写入新的文件。
本次需求:对c6旁边的电阻进行检测是否存在电阻或者电阻脱落的情况
halcon程序

read_image (Image, 'D:/shijue/11/pcb缺陷/Image__2022-05-04__17-01-48.bmp')
*读图
gen_rectangle2 (ROI_0, 58.5102, 543.681, rad(-101.309), 70.7985, 80.6545)
*对c6进行ROI选取
reduce_domain (Image, ROI_0, ImageReduced2)
*裁图
rgb1_to_gray (ImageReduced2, GrayImage)
*转为单通道灰度值
threshold (GrayImage, Regions2, 168, 220)
*二值化扣出c6
closing_rectangle1 (Regions2, RegionClosing2, 5,5)
*膨胀,防止字符没有扣好
reduce_domain (Image, RegionClosing2, ImageReduced3)
*裁图
inspect_shape_model (ImageReduced3, ModelImages, ModelRegions,5,25)
select_obj (ModelImages, ObjectSelected, 1)
dev_display (ObjectSelected)
create_shape_model (ImageReduced3,  3, 0, rad(360), 'auto', 'none', 'use_polarity', 30, 10, ModelID)
get_shape_model_contours (ModelContours, ModelID, 1)
*以上创建模板
find_shape_model (Image, ModelID, 0, rad(360), 0.7, 1, 0.5, 'least_squares', 0, 0.5, RowCheck, ColumnCheck, AngleCheck, Score)
*根据模板寻找c6
if (|Score| > 0)*判断是否找到c6vector_angle_to_rigid (0, 0, 0, RowCheck, ColumnCheck, AngleCheck, HomMat2D)affine_trans_region (ObjectSelected, RegionAffineTrans, HomMat2D, 'nearest_neighbor')affine_trans_image (ModelImages, ImageAffineTrans, HomMat2D, 'constant', 'false')dev_display (ImageAffineTrans)dev_display (RegionAffineTrans)*对找到的c6进行仿射变化orientation_region (RegionAffineTrans, Phi)area_center (RegionAffineTrans, Area, Row, Column)*获取c6的坐标和角度vector_angle_to_rigid (Row, Column, 0, Row, Column, rad(0), HomMat2D)affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')affine_trans_region (RegionAffineTrans, RegionAffineTrans2, HomMat2D, 'nearest_neighbor')*将c6运用到图中reduce_domain (ImageAffineTrans, RegionAffineTrans2, ImageReduced4)*裁图rgb1_to_gray (ImageReduced4, GrayImage1)*转为单通道灰度shape_trans (GrayImage1, RegionTrans, 'convex')*练成一个区域area_center (RegionTrans, Area1, Row1, Column1)orientation_region (RegionTrans, Phi1)*获取中心坐标和角度gen_rectangle2_contour_xld (Rectangle1, Row, Column1-300, Phi1, 150,80)*根据实际绘制一个在c6旁的元件的矩形轮廓dev_display (ImageAffineTrans)dev_display (Rectangle1)*显示检测是否正确gen_rectangle2 (Rectangle1, Row, Column1-300, Phi1, 150,80)*根据轮廓,绘制矩形区域reduce_domain (ImageAffineTrans, Rectangle1, ImageReduced5)*裁图,对元件进行处理decompose3 (ImageReduced5, Red, Green, Blue)trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')*转化为hsvthreshold (Saturation, Regions, 0, 89)*对s进行二值化opening_rectangle1 (Regions, RegionOpening, 3,3)closing_rectangle1 (RegionOpening, RegionClosing1,  3,3)*以上为blob分析connection (RegionClosing1, ConnectedRegions1)select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 11907.4, 14351.9)*判断SelectedRegions1数组是否为空即可
endif
*以下为快速实验处理,可在售前阶段,快速评估产品是否有能力完成
*没有元件处理,常规blob分析
gen_rectangle2 (ROI_0, 157, 780.727, rad(-12.3391), 151.872, 74.1818)
reduce_domain (Image, ROI_0, ImageReduced)
decompose3 (ImageReduced, Red, Green, Blue)
trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, 'hsv')
threshold (Saturation, Regions, 0, 89)
opening_rectangle1 (Regions, RegionOpening, 3,3)
closing_rectangle1 (RegionOpening, RegionClosing1,  3,3)
connection (RegionClosing1, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 11907.4, 14351.9)*有元件处理
read_image (Image1, 'D:/shijue/11/pcb缺陷/Image__2022-04-03__17-25-28.bmp')
gen_rectangle2 (ROI_0, 866.364, 915.182, rad(17.1027), 126.123, 79.6594)
reduce_domain (Image1, ROI_0, ImageReduced1)
decompose3 (ImageReduced1, Red1, Green1, Blue1)
trans_from_rgb (Red1, Green1, Blue1, Hue1, Saturation1, Intensity1, 'hsv')
threshold (Saturation1, Regions1, 0, 81)
opening_rectangle1 (Regions1, RegionOpening1, 3,3)
closing_rectangle1 (RegionOpening1, RegionClosing,3,3)
connection (RegionClosing, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 11907.4, 14351.9)
*判断SelectedRegions数组不为为空即可

实际完成效果

无原件输出面积选择为空

测试的图片参考
由于csdn有要求的图片上传大小,所以这里使用jpg压缩图像并不是原图,有需要原图的可以私信我。

基于视觉halcon的对pcb元件缺失快速检测参考处理相关推荐

  1. halcon边缘检测-autobahn车道线的快速检测

    基本思路: 先获得主要感兴趣区域,去除车的干扰 然后通过sobel_amp算子检测边缘明显变化的图像,得到原始图像边缘位置的图像数据 然后通过阈值获取目标边缘. 通过膨胀目标边缘获得感兴趣区域,再次通 ...

  2. 嵌入式--基于AD15的原理图及PCB绘制基础知识

    一.新建空白工程模板 1.新建项目    2.新建库->原理图库   3.新建原理图 4.新建库->库->PCB元件库    5.新建PCB    6.四个新建分别保存 如果单独打开 ...

  3. 使用Minifly打造基于视觉感知的跟踪无人机

    摘自:https://www.cnblogs.com/kryo/p/11278565.html 使用Minifly打造基于视觉感知的跟踪无人机 前言:本文介绍一种可行的解决方案来实现基于视觉感知的跟踪 ...

  4. [转]基于Protel DXP软件的PCB高级编辑技巧大全

    来源:基于Protel DXP软件的PCB高级编辑技巧大全 一.放置坐标指示 放置坐标指示可以显示出PCB板上任何一点的坐标位置. 启用放置坐标的方法如下:从主菜单中执行命令 Place/Coordi ...

  5. 基于深度学习的智能PCB板缺陷检测系统(Python+清新界面+数据集)

    摘要:智能PCB板缺陷检测系统用于智能检测工业印刷电路板(PCB)常见缺陷,自动化标注.记录和保存缺陷位置和类型,以辅助电路板的质检.本文详细介绍智能PCB板缺陷检测系统,在介绍算法原理的同时,给出P ...

  6. c语言动态扫描原理,基于视觉暂留的动态扫描LED旋转屏

    2.3 红外解码 红外遥控器与电器之间的通信存在一个通信协议,一般是单向的通信协议.这个单向的通信协议称为红外遥控编码协议.本文使用NEC红外编码协议,当发射器按键按下后,即有遥控码发出,所按的键不同 ...

  7. 论文研究 | 基于视觉的汽车线束绑扎胶套检测与测量系统

    0 引言 略. 1 系统硬件构成 略. 2 图像处理系统及实现原理 通过图像采集系统获得汽车线束各部分图像后,使用 Halcon 图像算法库对图像进行中值滤波.图像增强等预处理; 然后对预处理得到的图 ...

  8. 【基于视觉语义特征的室外SLAM建图算法研究】

    首先什么是语义SLAM,我们知道传统的视觉SLAM是基于关键点.描述子等低级图像特征来进行定位和建图的,那么对于一些更高层次的带有明确意义的语义信息,比如现实世界中真实的物体,将它作为特征来进行优化的 ...

  9. 【信息技术】【2016.07】基于视觉和遥感数据的多模式学习

    本文为澳大利亚悉尼大学(作者:Dushyant Rao)的博士论文,共164页. 无人驾驶汽车通常被部署在未知的环境中执行探测和监测任务.在这种应用中,信息丰富性和不同传感器模式的获取成本之间往往存在 ...

最新文章

  1. iOS 解决app退出后台应用重新启动的问题
  2. 使用vim打造自己的python编辑器
  3. FineReport——JS二次开发(局部刷新)
  4. Lua源码分析 - 基础篇 - Lua源码的结构和架构图(01)
  5. 太糟糕了,Java 8没有Iterable.stream()
  6. 微软宣布 Edge 浏览器将切换至 Chromium 内核
  7. 普中51控制火焰传感器_汽车爆震传感器的工作原理及的检测方法、处理
  8. java消费rabbitMQ队列消息
  9. JavaScript 存储Cookie
  10. 带着canvas去流浪系列之四 绘制散点图
  11. php和dart交互,Flutter 之和原生交互
  12. linux open详解,Linux系统open函数详解
  13. 读书笔记1——《用户故事与敏捷方法》
  14. Python爬取淘宝商品附加cookie修改
  15. Linux下PCIE设备分析软件
  16. python求平行四边形的周长_高考数学解析几何有哪些实用的运算技巧?
  17. 用matlab算特征值,用Matlab用计算特征值和特征向量
  18. ElasticSearch搜索引擎搭建笔记
  19. 三种嵌入式操作系统(Palm OS 、Windows CE 和Linux)的深入分析与比较
  20. 这篇文章应该在《新闻联播》连续报道一个月--武汉大学毕业生的反思

热门文章

  1. phpEXCEL导出的数字太长,显示不完整
  2. 购买服务器,搭建LAMP环境(一) 选择什么样的服务器?
  3. 软件工程项目——校园二手交易系统——第一部分需求规格说明书
  4. 第03课:分布式一致性协议 Gossip 和 Redis 集群原理解析
  5. Office激活时提示网络无连接(2604)
  6. mysql单表数据列_MySQL 之 数据操作及单表查询
  7. 个人看法在SEO的角度下谈谈MSO:媒体搜索优化
  8. os在python中是什么意思_import os在python中有哪些意思
  9. Android 系统属性(SystemProperties)介绍
  10. NSI打包脚本加入文件详细信息