目录

1、图像畸变

1.1、图像畸变的原因

1.2、图像畸变类型

1.2.1、透视畸变

1.2.2、径向畸变

1.2.3、切向畸变

1.2.4、灰度不均

2、图像校准

2.1、简易系统校准法和透视校准法

2.2、校准点阵

2.3、NI Vision校准方法

3、图像矫正


搭建机器视觉系统应尽可能确保生成的图像足以使算法快速准确地从中提取所需信息。为了实现这一目标,常需要在设备选型和系统搭建过程中考虑设备的技术指标、被测目标的尺寸、设备安装的空间限制、相机安装方式、图像采集设备的性能以及图像采集软件等关键问题。

1、图像畸变

1.1、图像畸变的原因

构建机器视觉系统采集到的图像质量应确保机器视觉算法快速、准确地提取所需要的信息,以便作出相关决定。然而要实现准确测量和控制,机器视觉系统必须使用真实世界的坐标系和测量单位。这意味着,要事先得到像素与真实世界坐标系的映射关系,才能在后续过程中使用其进行计算。

例如,在某个测量两点之间距离的机器视觉系统中,已知图像中每个像素代表真实世界坐标系中的2cm,那么若图像中两个点之间有10个像素,则理想情况下可得知两点之间的距离为20cm。

然而真实世界总没有想象中那样理想,设备的局限性和系统连接过程中的各种问题会使机器视觉系统采集到的图像产生各种畸变(distortion),常见的几种情况如下:

  • 由于各种原因未能使相机垂直于被测目标安装,从而为系统引入透视畸变(perspectivedistortion)。
  • 由于相机所使用的镜头特性并不都与其光心处的特性一致,系统中存在径向畸变(radiallens distortion)。包括:桶形畸变(barrel distortion)、枕形畸变(pincushion distortion)和须形畸变(mustache distortion)等。
  • 由于相机中的图像传感器未能与镜头的光面平行安装,导致系统中存在切向畸变(tangentialdistortion)。
  • 若机器视觉系统所检测的目标表面为非线性平面(存在起伏),则系统中就会存在非线性畸变(nonlinear distortion) 。
  • 若光源不能提供均匀的光照,相机镜头存在渐晕(vignetting),相机传感器有杂质,或者被测目标表面非均匀,则采集到的图像灰度通常不能均匀分布。

机器视觉系统的准确性受到以上问题的极大影响,因此,不仅在计算像素到真实世界坐标系的转换关系时要重点考虑准确性的问题,还要考虑如何对图像进行矫正。

1.2、图像畸变类型

1.2.1、透视畸变

搭建机器视觉系统理想情况下可以被抽象为小孔成像模型。然而现实世界并不总是很理想。

首先,受各种安装条件的限制,相机可能无法垂直于被测目标安装,这就会导致系统生成的图像发生透视畸变,如下图所示:

透视畸变

透视畸变在相机未能垂直监测目标时发生,在这种情况下,所成图像遵循透视规律,离镜头越近的部分所成图像越大,反之越小。

1.2.2、径向畸变

透视畸变是由镜头的安装方式等外部因素引起的,镜头畸变则是由其自身光学特性的不完美造成的,如下图所示:

镜头的径向畸变

理想情况下图中物面上的点P1和P2在像面上的成像遵循小孔成像原则,然而由于现实中镜头所用凸透镜或凹凸透镜组合固有的光学特性,会导致这些点沿着像面的径向产生偏移,从而产生镜头的径向畸变。

镜头畸变常用成像画面柜对于正常图像的畸变率(%Distortion)表示。

  • 当畸变率为正时,说明成像画面呈桶形向外膨胀,称为桶形畸变;
  • 当畸变率为负时,则说明画面向中间收缩,称为枕形畸变;
  • 须形畸变是桶形畸变和枕形畸变混合产生的结果,图像中心处接近桶形畸变,但由中心向边缘逐渐过渡到枕形畸变。

通常在为机器视觉系统选择镜头时,需要确保镜头的最大畸变小于1%。

1.2.3、切向畸变

切向畸变是由于相机在生产制造过程中未能使其图像传感器与光轴垂直安装而造成的。在这种情况下相机图像传感器与镜头之间并未平行安装,而是存在一定的角度,如下图所示:

镜头的切向畸变

与径向畸变的影响不同,切向畸变会使图像像素沿切线方向变形,如将矩形变为梯形图像。

1.2.4、灰度不均

灰度分布不均是指在光源不能提供均匀的光照、相机镜头存在渐晕、相机传感器有杂质或被测目标表面非线性时导致图像中灰度不能均匀分布的情况,如下图所示:

图像灰度分布不均

对于此类畸变,通常需要通过明场校正(bright field correction)来处理。明场校正又称为平场校正(flat field correction),是指基于机器视觉系统采集或由数学模型估算的明亮背景图像(明场)对灰度分布不均匀的图像进行矫正的过程。经过明场矫正后,图像中的灰度分布会更接近真实情况,且相机传感器杂质对图像的影响也会被消除。

明场校正过程基于下面的公式进行计算:

  • Median是对明场与暗场差值求中值的运算符;
  • 矫正系数用于对矫正图像的灰度进行修正。

2、图像校准

机器视觉系统的校准是综合考虑机器视觉成像系统的多种畸变因素,找出图像中像素点与真实世界坐标系映射关系的过程,这一过程通常在空间域进行。

对于机器视觉系统来说,为了实现与真实世界坐标相关的测量和控制,通常会利用手工输入的方法或包含多个点的标准模板,为系统提供真实世界坐标系中多个点的已知信息。这些信息包括点在真实世界坐标系中的位置信息、点与点之间的距离等。一旦有了这些已知信息,就可以结合成像系统模型,获得图像中各像素点与真实世界之间线性或非线性的映射关系。如果将这些计算得来的关系应用到后续采集的图像中,就可以降低各种畸变对视觉系统检测结果的影响,甚至可以对畸变图像进行矫正。

2.1、简易系统校准法和透视校准法

简易系统校准法和透视校准法是两种通过手工输入已知信息点就可实现系统校准的方法。

  • 简易系统校准法(simple calibration)是一种不考虑任何畸变的近乎理想的方法。直接根据小孔成像模型计算出图像像素大小或像素间距在工作面上所对应的实际距离是一种最简易的系统校准方法。这种方法假定成像系统中相机垂直于观测目标安装,且系统引起的图像畸变可以忽略不计。一旦设定了这种简单的映射关系,就可以根据目标物在图像中所占据的像素个数计算其对应的实际尺寸。它适用于图像畸变较小的场合,如使用远心镜头垂直监测目标的机器视觉系统。
  • 透视校准法(perspective calibration)必须确保系统获得足够多的已知信息点。若由于各种条件限制,相机无法垂直于监测目标安装,系统中就会存在透视畸变。为了实现准确测量控制,必须先提供一系列已知真实世界坐标和尺寸信息的点,并根据这些信息确定三维世界坐标系中目标点到图像像素的数学映射关系。通常所提供的已知信息点不能少于4个,已知信息点数越多,计算得到的映射关系就越准确。

2.2、校准点阵

在实际工作中,若镜头存在径向或切向畸变,手工输入已知信息点的校准方法就显得麻烦且效率低下,此时可以使用校准点阵(calibration grid)为校准过程提供输入。

校准点阵是一幅纵向和横向相邻点中心间距相等的点阵图像。默认情况下,校准过程会使用点阵中左上角点的中心作为原点来建立图像坐标系。因此,若将纵横两个方向上相邻点间的距离dx和dy作为输入,校准过程就可得知点阵中所有点在世界坐标系中的位置,如下图所示:

机器视觉系统的校准

当要对搭建好的机器视觉系统进行校准时,可以采集校准点阵的图像,并根据最小二乘法确定出畸变模型参数来完成校准过程。

在实际工作中,镜头或机器视觉系统供应商一般都会提供校准点阵。NI Vision的随机文档中也附有校准点阵的样本图像,通常位于安装NI Vision的文档安装目录中,例如我的安装路径下:

C:\Users\Public\Documents\National Instruments\Vision\Documentation\CalibrationGrid.pdf

校准点阵的选择或制作一般都遵循以下规则:

  • 点阵中纵向和横向相邻点之间的距离应相等(dx=dy);
  • 采集到的图像中,各点的半径应覆盖6~10个像素;
  • 采集到的图像中,相邻点中心之间的距离应在16~32个像素之间;
  • 采集到的图像边缘到点阵边界点之间的距离应不少于6个像素;
  • 在使用校准点阵校准系统时,还应尽可能使点阵覆盖整个机器视觉系统所监测的工作区域。

2.3、NI Vision校准方法

Nl Vision提供了多种计算机视觉系统校准方法的VI,它们位于LabVIEW的视觉与运动→Vision Utilities→Calibration函数选板中,如下图所示:

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

接下来讲解一个生成系统校准信息的案例,思路如下所示:

  • 程序先读入校准点阵图像并使用IMAQCopy在内存中复制了一个副本以进行后续处理;
  • IMAQ Local Threshold将对校准点阵图像进行二值化,它将输出包含黑色圆点的二值图像;
  • 紧接着lMAQ Calibration Target to Points-Circular Dots2会自动提取出含有各圆点世界坐标和与之对应的像素坐标信息的Reference Points簇;
  • 在进行计算时,它需要包含圆点的二值图像、点阵中各点在真实世界坐标中的间隔(由Grid Descriptor簇提供)、校准点阵的源灰度图像(用于调整计算结果)和点阵的大小Grid Size作为输入。

程序实现如下所示:

程序中Reference Points簇中的数据将作为IMAQ Learn Distortion Model和IMAQ LearnPerspective Calibration的关键输入,以便于它们计算多项式镜头畸变模型的K1、K2、K3参数和透视畸变模型参数。经这两个VI计算后,得到的系统校准信息将与IMAQ Local Threshold生成的二值图像关联,作为校准模板图像输出。使用IMAQ Get Calibration Info返回校准过程的配置信息以及校准的坐标原点。此外,程序还暗示了在系统校准过程中可以连续使用消除不同类型畸变的系统校准VI。例如,若系统中既含有镜头畸变和透视畸变,且工作面又为非线性工作面(工作面为起伏的非平面),则可以先使用IMAQ Learn Distortion Model和IMAQ Learn Perspective Calibration,再使用IMAQ LearnMicro Plane对系统进行校准,最终生成的校准模板图像将包含综合的系统校准信息。

效果如下所示:

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

3、图像矫正

NI Vision使用IMAQ CorrectionLearn Setup和IMAQ Correct Calibrated lmage对图像进行矫正,矫正函数也位于:LabVIEW的视觉与运动→Vision Utilities→Calibration函数选板中,也可参见帮助文档进行理解。

  • IMAQ CorrectionLearn Setup用于配置图像矫正时要用到的ROI、如何使用这些ROI以及图像的缩放方式;
  • IMAQ Correct Calibrated lmage则可通过平移、放大、插值等方法逐像素对整个输入图像进行矫正,并生成新的矫正图像。

由于计算量特别大,图像矫正过程一般都极为耗时,因此若非必要,应尽可能避免矫正整个图像,而只需矫正图像中感兴趣的区域。图像矫正过程中的矫正区域由系统校准过程定义的系统校准ROI (Calibration ROI)和用户为图像矫正过程定义的图像矫正ROI(Correction ROI)共同决定。下表列出了几种确定图像矫正区域的ROI组合:

拓展学习:LabVIEW感兴趣区域分析(实战篇—1)

下图进一步对可供选择的几种ROl组合情况进行了说明:

图像矫正区域的ROI组合

2.3、NI Vision校准方法中代码添加图像矫正功能,程序如下所示:

程序中矩形方框之前的代码会将源灰度图像转换为二值图像,并生成图像校准信息。方框内新增的代码中,IMAQ Correction Learn Setup用于配置图像矫正过程对整个图像有效,而且要求矫正图像保留源图像中特征区域的大小,矫正过程中无须生成矫正表。新增的IMAQ orrect Calibrated lmage会使用双线性插值算法进行图像矫正计算,生成新的矫正图像,效果如下所示:

对比2.3、NI Vision校准方法中示例效果,可见新图像矫正效果理想。

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

机器视觉系统校准过程的质量可从准确度和精密度两个角度去衡量,包括误差映射表、畸变率、平均误差、最大误差以及标准差等指标,由这些指标可以计算测量结果的可信程度。如果需要对采集到的畸变图像或其中部分感兴趣的区域进行矫正,则可以根据畸变模型和系统校准信息,通过平移、放大、插值等方法生成消除透视畸变和镜头畸变的矫正图像。图像矫正过程极为耗时,在机器视觉系统开发过程中,若非必要,应尽可能避免。

LabVIEW机器视觉系统图像畸变、校准和矫正(基础篇—3)相关推荐

  1. 机器视觉系统图像采卡基本概念

    整个机器视觉系统分为图像采集与图像处理两大板块,采用模拟工业相机的图像采集系统中,图像采集卡就是连接这两大板块的重要组件.图像采集卡是图像采集部分和处理部分的联通器件,是一种可以获取数字图像信息,并将 ...

  2. 工业机器视觉系统相机如何选型?(理论篇—3)

    目录 1.图像基础知识 1.1.图像类型 1.2.图像分别率.系统分辨率和像素分辨率 1.3.视场 2.影响成像质量的因素 3.成像系统模型 4.镜头系统简化模型 5.镜头与相机的选型 5.1.镜头的 ...

  3. 工业机器视觉系统的构成与开发过程(理论篇—1)

    目录 1.工业机器视觉系统构成 2.工业机器视觉系统开发过程 在说到机器视觉系统时候,各位可能会对:机器视觉(machine vision).图像处理(image processing)以及计算机视觉 ...

  4. LabVIEW控制Arduino实现RGB调色灯(基础篇—6)

    目录 1.实验目的 2.实验环境 3.程序设计 4.实验演示 1.实验目的 利用LIAT中的RGB函数库,通过LabVIEW控制Arduino Uno控制板实现RGB调色. 2.实验环境 将共阳RGB ...

  5. 最新JavaEE系统架构师学习路线之基础篇

    大纲: 第1阶段(Java程序员) - Java语言基础 第2阶段(Java初级软件工程师) - JSP.Servlet.HTML.CSS.JS.Bootstrap.XML.AJAX.MySQL.SQ ...

  6. JavaEE系统架构师学习路线之基础篇

    大纲: 第1阶段(Java程序员) - Java语言基础 第2阶段(Java初级软件工程师) - JSP.Servlet.HTML.CSS.JS.Bootstrap.XML.AJAX.MySQL.SQ ...

  7. 2019最新《JavaEE系统架构师学习路线之基础篇》

    下载地址:百度网盘 大纲: 第1阶段(Java程序员) - Java语言基础 第2阶段(Java初级软件工程师) - JSP.Servlet.HTML.CSS.JS.Bootstrap.XML.AJA ...

  8. LabVIEW控制Arduino实现PWM呼吸灯(基础篇—5)

    目录 1.实验目的 2.实验环境 3.程序设计 4.实验演示 1.实验目的 利用LIAT中的模拟I/O函数库,通过LabVIEW和Arduino Uno控制板实现LED灯亮度的调节,产生灯会呼吸的效果 ...

  9. LabVIEW控制Arduino采集热敏电阻温度数值(基础篇—13)

    目录 1.实验目的 2.实验环境 3.程序设计 4.实验演示 1.实验目的 利用热敏电阻和LIAT中的热敏电阻函数节点,通过Arduino Uno控制板的模拟端口采集与热敏电阻串联电阻的分压值上传给L ...

最新文章

  1. matlab二维画图函数汇总--论文,数学建模中使用
  2. 牛客 华为机试(我的代码记录)
  3. 史上最详细Docker安装最新版Minio 带详解 绝对值得收藏!!! 让我们一起学会使用minio搭建属于自己的文件服务器!!走上白嫖之路!解决启动了但是浏览器访问不了的原因
  4. qpython3l_介绍一下手机里能敲Python代码的软件,QPython3L和Pydroid3,顺便用有道翻译一下后者...
  5. 知乎改版api接口之scrapy自动登陆
  6. 深度学习都是非凸问题_神经网络的损失函数为什么是非凸的?
  7. mysql二阶段提交有什么问题_MySQL的事务两阶段提交的技术有什么意义?
  8. mysql sum很慢,可以在MySQL中加快sum()吗?
  9. CV算法助理 | 华为外包招聘
  10. 01.LoT.UI 前后台通用框架分解系列之——小图片背景全屏显示(可自动切换背景)...
  11. 印地语自由对话语音识别数据库-200人
  12. STM32+AD7705实现电压采集
  13. 用的上的商学课51-100课学习笔记
  14. 导向滤波(Guided Filter)公式详解
  15. 跑马灯广告语的实现过程,并且自定义marquee,解决焦点抢占问题.
  16. 2021国际货币论坛金融科技分论坛隆重举行 聚焦“数字金融人才培养”
  17. 馄饨 (hún tun)
  18. 微机原理_第1章 微型计算机概述
  19. 【JAVA毕设】基于Java的在线购物系统的设计与实现
  20. XDL: An Industrial Deep Learning Framework for High-dimensional Sparse Data 论文笔记

热门文章

  1. python 爬取手机app的信息
  2. python >> 和 <<
  3. github自己的仓库给别人上传代码的操作
  4. android studio 的中文网站
  5. 第三周-第08章节-Python3.5-文件修改详解
  6. mongodb之备份
  7. Depends, python2.7-minimal (= 2.7.15_rc1-1) 问题解决方法使用 aptitude 安装以及与 apt-get 的区别
  8. 文本输入框、密码输入框
  9. 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器
  10. 学习Modern UI for WPF