图像畸变对2D定位引导结果的影响与校正原理
很多2D视觉定位工位在调试阶段会出现一个比较隐蔽的现象:把工件放在画面中心附近做定位测试,结果一直很稳定,重复精度也达标;可一旦工件被放到画面边缘的位置,定位结果就开始偏离,越靠近画面四角,偏差越明显。这时候如果只检查算法、换相机,往往解决不了问题,因为根源并不在算法和硬件选型,而在工业镜头本身存在的光学畸变。图像畸变是每一只工业镜头都无法完全消除的固有特性,它会让画面不同位置的实际比例发生变形,从而直接影响2D定位在画面不同区域的测量准确性。这篇文章就从畸变如何影响定位结果切入,讲清楚畸变产生的机理,以及工业视觉系统里常用的畸变校正原理。
畸变对2D定位的具体影响:越靠边缘偏差越大
图像畸变对2D定位引导的影响,本质上是破坏了“画面坐标到实际物理位置”之间的一致性换算关系。在理想状态下,我们希望画面里一个像素对应的实际物理尺寸,在全图的任何位置都完全一致——这样只要算出了工件在画面里的像素坐标,乘以固定的像素当量,就能得到准确的实际位置偏差。
但真实镜头的光学系统做不到这种理想状态。畸变会导致画面不同区域的实际放大比例不一样:常见的桶形畸变会让画面边缘的区域在成像时被压缩,图像中心区域对应放大比例偏小;枕形畸变则相反,会让画面边缘的区域被放大,比例偏大。用没有做过畸变校正的系统去做定位,就会看到这样的现象:工件放在画面中心时,由于中心区域的畸变很小,测出来的位置还比较准;工件一移动到画面边缘,畸变把该区域的实际尺寸比例改变了,系统按中心区域的像素当量去换算,算出来的位置就偏离了真实值,而且越靠近画面四角,畸变越严重,偏差也越大。
举个直观的例子:假设画面中心区域1个像素对应0.05毫米,而画面边缘因为桶形畸变,1个像素实际对应0.07毫米。系统如果不管位置,一律按0.05毫米/像素去换算,工件放在边缘时,本应算出10毫米的偏移,就会被算成偏小或者偏大的值,误差随着工件位置越靠边缘越明显。对于相机视野较大、工件又在视野内移动的定位工位来说,这种畸变造成的边缘测量偏差,会让定位精度在整幅画面的不同位置之间波动,难以稳定。
畸变的来源:镜头光学结构无法做到完全无畸变
要理解畸变为什么无法完全避免,先要清楚它是怎么产生的。工业镜头为了让光线的焦点能同时落在感光芯片上,内部需要组合多片透镜,这些透镜的曲面会不同程度地折射光线。在理想的光学系统里,我们希望光线经过镜头后,画面中心和边缘的光线都能按同样的比例成像。但真实镜头的透镜曲面和光线入射角度,很难让中心和边缘都达到完全一致的成像比例。
一个很常见的直观类比是看透过装水的玻璃瓶观察物体:透过瓶身中间看,物体基本不变形;但从瓶壁的弧形边缘看过去,物体就会明显变形。工业镜头内部多片透镜叠加之后,边缘区域的光线被不同程度的弯曲、压缩或者拉伸,就会在画面上形成桶形、枕形或者更加复杂的畸变模式。
畸变的程度和镜头的焦距、结构设计有关,广角镜头因为视角大、边缘光线入射角度大,畸变往往更明显;长焦镜头畸变相对较小,但无法做到完全消除。所以在定位工位上,畸变是每一只镜头都存在的固有特性,差别只在大小,只要相机的视野范围足够大、工件会在视野内移动,畸变对定位结果的影响就需要认真处理。
校正的原理:先测畸变模型,再反向补偿每个像素
既然畸变无法在镜头层面完全消除,工业视觉的应对思路就是:先通过标定把镜头畸变的具体规律测出来,建立畸变模型,然后在软件层面做反向补偿,把畸变图像校正回无畸变的理想状态。
校正的第一步是畸变标定,也就是测出畸变模型。标准做法是拍摄一张带有多组已知精确间距的标定板,比如一张布满黑白方格或者圆点、且每个格子的实际物理间距都已知的标定板。把标定板放在不同位置、不同角度下拍摄多张照片,系统就能对比“标定板在真实空间里的已知几何关系”和“这些点投影到图像里的实际坐标”,反推出当前镜头的畸变参数。这个过程能算出畸变的具体数学表达式,比如径向畸变的系数、切向畸变的系数,把这些参数保存下来,就建立起了这台相机的畸变模型。
校正的第二步是畸变补偿。有了畸变模型之后,在每次定位计算之前,系统会把采集到的原始图像,按照畸变模型逐像素做坐标重映射,把畸变图像里的每一个像素,重新摆放到它在无畸变图像里应该处于的位置。经过这一层校正,画面里一个像素对应的实际物理尺寸,在全图的任何位置就基本一致了,原来那种“越靠边缘偏差越大”的问题就得到了修正。
更高效的做法是,不一定要逐帧对整幅图像做重映射,而是在标定的时候,把整幅画面划分成网格,计算出每个网格位置对应的畸变校正参数,做成一张查找表。定位时只需要根据工件当前落在哪个网格区域,直接查表得到对应的校正系数,再对算出来的坐标做一次补偿即可,省去了整幅图像重映射的计算开销,速度更快。
校正的边界与落地注意点
畸变校正能明显改善大视野定位工位的边缘精度,但它也有一些边界和落地时需要注意的地方。
首先是校正能修正位置测量偏差,但不能凭空恢复已经失真的图像细节。校正只是把像素位置重新摆放,如果畸变导致的拉伸、压缩已经在原始图像里把轮廓、特征点的细节变形了,校正后这些特征的相对位置能基本复原,但原始图像里已经丢失或严重形变的细节,是无法完全恢复的。所以对畸变比较大的镜头,还是建议在光学上优先选择畸变相对较小的镜头,降低校正的负担。
其次是畸变校正的效果受标定质量直接影响。如果标定板拍摄的照片数量不够、角度覆盖不全,反推出来的畸变参数就不够准确,校正后依然会残留一部分位置偏差。标定时要让标定板尽可能覆盖画面的大部分区域,尤其要覆盖畸变明显的边缘区域,并且多拍几个不同位置、不同角度的图像,才能把畸变模型测准。
第三是校正参数的时效性。镜头和相机的相对位置如果发生松动、或者镜头变焦、对焦位置改变,畸变模型也会跟着改变,之前标定好的校正参数就不再准确。所以在镜头位置固定后做一次畸变标定,之后如果镜头有过拆装、调整,需要重新做标定,不能一劳永逸。
整体来看,图像畸变是工业镜头固有的光学特性,它对2D定位引导的影响,集中体现在画面边缘区域的测量比例失真,导致工件越靠近画面边缘,定位偏差越大。工业视觉通过“先标定测出畸变模型、再反向补偿每个像素”的校正原理,把畸变带来的位置偏差修正回来,让大视野定位工位在整幅画面的不同位置都能保持一致的测量精度。理解了畸变的产生机理和校正原理,就能在遇到“中心准、边缘偏”这类定位问题时,准确判断根源在畸变,并选择合适的校正手段解决。





