![图像处理、分析与机器视觉](https://wfqqreader-1252317822.image.myqcloud.com/cover/860/23400860/b_23400860.jpg)
6.1 畸变模型
在根据系统需求完成系统初步设计后,就可以着手设备选型及搭建机器视觉系统。如前所述,要求搭建的系统应尽可能确保生成的图像足以使算法快速准确地从中提取所需信息。为了实现这一目标,常需要在设备选型和系统搭建过程中考虑设备的技术指标、被测目标的尺寸、设备安装的空间限制、相机安装方式、图像采集设备的性能以及图像采集软件等关键问题。
成像系统设备选型时,首先需要考虑所选设备的技术指标是否能满足系统对它的需求(参见第2章)。例如,所选相机传感器的尺寸应能支持系统要求的最小分辨率,相机镜头的焦距和视场应能确保被测目标清晰地占满大多数视场,相机镜头的景深应能保证被测目标沿光轴方向的整个高度都能清晰成像。光源光照机器光照方式应能提供足以使观测目标与背景分割开来的对比度。除了技术指标,安装的空间限制也是设备选型时不可忽视的重要因素。安装空间的限制会反过来影响成像系统的视场、镜头和相机的选择等。一般来说,在开始设备选型时,就要将安装空间限制及设备的技术指标综合考虑。
如无特殊限制,相机应始终垂直于被测目标安装。若相机与被测目标之间有一定角度,则会为成像系统引入透视畸变。尽管可以通过系统校准及其他算法对这些畸变进行补偿,但相对于相机垂直于被测目标安装的成像系统来说,它获得的图像误差仍要高些。
图像采集设备的性能及其处理速度是确保机器视觉系统处理能力及实时性的重要因素。所选择的图像采集设备不仅要能支持系统需求的图像类型、颜色,还要能确保其与相机或其他图像传感器的物理及电器连接。例如,若所选择相机是以BNC接口输出模拟视频,或是以CameraLink接口输出数字视频,所选的图像采集设备就要能支持相应类型的物理接口和视频格式。与图像采集设备相关的图像采集软件应尽可能简单,一方面提供可以快速安装使用的稳定采集程序,另一方面应提供进行二次开发的函数库。除了以上几个关键设备外,最后还要考虑其他为实现机器视觉测量控制所需要的传感器、执行机构等。一般来说,机器视觉系统搭建的核心是构建成像系统,可以在成像系统构建完成后再扩展其他相关子系统。
如第2章所述,搭建完成的机器视觉成像系统理想情况下可以被抽象为小孔成像模型。然而现实世界并不总是很理想。首先,受各种安装条件的限制,相机可能无法垂直于被测目标安装,这就会导致系统生成的图像发生透视畸变,如图6-1所示。透视畸变在相机未能垂直监测目标时发生,在这种情况下,所成图像遵循透视规律,离镜头越近的部分所成图像越大,反之越小。
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P215_15000.jpg?sign=1738946350-FaoS50mK8OkTTqqq07Bl57TgMdFXnj9J-0-0da2e8c51df7b31eccd84cbaaabdeb20)
图6-1 透视畸变
图6-1中(xw,yw,zw)为被测目标在真实世界坐标中的位置,(xc,yc,zc)代表目标所成像的坐标,其中zc与光轴一致,而投影平面为与相面平行的辅助平面。不难看出,真实世界坐标系到相机坐标系之间的变换可以通过旋转和平移来实现,表示如下:
Pc=R(Pw-T)
其中Pw为世界坐标系中某个点的坐标,T为世界坐标系原点与相机坐标系原点的差值,而R为世界坐标系与相机坐标系之间的旋转矩阵。假定世界坐标系在平移T后,先沿z轴旋转θ度,再沿y轴旋转φ度,最后再沿x轴旋转ψ度可以得到相机坐标系,则旋转矩阵R如图6-2所示。
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P215_15004.jpg?sign=1738946350-Z4Nqy1dapH8pr1r0aKZwzlkRHfHsspdS-0-b4e418bd23c69efdeeb83e885f23e9e6)
图6-2 三维坐标系变换
然而Pc坐标仍基于相机的三维坐标系,而相机所生成的图像却在二维平面中,还必须通过投影变换将Pc转换到图像坐标系中,这一变换可由下面的矩阵因子计算得到,其中(xc,yc,zc)为Pc的坐标,f为透镜焦距,(x,y)为图像像素坐标。
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P215_30987.jpg?sign=1738946350-zH4wdiKXaZuV8dkuxsZRhk1i3v4EeTz2-0-7519e7425938e94f5623ff69ac31f451)
透视畸变是由镜头的安装方式等外部因素引起的,镜头畸变则是由其自身光学特性的不完美造成的,如图6-3所示。理想情况下图中物面上的点P1和P2在像面上的成像遵循小孔成像原则,然而由于现实中镜头所用凸透镜或凹凸透镜组合固有的光学特性,会导致这些点沿着像面的径向产生偏移,从而产生镜头的径向畸变。镜头畸变常用成像画面相对于正常图像的畸变率(%Distortion)表示。当畸变率为正时,说明成像画面呈桶形向外膨胀,称为桶形畸变;当畸变率为负时,则说明画面向中间收缩,称为枕形畸变。须形畸变是桶形畸变和枕形畸变混合产生的结果,图像中心处接近桶形畸变,但由中心向边缘逐渐过渡到枕形畸变。通常在为机器视觉系统选择镜头时,需要确保镜头的最大畸变小于1%。
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P216_15017.jpg?sign=1738946350-TdTK8ZNULAew2Js9nmr92c6NH14L2Tbq-0-308644f3dd01a733c8b1b434066d9679)
图6-3 镜头的径向畸变
带有镜头径向畸变的成像系统模型可以用图像的坐标系表述如下:
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P216_30992.jpg?sign=1738946350-fZqm8YNVuQnzKWqDw8qjDT0yx5iFb3OM-0-970884a4eaf107959c59d3c1534479a2)
其中(xu,yu)是矫正图像(未发生畸变的理想图像)像素点的坐标,(xd,yd)是对应畸变图像点的坐标,(xo,yo)是畸变中心点的坐标,T为畸变函数。式中r为理想图像中像素相对于畸变中心的距离,可表示为
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P216_30994.jpg?sign=1738946350-DeELQdGKFuJEbOt6kQuobV4LLThcVAEI-0-d911144c331abca2aed499e386bebc76)
若以畸变中心点作为坐标系的原点,即(xo,yo)=(0,0),则带有镜头径向畸变的成像系统模型可简化为
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P216_30996.jpg?sign=1738946350-PJJQsZhCHj4QDD4LxU2aLQ4Fa64Rev8m-0-43d454dce33e026553b5c37bd92e4538)
而此时r为理想图像中像素到原点的距离:
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P216_30998.jpg?sign=1738946350-Oi9V7vTI441D3r59FBZAuPVdMlDKQoH7-0-b30a146a27bb3dda027deaf91ed6e0be)
镜头畸变函数T较为复杂,很难找到与之对应的精确函数表达式。为了能定量表示畸变函数且简化计算,总希望能找到某种畸变函数T的近似表达式,由此不难想到泰勒级数(Taylor series)。泰勒级数可以用相对简单的无限相加的项(即级数)来表示复杂函数,这些相加的项可以由复杂函数在某一点的导数求得。根据泰勒级数,镜头畸变函数T可以表示为
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P217_31001.jpg?sign=1738946350-Tf1b6WikeJOGUoMuPbDgl0qG2ebia4vG-0-d0bf21f2627b54c617ccf9745be8f765)
由于镜头在畸变中心处不会产生畸变,因此可得知T(0)=k0=1。此外,镜头特性通常沿光心对称,经镜头生成的图像沿畸变中心点也对称。为了体现这一特性,只需要保留T(r)中的偶次方项。综合考虑这两个实际因素,镜头畸变函数T可简化为
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P217_31003.jpg?sign=1738946350-sCo8erYcoJehYioPz3NWCYzENHDySzvo-0-82a881e2e72475a4dc0d3931e82a4929)
若对参数k重新按顺序编号,则有
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P217_31005.jpg?sign=1738946350-6llK6eJIz8hTQid3w2iN8JcM6tXhvn6O-0-0ac7a656f1408fbf722dc6eded51b5f7)
然而,若用无限项泰勒级数代表镜头畸变函数根本无法进行计算,因此只能从泰勒级数中选择一定数量的项(即泰勒多项式,Taylor polynomial)来近似表达畸变函数。这样带有镜头径向畸变的成像系统模型可近似表示成
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P217_31007.jpg?sign=1738946350-g1sB9fjugpAKzT9UqEOYhH5yhjwhVmMw-0-ee4acae42f889b6518cf06d1f2e5cb9b)
值得庆幸的是,随着镜头生产工艺的不断发展,现实中的镜头畸变已经可以被控制在较小的范围内。通常只要使用泰勒多项式中的前面几项,就足以满足精度等方面的要求。例如,畸变最为严重的鱼眼镜头可以用6次多项式表示,质量一般的网络视频摄像头可以用4次多项式表示。而镜头质量相对较好的成像系统,其成像模型用下面的二次泰勒多项式表述即可:
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P217_31009.jpg?sign=1738946350-x5Ob1dYraH7ToZsxGYcyQlxJBI6WTwh1-0-1cfdcb2755cf979ee228a6cde1dd369f)
以上畸变模型是用理想图像来表示畸变图像,简称为径向畸变-矫正(distortion-undistortion)模型。也可以反过来从图像矫正的角度建立如下径向矫正-畸变(undistortion-distortion)模型(假定畸变中心为坐标原点):
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P217_31011.jpg?sign=1738946350-aP9SicA3ocI4GZYZLC3tCtBSgJ6sqMYG-0-de54bc1220e83893060a055694f1ab83)
注意,此时rd变为畸变图像像素到坐标原点的距离。如果同样使用泰勒多项式近似表示T(rd),并根据镜头的畸变特性和对称性对公式优化,则有下面径向畸变模型表达式:
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P217_31013.jpg?sign=1738946350-ZEkhnhzP1j1vMGxWA9ak7d7ijn7BjOA9-0-44d98a5cd1339c4c28dede8ae8963a6d)
切向畸变是由于相机在生产制造过程中未能使其图像传感器与光轴垂直安装而造成的。在这种情况下相机图像传感器与镜头之间并未平行安装,而是存在一定的角度,如图6-4所示。与径向畸变的影响不同,切向畸变会使图像像素沿切线方向变形,如将矩形变为梯形图像。
切向畸变的数学模型可描述为
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P217_31015.jpg?sign=1738946350-1iHmgISvJcipB4Li5qme8cz9xiecb6AT-0-c2be1e12f6e20da87b6d5987375d7b2e)
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P218_31017.jpg?sign=1738946350-DozREIBtB7Andx7KVr7GhFTKgDwErSwY-0-23514f060fa914ae448083b9019a0add)
其中,(xu,yu)是发生畸变的图像像素点的坐标,(xd,yd)是对应畸变图像点的坐标,P1和P2为切向畸变系数。
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P218_15040.jpg?sign=1738946350-NQRK1xzDmjU2Nksr8HzcQYHv6zAvkynn-0-c53af0fe83e81e22bdabd3a585dd26a9)
图6-4 镜头的切向畸变
径向和切向畸变模型研究的出发点还是透镜的小孔成像光学模型,它们分别在小孔成像光学模型的基础上进一步研究镜头和相机的特性,并建立更接近相机实际情况的数学模型。如果某些相机既存在径向畸变又存在切向畸变,则可以综合两种模型来表示相机的畸变:
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P218_31020.jpg?sign=1738946350-fmVsnzzCKqe5FtXfTmgkd8B8ZVaVbbOF-0-e8dc95fc8def6c25a28dd05c539cf64b)
这个使用多项式表示的相机畸变模型又称为多项式畸变模型(polynomial distortion model)。多项式畸变模型可以相对准确地表示镜头径向和切向畸变,但是高阶的多项式模型需要确定的参数多,计算量大,而且较难找到与之准确对应的反函数。
经过研究,Fitzgibbon等人找到了另外一种只用一个参数,且较容易找到反函数的镜头径向畸变模型,表示如下:
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P218_31022.jpg?sign=1738946350-z4pfOTO6LTOK1BnmAUvH3c578g2RFVRd-0-1e8a69c4f5b46ae955c31cbc34ab77c0)
与之对应的反函数可以表示为
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P218_31023.jpg?sign=1738946350-Eeak13BkgcXOIlZjzZSK4ws9Wk8pd5qB-0-875076320b95823794eeacd793ef111e)
这一模型称为分割畸变模型(division distortion model),公式中对比二次泰勒多项式径向畸变模型和分割畸变模型可以发现,两者的畸变函数恰好在形式上互倒。分割畸变模型所表示的镜头畸变本质上属于径向畸变,其中k1<0时,代表桶形畸变,k1>0时,代表枕形畸变。分割畸变模型相对于多项式畸变模型来说计算速度要快,要选择的参数也少,但它的误差也稍大些。选择何种模型要根据相机镜头的质量和对系统实时性的要求综合考虑。
在机器视觉系统开发过程中,还经常遇到图像平面非线性的情况。在这种情况下,可以使校准点阵覆盖整个视场或ROI,这样就可以基于校验点阵中各点的矩形邻域内的信息,以插值的方式建立像素到世界坐标之间的映射关系。如果上述各种方法均无效果,如开发机器人视觉系统等,就要为所用的相机建模。一般来说,建立的相机模型应包括相机焦距、光心以及基于指定系数的径向和切向畸变模型等,应能表达相机与所观测目标之间的关系,如被测目标的位置、姿态等。图6-5对各种机器视觉系统的畸变及其模型进行了汇总。
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P219_15078.jpg?sign=1738946350-NWVus0M9LsPJsca615G9dvSi7l4Lo3vm-0-81237f1cd60d91f2dc5e81db7c7cb7b1)
图6-5 畸变及畸变模型
图6-5中还提到了灰度分布不均的问题,它是指在光源不能提供均匀的光照、相机镜头存在渐晕、相机传感器有杂质或被测目标表面非线性时导致图像中灰度不能均匀分布的情况,如图6-6所示。对于此类畸变,通常需要通过明场校正(bright field correction)来处理。明场校正又称为平场校正(flat field correction),是指基于机器视觉系统采集或由数学模型估算的明亮背景图像(明场)对灰度分布不均匀的图像进行矫正的过程。经过明场矫正后,图像中的灰度分布会更接近真实情况,且相机传感器杂质对图像的影响也会被消除。
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P220_15084.jpg?sign=1738946350-1IXket2NS5njyPe2Ltu3nITvy4lpkTFn-0-7f309f571d68e53fea9aaab47e1a21ad)
图6-6 图像灰度分布不均
明场校正过程基于下面的公式进行计算:
![](https://epubservercos.yuewen.com/A7093E/12023546604525806/epubprivate/OEBPS/Images/Figure-P220_31034.jpg?sign=1738946350-mb3n5e1CYcsXIDiCI8pZ4LPb0MkiXrv0-0-c3b8e74ac09e7fce92817dd848e97a21)
其中Median是对明场与暗场差值求中值的运算符,矫正系数用于对矫正图像的灰度进行修正。由此可见,明场矫正过程需要机器视觉系统的明亮背景图像和暗的背景图像参与,由于暗的背景很容易通过程序创建,因此明场矫正过程至少需要明场图像才能正常运行。
明场图像可通过采集法和估算法两种途径获得。使用采集法获取明场图像时,需要在机器视觉系统搭建完成后,将目标移开并使用较亮的背景进行图像采集。通常情况下,需要连续采集超过10帧图像,并对它们进行平均后再作为明场图像使用。使用采集法获取暗场图像时,只要将相机用其镜头盖遮挡后采集图像即可。估算法基于从原图像中选取一个点阵,并使用这些点的像素值来拟合一个代表图像灰度分布的多项式模型。最后再基于该模型估算明场图像并进行明场矫正。估算法的准确性与点阵的大小和所选多项式的阶数有关。点阵和阶数越大,估算的结果越准确,当然计算量也就越大。
研究各种畸变来源及其模型的目的,是为了帮助机器视觉系统寻找所采集图像像素与观测目标对应点之间的关系。在机器视觉系统运行之前,可以先使用为机器视觉成像系统建立的模型与一系列已知映射关系的点确定模型中的参数,此后就可以在系统运行过程中使用这一确定了参数的映射关系实现准确的测量和控制。这种综合使用各种成像系统模型确立图像中像素点与真实世界坐标系之间映射关系的过程就是系统的校准过程。