目录

1、项目背景

2、坐标校准原理

3、坐标校准方法

4、环境搭建

5、项目实践


1、项目背景

在机器视觉实际工程实践中,有时使用NI Vision定义的默认坐标系进行测量控制并不是很直接。例如,检测目标并不总在固定的位置出现,而是在ROI区域内平移或旋转,甚至有些时候必须通过平移、旋转工作面上的检测目标或通过移动相机,对部件上的几个不同部位分别进行检测才能完成任务。

这样进行图像识别、处理是非常麻烦的,此时就需要对图像进行坐标校准。

使用机器视觉系统进行测控时,各种计算结果都需要基于坐标系来表示。平面坐标系可以使用坐标原点(Original)、横轴的角度(Angle)以及纵轴的方向(Axis Direction)来表示。

当使用NI Vision提供的VI对所建立的机器视觉系统进行校准后,所得到的像素和世界坐标之间的映射关系是建立在默认校准坐标系基础之上的。默认情况下NI Vision的系统校准VI按照以下原则定义校准坐标系:

1、坐标原点。若手工输入一系列校准点,则坐标原点被置于用户定义的坐标原点,通常是两个方向上坐标值均为最小的点中心。若使用校准点阵,则以左上角点中心为坐标原点;

2、横轴的角度为0。亦即横轴由点阵首行各点确定的矢量而定;

3、纵轴的方向为间接方向(Indirect)。纵轴方向与笛卡儿直角坐标系的纵轴方向(Direct)相反。

下图给出了NI Vision确定默认坐标系的示意图,其中左图为校准点阵的世界坐标系,右图为某种可能的图像像素坐标系:

举个例子,下图中的3个工件在视场中分别位于不同的位置并且有旋转。为了能准确测量小孔的位置和大小,可以对每个工件自动检测其左边缘和上边缘,并以它们的交点为坐标原点,以上边缘为x轴,定义间接类型的坐标系。这样一来,虽然每个工件在视场中的位置不同,但合格工件中的小孔相对于每个自动定义的坐标系位置具有一致性。如果机器视觉算法相对于每个自定义的坐标系放置检测小孔的ROI,无论工件如何在视场中变化,都能实现自动检测,直接返回测量结果。

为检测过程自动定义参考坐标系

2、坐标校准原理

机器视觉系统实现坐标校准有3种方法:

1、角度法

角度法适合没有畸变且新坐标原点仍位于图像中的机器视觉系统,它通过设定新坐标系的坐标原点、横轴与原坐标系横轴之间的旋转角以及新坐标系纵轴的方向来设置新坐标,如下图所示:

2、双点法

双点法适合有畸变且可以直接从图像中确定新坐标原点位置的机器视觉系统。它通过指定新坐标原点和一个位于坐标系横轴正方向上的点以及坐标系的类型(直接或间接)来设定新坐标系。坐标原点和横坐标上的点所构成的直线与图像水平方向的夹角指明了新坐标系的旋转角。

例如,下图中A、B两点确定了坐标系的横轴,且A点为坐标原点。由于坐标系为间接类型,因此,Y'轴与X'轴夹角为270°。由于在畸变的系统中,当被测目标沿着水平或垂直方向移动时,仍能相对准确地确定其上的边缘,而基于两个边缘点就可以确定稳定的坐标系,所以这种方法比角度法对畸变系统有更强的适应性。

3、三点法

有时候机器视觉系统不仅有畸变,而且被测目标还会在图像中平移、旋转。这种情况下可以使用多点法来设置新坐标系。多点法先使用两个点确定一条坐标轴及其方向,但并不将这两点中的一点作为坐标原点,而是用第三点与前两点所成直线的垂直交点来确定坐标原点。获得坐标原点后,再基于坐标系的类型,就可确定另一坐标轴,如下图所示:

举个例子,下图中(左图)的坐标系以标尺1cm处的点为原点,7cm处的两点作为横轴正方向上的一点来确定坐标系横轴。由于指定坐标系的纵轴为间接方向,因此坐标系位置可以被唯一确定。在右图中很难直接找到合适的坐标原点,因此先检测左侧和顶端的目标边缘,随后用顶端边缘线段的起止点AB确定横轴,而左侧边缘中的C点或D点与横轴的垂直交点O为原点,最后根据纵轴的方向就可以唯一确定坐标系。

双点法和三点法确定坐标系

3、坐标校准方法

Nl Vision使用IMAQ Set Calibration Axis Info 2函数为图像重新设置坐标系。该函数位于LabVIEW的视觉与运动→Vision Utilities→Calibration函数选板中,如下图所示:

​函数说明及使用可参见帮助手册:

​NI Vision使用位于视觉与运动→Machine Vision→Analytic Geometry函数选板中的IMAQ Build CoordSys(Points)封装了双点法和三点法,开发时可直接根据目标上的特征点,调用该VI来确定参考或测量坐标系,如下图所示:

具体使用可参见帮助手册。

4、环境搭建

基础环境搭建请参见:LabVIEW软件、驱动安装及编程方法(理论篇—2)

除此之外,还需要安装:OpenG Libraries驱动,OpenG库是由OpenG社区创建并根据BSD-3-Clause许可证(获得Open Source Initiative批准)共享的数百个开源VI的集合。

可直接在VI Package Manage中进行安装,如下所示:

5、项目实践

接下来根据过孔和PCB边角实现下图PCB电路板坐标定位,达到无论在任何角度,均可定位PCB的效果。

程序设计思路如下:

  • 程序一开始先使用IMAQ Create分别在内存中为电路板一个角的模板图像(对应corner.png图像文件)、电路板上的小孔模板图像(对应hole.png图像文件)以及应用程序处理过程中需要的临时缓冲分配空间,并由IMAQ ReadFile把相应图像文件中的数据读入内存。
  • 紧接着使用IMAQ Learn Pattern 4对两个模板的特征进行学习。由于Angle Range参数被设置为0~360°,因此,无论目标图像在平面上旋转多少度,函数都能按照学习到的特征准确地将模板与目标匹配。
  • IMAQ Set Simple Calibration 2以从文件Roundcard01.tif中读入的图像为模板,指定了纵横两个方向上像素间距分别代表世界坐标中的0.15mm。当然,此时假定相机垂直于观测目标,且镜头畸变可忽略不计。
  • 一旦上述准备工作就绪,For循环就逐一对roundcard文件夹中的各个文件所保存的目标图像进行分析。在读入目标图像后,IMAQ Match Pattern 4会先根据学习到的特征匹配电路板的一角。Parameters参数指定了匹配时只需要找到一个目标,且假定目标图像相对模板来说只在±45°范围内旋转。找到电路板一角后,OverlayPatternMatchingResults会在目标图像中标注出所匹配到的电路板一角的中心,并用矩形无损图层框出匹配结果。
  • 为了能在后续测试过程中,无论图像在视场中做何变化,都能直接得到电路板小孔相对于其一角的距离,需要重新设置以电路板一角为参照的系统校准坐标系。IMAQ Set Calibration Info将之前基于RoundCard01.tif中的图像设置的校准信息应用到For循环正在处理的目标图像中。IMAQ Set Calibration Axis Info用来重新指定校准坐标系。新的坐标系原点设定在所匹配到的电路板一角中心处。x轴旋转角度由模板匹配过程中,识别到的目标图像旋转角度确定。需要注意的是,当坐标系纵轴设定为直接坐标方向时,x轴相对于默认坐标系纵横的旋转角度为负值,反之为正值。
  • 设定好新的校准坐标系和校准信息后,就可以使用IMAQ Match Pattern 4匹配需要在电路板上寻找的小孔位置。与之前匹配电路板一角的情况类似,当匹配过程找到小孔的位置后,Overlay Coordinate System和Overlay Pattern Matching Results将在图像中绘制新定义的坐标系纵轴和横轴,标记出小孔的位置并框出对小孔的匹配结果。一旦得到小孔在图像中的位置,就可以依据校准信息和像素坐标计算得到小孔在校准坐标系中的世界坐标。这一工作由IMAQ Convert Pixel to Real World来完成。

程序实现如下所示:

下面显示了对几个目标图像进行检测时的图像显示情况,以及某一目标图像中测量得到的小孔像素位置坐标和其在校准坐标系中的世界坐标。

程序下载请参见:https://download.csdn.net/download/m0_38106923/18359777

LabVIEW实现PCB电路板坐标定位(实战篇—2)相关推荐

  1. LabVIEW实现PCB电路板元器件匹配定位(实战篇—7)

    目录 1.原理 2.实践 1.原理 彩色模式匹配(Color Pattern Matching)基于目标图像的色彩和空间分布特征(如形状.尺寸等),综合色彩匹配和灰度图像模式匹配技术,来快速定位图像中 ...

  2. LabVIEW OCR 实现车牌识别(实战篇—3)

    目录 1.字符数据集训练 2.识别与验证 在学习本章之前,推荐先学习系列专栏文章:LabVIEW目标对象分类识别(理论篇-5) OCR(光学字符识别)是指机器自动从图像中识别文本字符的过程,OCR机器 ...

  3. LabVIEW感兴趣区域分析(实战篇—1)

    目录 1.ROI定义及实现方法 2.基础案例:图像感兴趣区域手动标记 3.进阶案例:图像颗粒自动标记 ROI(region of interest),感兴趣区域.机器视觉.图像处理中,从被处理的图像以 ...

  4. MATLAB实现工业PCB电路板缺陷识别和检测

    PCB(Printed Circuit Board印刷电路板)是电子产品中众多电子元器件的承载体,它为各电子元器件的秩序连接提供了可能,PCB已成为现代电子产品的核心部分.随着现代电子工业迅猛发展,电 ...

  5. 在pcb放置坐标标注_PCB设计定位基准符号和尺寸

    基准标志(FiducialMarks)和局部基准标志是贴片设备用来进行光学定位的特殊PAD. 基准应用 基准符号的应用有三种情况,1)用于PCB的整板定位:2)用于拼版的PCB子板的定位.3)用于细间 ...

  6. 三、C++反作弊对抗实战 (实战篇 —— 3.如何获取游戏中角色人物角色的名称坐标、血量、武器信息(非CE扫描))

    提示:本章节将介绍如何获取CS1.6游戏中角色人物角色的名称.坐标.血量.武器信息(非CE扫描 前言 在上一章节中<三.C++反作弊对抗实战 (实战篇 -- 2.认识CS1.6常见的数据结构与流 ...

  7. [知识图谱实战篇] 六.HTML+D3实现点击节点显示相关属性及属性值

    前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...

  8. 一个EXE引发的危机 — 浏览器劫持实战篇

    一个EXE引发的危机 --浏览器劫持实战篇 作者:小金 转载请注明出处和作者 一. 一个EXE引发的危机 网络程序员小李最近有点忙,公司要做的网页工程项目已经快到尾期了,可是开发小组的进度仍然迟迟跟不 ...

  9. caffe框架下目标检测——faster-rcnn实战篇操作

    原有模型 1.下载fasrer-rcnn源代码并安装 git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git 1) ...

最新文章

  1. SQL语句行列转换两种方法 case ...when 和pivot函数应用
  2. Python re 模块中,如何使用反斜杠 “\“分割字符串?
  3. Spring事务 Transaction rolled back because it has been marked as rollback-only
  4. 在厚度仅十几微米的电池隔膜找缺陷?人工智能说,能行(人工智能应用案例)
  5. 天线下倾角示意图_常用天线和无源器件技术参数汇总
  6. pythonpip使用方法_Python: pip常见的使用方法
  7. Linux的Xshell连接Centos7能Ping通但无法连接问题[ssh(d)+firewall(d)]【转载转载转载】
  8. 一件程序员必备武器的诞生
  9. final阶段成员贡献分
  10. python机器学习-糖尿病预测模型
  11. 【R语言】R语言在安装与下载时遇到的问题与解决方法
  12. Houdini 快捷键
  13. 分享(转载)跟大家分享一下牛人常用的资源类,供大家参考、学习。
  14. 《奇迹的超级速读法》一书中集中注意力的训练方法
  15. Wordpress 网站设计入门 联系表单设计
  16. 计算机房管理使用汇报,计算机房管理规定(附计算机房使用记录).doc
  17. pycharm 使用matplotlib 绘图时图片不能显示中文
  18. 当前安装包签名出现异常_关于部分华为手机安装游戏提示“签名异常”问题说明...
  19. 新手小白学JAVA 分支结构 switch结构 for循环
  20. 【玩转python】python实现代替QQ邮箱发出邮件(附源码,新手也能用!)

热门文章

  1. CSS 选择器:BeautifulSoup4解析器
  2. 中国矿业大学计算机学院机房,2020年中国矿业大学计算机学院初试自命题科目考试大纲-数据结构...
  3. 小乐乐打游戏(BFS+曼哈顿距离)
  4. 安卓下使用 dropbear 开启SSH And arm 下的busybox
  5. 2022-2028年中国充电桩行业深度调研及投资前景预测报告(上下卷)
  6. 求一个字符串中连续出现的次数最多的子串
  7. php explore im,浏栏器器-explore.class.php_php
  8. 《OpenCV3编程入门》学习笔记9 直方图与匹配(五)模板匹配
  9. usaco Ski Course Design
  10. c语言解析sql语句_sql语句面试50题(Mysql版附解析)