相机模型及张正友标定法

针孔相机模型

针孔相机模型是实际研究中最常用的模型。针孔是一个中间有一个小孔的假想墙壁,光只能从小孔通过。

在这里插入图片描述

f f f是摄像机焦距, Z Z Z是摄像机到物体的距离, X X X是物体长度,是图像平面上的物体长度。由相似三角形可得:
− x = f X Z -x = f\frac{X}{Z} x=fZX

可将上图等价转换为如下所示系统,图像平面防止在针孔前方的摄像机模型(数学上等价,形式更简单)。
在这里插入图片描述

经过转换得到
x p = f x c z c y p = f y c z c    ⟺    z c [ x p y p 1 ] = [ f 0 0 0 f 0 0 0 1 ] [ x c y c z c ] \begin{aligned} x_p = f\frac{x_c}{z_c}\\ y_p = f\frac{y_c}{z_c} \end{aligned}\iff z_c\begin{bmatrix} x_p\\ y_p\\ 1 \end{bmatrix}= \begin{bmatrix} f&0&0\\ 0&f&0\\ 0&0&1 \end{bmatrix} \begin{bmatrix} x_c\\y_c\\z_c \end{bmatrix} xp=fzcxcyp=fzcyczcxpyp1=f000f0001xcyczc
在这里插入图片描述

物体投影到成像平面之后由采样器件采样后转换为数字信号,成为像素图像。 d x , d y dx,dy dx,dy分别为一个像素占据的成像平面的物理尺寸(x方向,y方向)。
由于像素坐标系的原点和图像坐标系的原点不同,建模时需要加上两者原点的偏移和 c x c_x cx c y c_y cy,像素坐标系两个轴的夹角 θ \theta θ
u = x p d x + c x − y p cot ⁡ θ d x v = y p d y sin ⁡ θ + c y    ⟺    [ u v 1 ] = [ 1 d x − cot ⁡ θ d x c x 0 1 d y sin ⁡ θ c y 0 0 1 ] [ x p y p 1 ] \begin{aligned} u &= \frac{x_p}{dx}+c_x-\frac{y_p\cot\theta}{dx} \\ v &= \frac{y_p}{dy\sin\theta}+c_y \end{aligned}\iff \begin{bmatrix} u\\v\\1 \end{bmatrix}= \begin{bmatrix} \frac{1}{dx}&-\frac{\cot\theta}{dx}&c_x\\ 0&\frac{1}{dy\sin\theta}&c_y\\ 0&0&1 \end{bmatrix} \begin{bmatrix} x_p\\y_p\\1 \end{bmatrix} uv=dxxp+cxdxypcotθ=dysinθyp+cyuv1=dx100dxcotθdysinθ10cxcy1xpyp1
于是
[ u v 1 ] = 1 z c [ 1 d x − cot ⁡ θ d x c x 0 1 d y sin ⁡ θ c y 0 0 1 ] [ f 0 0 0 f 0 0 0 1 ] [ x c y c z c ] = [ f d x − f cot ⁡ θ d x c x 0 f d y sin ⁡ θ c y 0 0 1 ] [ x c z c y c z c 1 ] \begin{aligned} \begin{bmatrix} u\\v\\1 \end{bmatrix}&=\dfrac{1}{z_c}\begin{bmatrix} \frac{1}{dx}&-\frac{\cot\theta}{dx}&c_x\\ 0&\frac{1}{dy\sin\theta}&c_y\\ 0&0&1 \end{bmatrix} \begin{bmatrix} f&0&0\\ 0&f&0\\ 0&0&1 \end{bmatrix} \begin{bmatrix} x_c\\y_c\\z_c \end{bmatrix}\\ &= \begin{bmatrix} \frac{f}{dx}&-\frac{f\cot\theta}{dx}&c_x\\ 0&\frac{f}{d_y\sin\theta}&c_y\\ 0&0&1 \end{bmatrix} \begin{bmatrix} \frac{x_c}{z_c}\\ \frac{y_c}{z_c}\\ 1 \end{bmatrix} \end{aligned} uv1=zc1dx100dxcotθdysinθ10cxcy1f000f0001xcyczc=dxf00dxfcotθdysinθf0cxcy1zcxczcyc1

畸变模型

为了获得好的成像效果,通常在相机的前方加上透镜。透镜的引入会对成像过程中光线的传播产生新的影响:一是透镜自身的形状会对光线的传播产生影响,二是在机械组装过程中,透镜和成像平面不完全平行,这也会֯得光线穿过透镜投影到成像面时的位置发生变化。
由透镜形状引起的畸变称为径向畸变 。在针孔模型中,一条直线投影到像素平面上还是一条直线。可是,实际拍摄的照片中,摄像机的透镜往往使得真实环境中的一条直线在图片中变成了曲线。越靠近图像的边缘,这种现象越明显。由于实际加工制作的透镜往往是中心对称的,这使得不规则的畸变通常径向对称。它们主要分为两大类:桶形畸变和枕形畸变,如下图所示。
桶形畸变图像放大率随着与光轴之间的距离增加而减小,而枕形畸变则恰好相反。在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变。
除了透镜的形状会引入径向畸变,由于在相机的组装过程中不能使透镜和成像面严格平行,所以也会引入切向畸变。
相机模型及张正友标定法_第1张图片

在这里插入图片描述

通常选用较为规则的图形例如黑白棋盘格进行相机标定,标定效果较好。使用OpenCV中摄像机标定的相关函数定得出相机内参数 c x , c y , f x , f y c_x, c_y, f_x, f_y cx,cy,fx,fy以及畸变校正系数 k 1 , k 2 , k 3 k_1, k_2, k_3 k1,k2,k3

对于径向畸变,可以用一个多项式函数来描述畸变前后的坐标变化:这类畸变可以用与距中心的距离有关的二次及高次多项式函数进行校正。考虑归一化平面上任意一点 p \bm{p} p,其坐标为 [ x ˉ , y ˉ ] T [\bar{x},\bar{y}]^T [xˉ,yˉ]T,是未校正的点的坐标,也可以写成极坐标的形式 [ r , θ ] T [r,\theta]^T [r,θ]T,其中 r r r表示点与坐标原点之间的距离, θ \theta θ表示与水平轴的夹角。
x ˉ d i s t o r t e d = x ˉ ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y ˉ d i s t o r t e d = y ˉ ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) \bar{x}_{distorted} = \bar{x}(1 + k_1r^2 + k_2r^4 + k_3r^6) \\ \bar{y}_{distorted} = \bar{y}(1 + k_1r^2 + k_2r^4 + k_3r^6) xˉdistorted=xˉ(1+k1r2+k2r4+k3r6)yˉdistorted=yˉ(1+k1r2+k2r4+k3r6)
其中 [ x ˉ d i s t o r t e d , y ˉ d i s t o r t e d ] T [\bar{x}_{distorted}, \bar{y}_{distorted}]^T [xˉdistorted,yˉdistorted]T是校正后的点的归一化坐标。上述校正模型中,对于畸变较小的图像中心区域,畸变校正主要是 k 1 k_1 k1起作用;对于畸变较大的边缘区域,主要是 k 2 k_2 k2起作用。对于切向畸变,可以使用另外的两个参数 p 1 p_1 p1 p 2 p_2 p2来进行校正:
x ˉ d i s t o r t e d = x ˉ + 2 p 1 x ˉ y ˉ + p 2 ( r 2 + 2 x ˉ 2 ) y ˉ d i s t o r t e d = y ˉ + p 1 ( r 2 + 2 y ˉ 2 ) + 2 p 2 x ˉ y ˉ \bar{x}_{distorted} = \bar{x} + 2p_1\bar{x}\bar{y} + p_2(r^2 + 2\bar{x}^2) \\ \bar{y}_{distorted} = \bar{y} + p_1(r^2 + 2\bar{y}^2) + 2p_2\bar{x}\bar{y} xˉdistorted=xˉ+2p1xˉyˉ+p2(r2+2xˉ2)yˉdistorted=yˉ+p1(r2+2yˉ2)+2p2xˉyˉ
联合上式,对于相机坐标系中的一点P ( x c , y c , z c ) (x_c,y_c,z_c) (xc,yc,zc),能够通过5个畸变系数找到这个点在像素平面上的正确位置:

  1. 将三维空间点投影到归一化图像平面。设它的归一化坐标为 [ x ˉ , y ˉ ] T [\bar{x},\bar{y}]^T [xˉ,yˉ]T
  2. 对归一化平面上的点进行径向畸变和切向畸变校正。
    { x ˉ d i s t o r t e d = x ˉ ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + 2 p 1 x ˉ y ˉ + p 2 ( r 2 + 2 x ˉ 2 ) y ˉ d i s t o r t e d = y ˉ ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 y ˉ 2 ) + 2 p 2 x ˉ y ˉ \begin{cases} \bar{x}_{distorted} = \bar{x}(1+k_1r^2+k_2r^4+k_3r^6)+2p_1\bar{x}\bar{y}+p_2(r^2+2\bar{x}^2)\\ \bar{y}_{distorted} = \bar{y}(1+k_1r^2+k_2r^4+k_3r^6)+p_1(r^2+2\bar{y}^2)+2p_2\bar{x}\bar{y} \end{cases} {xˉdistorted=xˉ(1+k1r2+k2r4+k3r6)+2p1xˉyˉ+p2(r2+2xˉ2)yˉdistorted=yˉ(1+k1r2+k2r4+k3r6)+p1(r2+2yˉ2)+2p2xˉyˉ
  3. 将校正后的点通过内参数矩阵投影到像素平面,得到该点在图像上的正确位置。
    { u = f x x ˉ d i s t o r t e d + c x v = f y y ˉ d i s t o r t e d + c y \begin{cases} u = f_x\bar{x}_{distorted}+c_x\\ v = f_y\bar{y}_{distorted}+c_y \end{cases} {u=fxxˉdistorted+cxv=fyyˉdistorted+cy

张正友标定法

张正友标定法利用棋盘格标定法,在得到一张标定板的图像之后,利用相应的图像检测算法得到每一个角点的像素坐标(u,v)。将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标W=0,由于标定板的世界坐标系是人为事先定义好的,标定板上每一个格子的大小是已知的,可以计算得到每一个角点在世界坐标系下的物理坐标(U,V,W=0)。
利用每一个角点的像素坐标(u,v)和每一个角点在世界坐标系下的物理坐标(U,V,W=0),来进行相机的标定,获得相机的内外参矩阵、畸变参数。

  1. 求解内参矩阵与外参矩阵的积
    Z ( u v 1 ) = ( f d X − f cot ⁡ θ d x u 0 0 f d Y sin ⁡ θ v 0 0 0 1 ) ( R 1 R 2 T ) ( U V 1 ) = A ( R 1 R 2 T ) ( U V 1 ) Z\begin{pmatrix} u\\v\\1 \end{pmatrix}= \begin{pmatrix} \frac{f}{dX}&-\frac{f\cot\theta}{dx}&u_0\\ 0&\frac{f}{dY\sin\theta}&v_0\\ 0&0&1 \end{pmatrix}\\(R_1 R_2 T) \begin{pmatrix} U\\V\\1 \end{pmatrix}= A\begin{pmatrix} R_1 R_2 T \end{pmatrix} \begin{pmatrix} U\\V\\1 \end{pmatrix} Zuv1=dXf00dxfcotθdYsinθf0u0v01(R1R2T)UV1=A(R1R2T)UV1
    对于不同的图片,内参矩阵A为定值;对于同一张图片,内参矩阵A,外参矩阵 ( R 1 R 2 T ) (R_1 R_2 T) (R1R2T)为定值;对于同一张图片上的单点,内参矩阵A,外参矩阵 ( R 1 R 2 T ) (R_1 R_2 T) (R1R2T),尺度因子Z为定值。将 A ( R 1 R 2 T ) A(R_1 R_2 T) A(R1R2T)记为矩阵H,H即为内参矩阵和外参矩阵的积,记矩阵H的三列为 ( H 1 H 2 H 3 ) (H_1 H_2 H_3) (H1H2H3),则有
    ( u v 1 ) = 1 Z H ( U V 1 ) = 1 Z [ H 11 H 12 H 13 H 21 H 22 H 32 H 31 H 32 H 33 ] ( U V 1 ) \begin{pmatrix} u\\v\\1 \end{pmatrix}= \frac{1}{Z}H\begin{pmatrix} U\\V\\1 \end{pmatrix}= \frac{1}{Z} \begin{bmatrix} H_{11}H_{12}H_{13}\\H_{21}H_{22H_{32}}\\H_{31}H_{32}H_{33} \end{bmatrix} \begin{pmatrix} U\\V\\1 \end{pmatrix} uv1=Z1HUV1=Z1H11H12H13H21H22H32H31H32H33UV1
    利用上式,消除尺度因子Z,可得:
    u = H 11 U + H 12 V + H 13 H 31 U + H 32 V + H 33 u=\frac{H_{11}U+H_{12}V+H_{13}}{H_{31}U+H_{32}V+H_{33}} u=H31U+H32V+H33H11U+H12V+H13
    u = H 21 U + H 22 V + H 23 H 31 U + H 32 V + H 33 u=\frac{H_{21}U+H_{22}V+H_{23}}{H_{31}U+H_{32}V+H_{33}} u=H31U+H32V+H33H21U+H22V+H23
    此处H是齐次矩阵,有8个独立未知元素。每一个标定板角点可以提供两个约束方程(u,U,V的对应关系,u,U,V的对应关系提供了两个约束方程),因此,当一张图片上的标定板角点数量等于4时,即可求得该图片对应的矩阵H。当一张图片上的标定板角点数量大于4时,利用最小二乘法回归最佳的矩阵H。
  2. 求解内参矩阵
    已知矩阵H,接下来求解相机的内参矩阵A,利用约束条件线性求解内参矩阵A。
    假设存在
    B = A − T A − 1 B=A^{-T}A^{-1} B=ATA1
    式中,B为对称矩阵,基于绝对二次曲面原理求出B以后,再对B矩阵求逆,并从中导出内参矩阵A,再由A和单应矩阵H计算外参R和t。
  3. 最大似然估计
    采用最大似然准则优化上述参数。

张正友标定法

你可能感兴趣的:(计算机视觉,人工智能,图像处理)