LabVIEW 机器视觉系统图像畸变、校准和矫正(基础篇—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 的文档安装目录中,例如我的安装路径下:
校准点阵的选择或制作一般都遵循以下规则:
点阵中纵向和横向相邻点之间的距离应相等(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 对系统进行校准,最终生成的校准模板图像将包含综合的系统校准信息。
效果如下所示:
程序下载请参见:案例1:LabVIEW机器视觉系统图像畸变、校准和矫正_labview畸变矫正,labview图像校正-其它文档类资源-CSDN下载
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 组合:
下图进一步对可供选择的几种 ROl 组合情况进行了说明:
对 2.3、NI Vision 校准方法中代码添加图像矫正功能,程序如下所示:
程序中矩形方框之前的代码会将源灰度图像转换为二值图像,并生成图像校准信息。方框内新增的代码中,IMAQ Correction Learn Setup 用于配置图像矫正过程对整个图像有效,而且要求矫正图像保留源图像中特征区域的大小,矫正过程中无须生成矫正表。新增的 IMAQ orrect Calibrated lmage 会使用双线性插值算法进行图像矫正计算,生成新的矫正图像,效果如下所示:
对比 2.3、NI Vision 校准方法中示例效果,可见新图像矫正效果理想。
程序下载请参见:案例2:LabVIEW机器视觉系统图像畸变、校准和矫正_-其它文档类资源-CSDN下载
机器视觉系统校准过程的质量可从准确度和精密度两个角度去衡量,包括误差映射表、畸变率、平均误差、最大误差以及标准差等指标,由这些指标可以计算测量结果的可信程度。如果需要对采集到的畸变图像或其中部分感兴趣的区域进行矫正,则可以根据畸变模型和系统校准信息,通过平移、放大、插值等方法生成消除透视畸变和镜头畸变的矫正图像。图像矫正过程极为耗时,在机器视觉系统开发过程中,若非必要,应尽可能避免。
版权声明: 本文为 InfoQ 作者【不脱发的程序猿】的原创文章。
原文链接:【http://xie.infoq.cn/article/bcc3166cf2b51e076e4590c30】。文章转载请联系作者。
评论