影像增强:空间校正
前言
在这个章节,作者要介绍的是影像的空间校正,为什么影像需要做空间校正呢?我们先来看看下面图4-1里面的三角尺。我们可以看到三角尺的斜边上面有 刻度,基本上它的刻度都是等距的,但是因为拍摄角度或是物品摆放角度的关系,造成刻度在图片中看起来的大小并不相同,像这个时候如果我们想要利用影像对图 片中的三角尺进行量测,那我们就会需要用到空间校正。
图4-1 三角尺
再来我们看到下图4-2这个不一样的例子,基本上我们拍摄的相机是正对着这面墙壁的,但我们可以看到图中的墙壁有扭曲的现象,这绝对不是因为墙壁它本来就 是扭曲的,更不是因为拍摄人员的技术有待加强!还记得我们在第一章曾经提到过的镜头失真吗?因为镜头它是个球面,所以根据镜头的好坏,相机经过镜头后所得 到的影像多多少少都会有一些扭曲失真的现象,这是另外一个我们会需要用到空间校正的原因,当然现在有很多所谓的低失真镜头,可以大幅改善这样子的问题,不 过当然它们的价位会比较高就是了。
图4-2 球面像差
简易空间校正函数
想必大家一定有过想把
pixel换算为真实大小的冲动过,在这一小节作者先来介绍一个简单的校正函数:IMAQ Set Simple Calibration2,如下图4-3所示。它的功能就是将每个pixel在现实中对应的长宽单位大小设定到影像之中。
图4-3 IMAQ Set Simple Calibration2
下面作者写了一个简单的范例程序来说明这个校正函数的功能,首先我先叙述一下这个范例是在做什么:我的手上有两张图,它们是我在相同的环境下拍摄下来的, 第一张图里面有一个外径为50mm的圆,第二张图里面有一个长方形,这个长方形的尺寸是未知的,但是我们想要知道长方形的尺寸。
为了达成上述的需求,第一步我们要利用第一张图里面的圆和IMAQ Set Simple Calibration2这个函数来做空间校正,程序码和其说明如下图4-4所示。
图4-4 Simple Calibration Example Part1
做完上述的第一步之后,接着第二步我们来对第二张图里面的长方形进行量测,并且将量测结果转换为真实世界的单位,在完成这个部分的程序之前,我们先来认识 下图4-5的这个函数:IMAQ Convert Pixel to Real World。如果传入的影像是有做过空间校正的影像,那么它就能将pixel值转换为现实世界的单位。
图4-5 IMAQ Convert Pixel to Real World
认识了IMAQ Convert Pixel to Real World这个函数之后,我们就可以开始进行第二步骤了,程序码和其说明如下图4-6所示,最后程序执行的结果如下图4-7所示。
图4-6 Simple Calibration Example Part2
图4-7 Simple Calibration Example Result
恭喜大家完成了一个简单的空间校正范例,利用标准物件进行相机的空间校正,然后使用校正后的相机进行视觉检测,这是一般常见的校正方式。这种校正方式的优 点是标准件的取得较为容易,通常是用送验通过的待测物来当作标准件,不需要配合机构去特制标准件;有优点通常也会有缺点,这种校正方式对视觉系统的配置有 一定的要求,譬如低失真的镜头、待测物与相机必须垂直等等。所以在下一节中,作者将会介绍另一种不一样的校正方式:球面像差校正。
影像增强:球面像差校正
影像校正片
在前一节中作者介绍了如何使用简易的空间校正的函数将影像中的尺寸化为现实,在这一章节中,我们要来探讨如何校正球面像差。首先为各位介绍一样我们做影 像校正会使用的小工具,它叫做影像校正片,如下图4-8所示。通常影像校正片为玻璃材质,当然也有其他的选择,譬如陶瓷、塑胶或是铝,如果是比较大尺寸 的,甚至我们可以使用图档进行影像输出也可以,那么它的材质就是纸。每一片影像校正片中,点和点之间的距离是相同的,根据这个距离,影像校正片分成很多种 规格,从微米到毫米都有,我们可以根据我们的视野范围和所需要的精度进行选用。
图4-8 影像校正片
软件校正
在上一小节中,我们认识了何谓影像校正片,在这一小节中,我们就来学习如何利用影像校正片进行相机校正,很幸运地,NI Vision Development Module提供了很棒很好用的function可以帮助我们来做这件事,接下来我们马上就来认识、使用它们吧!
还记得曾经在第一章提到过的
Distortion Model (Grid)校正模型吗?这种校正方式就是利用相机拍摄一张格点校正片的影像,可同时修正镜头失真与非垂直透视投影所造成的失真。如果大家的 labview都是安装在计算机的C槽下面的话,那大家可以在C:Program Files (x86)National InstrumentsLabVIEW 2012examplesVision2. FunctionsCalibration这个路径下找到一个叫做Perspective Calibration Example的vi,这个vi就是在教导我们如何使用影像校正片进行相机校正,我先说明一下这个范例程序是在做什么:这个程序的目的是要量测铁环的内 径,但是我们发现我们的相机架设的位置与待测物似乎不是垂直的,而且镜头造成的球面像差有一点点严重,所以在进行影像量测之前,我们必须先进行相机的空间 校正,然后我们才能准确量出这些铁环的内径。在说明这个范例程序之前,我们先来认识几个function:1.IMAQ Calibration Target to Points - Circular Dots:输入圆与圆的实际间距,它会在binary image中侦测圆,并且将侦测到的圆的坐标等信息输出。
图4-9 IMAQ Calibration Target to Points - Circular Dots
2. IMAQ Learn Distortion Model:学习Distortion Model以用来校正球面像差,关于Distortion Model Setup内输入不同的参数所造成的结果差异,在此范例同一个路径下有一个Calibration Models Comparison的vi,想要深入了解的朋友可以打开来看看,在这里就不加以叙述了。
图4-10 IMAQ Learn Distortion Model
3.MAQ Learn Perspective Calibration:学习Distortion Model以用来校正相机与待测物非垂直关系的状况。
图4-11 IMAQ Learn Perspective Calibration
4. IMAQ Get Calibration Info2:输出关于影像校正的信息。
图4-12 IMAQ Get Calibration Info2
5. MAQ Set Calibration Info:将校正信息从一个已校正的影像中设置到另一个未校正的影像中。
图4-13 IMAQ Set Calibration Info
介绍完程序中会用到的重要function后,现在我们就来看看程序,程序和其说明如下图4-14~4-15所示。程序执行的结果如下图4-16所示。
图4-14 Perspective Calibration Example1
图4-15 Perspective Calibration Example2
图4-16 Perspective Calibration Example Result
在图4-16的执行结果中作者我标记了两个铁环,我们可以看到这两个铁环在图片中的大小相差满大的,但是量测出来的实际内径值却相差无几,这表示我们做的校正成功了。
结语
在这个部分我们讨论到如何进行影像空间校正,把pixel值变成真实的单位,把球面像差和相机与待测物不垂直的问题克服,这可是影像量测前最重要的前 置作业,大家一定要多注意细节,务必精益求精,在这个地方偶尔吹毛求疵一下也无不可,否则一步错、步步错,后面问题数不尽又解不了,那才头痛喔。
32