【MV】Camera Calibration: Radial and Tangential Distortion Correction 文章目录1、前景回顾2、图像成像中发生的畸变透镜缺陷组装偏差透镜缺陷径向畸变组装偏差切向畸变3、图像畸变如何校正径向畸变切向畸变整体畸变4、参考1、前景回顾前景回顾三角化、姿态估计、相机标定、稀疏重建图像坐标系到世界坐标系的转化过程u 0 u_0u0​和v 0 v_0v0​主点中心点 (C x , C y C_x, C_yCx​,Cy​)坐标这个公式是比较理想的成像情况未考虑相机畸变像素坐标轴倾斜透镜形状缺陷组装工艺偏差s ss被称为倾斜参数Skew Parameter。它衡量的是成像平面上x xx轴和y yy轴之间的不垂直程度。数学含义从图中公式s f x tan ⁡ α s f_x \tan \alphasfx​tanα可以看出s ss与x xx轴在y yy方向上的投影偏差角度α \alphaα相关。当x xx和y yy轴完全垂直时α 90 ∘ \alpha 90^\circα90∘或者说偏转角为 0此时tan ⁡ ( 0 ) 0 \tan(0) 0tan(0)0所以s 0 s 0s0。当传感器制造工艺不完美导致像素平面变成了平行四边形而非矩形时s ≠ 0 s \neq 0s0。坐标轴倾斜的由来制造误差这是最主要的原因。在 CCD 或 CMOS 传感器生产过程中由于安装偏差或加工限制光敏单元阵列可能并非绝对的直角坐标系。图像表现这种倾斜会导致成像后的图像在某个方向上出现轻微的“剪切”效果Shearing effect何时需要考虑s ss只有在极高精度工业视觉或使用特殊光学结构如非正交阵列传感器时才需要开启对s ss的估计。2、图像成像中发生的畸变透镜缺陷组装偏差相机的成像过程实质上是坐标系的转换。但是由于透镜制造精度以及组装工艺的偏差会出现不同程度的畸变导致原始图像的失真。eg透镜缺陷径向畸变组装偏差切向畸变镜头决定径向装配决定切向极坐标系径向畸变矢量端点沿长度方向发生的变化也就是矢径的变化d r drdr切向畸变矢量端点沿切线方向发生的变化也就是角度的变化d t dtdt径向畸变Radial Distortion画面从中心向四周被“拉伸”或“压缩”直线变弯。切向畸变Tangential Distortion镜头安装不正整个图像局部被“斜着推了一下”。同一张棋盘在不同畸变下的对比径向畸变Radial Distortion镜头本身让图像“鼓起来或缩进去”。切向畸变Tangential Distortion镜头没对正让图像“歪过去”。透镜缺陷径向畸变barrel distortion桶型畸变pincushion distortion枕型畸变还有比较有意思的胡形畸变图像成像中发生的畸变透镜缺陷图像中心畸变较小边缘畸变变大组装偏差切向畸变3、图像畸变如何校正径向畸变镜头的边缘畸变最厉害而且不是线性关系新的位置 原来的方向 × 放大倍数想到了泰勒展开误差 f(r) ≈ k1 r² k2 r⁴ k3 r⁶ k4 r⁸ k5 r¹⁰ k6 r¹² ...k1画出大致趋势。k2把主要弯曲修正好。k3把细节补充完整。k4、k5、k6继续抠极小的细节只有镜头畸变特别严重或精度要求极高时才有明显价值对于绝大多数相机它们带来的收益很小却增加了过拟合和优化不稳定的风险没有奇数项是因为镜头绕光轴具有轴对称性-100 和 100 畸变相等高阶项越来越小r x r^{x}rx随着 x 增大会越来越小贡献也会越来越少切向畸变镜片左右偏心镜片上下偏心。历史上OpenCV 使用的是Brown–Conrady Camera Model。严格来说它并不是“先写出公式再证明。”而是Brown1966根据大量真实镜头实验结合几何光学把镜片偏心导致的误差表示为一个二阶多项式模型再通过一阶近似推导出这组形式。因此切向畸变公式更准确地说是一个具有物理意义的经验模型physical-empirical model而不是像牛顿定律那样由基本定律唯一推导出来的。整体畸变Q为什么可以直接相加整体畸变之所以可以近似表示为径向畸变和切向畸变的直接相加是因为实际镜头畸变通常较小在小畸变条件下高阶耦合项可以忽略因此利用一阶线性近似Small Distortion Approximation即可获得足够高的精度这也是 OpenCV 等相机标定模型广泛采用这种表示方式的原因。如果把真实畸变函数写成F ( x , y , p ) F(x,y,p)F(x,y,p)其中x , y x,yx,y像点坐标p pp镜头装配误差等参数在理想状态附近进行泰勒展开F ≈ F 0 F r a d i a l F t a n g e n t i a l O ( ε 2 ) F \approx F_0 F_{radial} F_{tangential} O(\varepsilon^2)F≈F0​Fradial​Ftangential​O(ε2)其中前两项就是径向和切向贡献。O ( ε 2 O(\varepsilon^2O(ε2) 表示二阶及以上的小量耦合项。当畸变较小时O ( ε 2 ) ≈ 0 O(\varepsilon^2)\approx0O(ε2)≈0因此F ≈ F r a d i a l F t a n g e n t i a l F \approx F_{radial} F_{tangential}F≈Fradial​Ftangential​这就是Brown-Conrady模型能够成立的数学依据。什么时候不能直接相加例如鱼眼FOV 180°或者超广角170°此时畸变巨大。高阶项不能忽略。于是不能简单Brown模型。需要例如Kannala-BrandtFisheye ModelDouble SphereUnified Camera Model这些都不是简单相加。4、参考https://www.bilibili.com/video/BV1k2421M7tg?spm_id_from333.788.videopod.sectionsvd_sourcea2337ee1e48dbaccac1746d36aed6c99