1. 实物与图片坐标之间的转换

示例:用图像引导机器人的针头插入
任务:根据器官的透视投影图像进行多根针插入
真实世界坐标中的目标物体被摄像头捕捉到,并在图片坐标中存储为图片。(假设所有目标物都在同一平面)机器人以此为判断依据,把针头插入目标物。

1.1 校准

Calibration校准,是识别转换参数的过程
MV:成像几何(1)

图片:
[xy]\begin{bmatrix} x \\ y \end{bmatrix}
物体:
[XY]\begin{bmatrix} X \\ Y \end{bmatrix}
[xy]=PRT[XY]\begin{bmatrix} x \\ y \end{bmatrix}=PRT \begin{bmatrix} X \\ Y \end{bmatrix}
T: translation平移 R: rotation旋转 P:perspective projection透视投影
T(w):[XY]+[vxvy]=[XY]T(-w):\begin{bmatrix} X \\ Y \end{bmatrix}+ \begin{bmatrix} -v_x \\ -v_y \end{bmatrix}= \begin{bmatrix} X' \\ Y' \end{bmatrix}

R(α):[cosαsinαsinαcosα][XY]=[XY] R(-\alpha):\begin{bmatrix} cos\alpha & -sin\alpha\\ sin\alpha & cos\alpha \end{bmatrix} \begin{bmatrix} X' \\ Y' \end{bmatrix} =\begin{bmatrix} X'' \\ Y'' \end{bmatrix}
P:β[XY]=[xy] P: -\beta\begin{bmatrix} X'' \\ Y'' \end{bmatrix}=\begin{bmatrix} x \\ y \end{bmatrix}
T:[xy]=[a11a12a13a21a22a23][XY1] T:\begin{bmatrix} x \\ y \end{bmatrix}= \begin{bmatrix} a_{11}&a_{12}&a_{13} \\ a_{21}&a_{22}&a_{23} \end{bmatrix} \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix}
aij:a_{ij}:transformation parameters转换参数
[xy]=[a11a12a13a21a22a23][XY1]=[XY1000000XY1][a11a12a13a21a22a23] \begin{bmatrix} x \\ y \end{bmatrix}= \begin{bmatrix} a_{11}&a_{12}&a_{13} \\ a_{21}&a_{22}&a_{23} \end{bmatrix} \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix}= \begin{bmatrix} X&Y&1&0&0&0 \\ 0&0&0&X&Y&1 \end{bmatrix} \begin{bmatrix} a_{11} \\ a_{12} \\ a_{13} \\ a_{21}\\a_{22}\\a_{23} \end{bmatrix}
[x1y1x2y2xNyN]=[X1Y11000000X1Y11X2Y21000000X2Y21XNYN1000000XNYN1][a11a12a13a21a22a23] \begin{bmatrix} x_1 \\ y_1 \\ x_2 \\ y_2 \\ \\ x_N\\y_N\end{bmatrix}=\begin{bmatrix} X_1&Y_1&1&0&0&0 \\ 0&0&0&X_1&Y_1&1 \\ X_2&Y_2&1&0&0&0\\0&0&0&X_2&Y_2&1\\\\X_N&Y_N&1&0&0&0\\0&0&0&X_N&Y_N&1 \end{bmatrix} \begin{bmatrix} a_{11} \\ a_{12} \\ a_{13} \\ a_{21}\\a_{22}\\a_{23} \end{bmatrix}
a=(XTX)1XTxa=(X^TX)^{-1}X^Tx是最小误差xXa2||x-Xa||^2的解(最小二乘逼近)。
(最小二乘逼近的详细推导在supply中)

假设我们做了一系列的实验,期望输出yy被一个关于tt的线性函数近似,y=C+Dty=C+Dt
y1=C+Dt1y2=C+Dt2...yN=C+DtN[x1y1...yN]=[1t11t2...1tN][CD]b=Ax\begin{matrix} y_1=C+Dt_1 \\ y_2=C+Dt_2\\...\\y_N=C+Dt_N \end{matrix}\rightarrow \begin{bmatrix} x_1 \\ y_1 \\ ... \\ y_N\end{bmatrix}= \begin{bmatrix} 1&t_1 \\ 1&t_2 \\ ... \\ 1&t_N \end{bmatrix}\begin{bmatrix} C \\ D \end{bmatrix} \rightarrow b=Ax
ATAx=ATbATA[CˉDˉ]=ATb[CˉDˉ]=(ATA)1ATb[CˉDˉ]=[Ntititi2]1[yitiyi] A^TAx=A^Tb\rightarrow A^TA\begin{bmatrix} \bar{C} \\ \bar{D} \end{bmatrix}=A^Tb\rightarrow \begin{bmatrix} \bar{C} \\ \bar{D} \end{bmatrix}=(A^TA)^{-1}A^Tb\rightarrow \begin{bmatrix} \bar{C} \\ \bar{D} \end{bmatrix}=\begin{bmatrix} N&\sum t_i \\ \sum t_i & \sum t_i^2\end{bmatrix}^{-1} \begin{bmatrix} \sum y_i\\ \sum t_iy_i \end{bmatrix}

2. 齐次坐标

Homogeneous coordinates齐次坐标,齐次向量对应于一条经过原点的直线。
MV:成像几何(1)
[xyz][kxkykz1],k0 \begin{bmatrix} x \\ y \\ z \end{bmatrix} \leftrightarrow \begin{bmatrix} kx \\ ky \\ kz\\1 \end{bmatrix},k\neq0
齐次坐标的优势:平移和透视变换可以用矩阵形式表示,连续几何变换可以表示为具有矩阵乘法的一系列矩阵。

图像点:
ui=[xiyi]u^i=[kxikyik] u_i=\begin{bmatrix} x_i \\ y_i \end{bmatrix} \rightarrow \hat u_i=\begin{bmatrix} kx_i \\ ky_i \\ k \end{bmatrix}
实物点:
X0=[x0y0z0]X^0=[kx0ky0kz0k] X_0=\begin{bmatrix} x_0 \\ y_0 \\ z_0 \end{bmatrix} \rightarrow \hat X_0=\begin{bmatrix} kx_0 \\ ky_0 \\ kz_0 \\ k \end{bmatrix}
在齐次坐标的平移:
[xyz1]new=[100tx010ty0001][xyz1] \begin{bmatrix} x \\ y \\ z\\1 \end{bmatrix}_{new}= \begin{bmatrix} 1&0&0&t_x \\ 0&1&0&t_y \\ 0&0&0&1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix}
T1=[100tx010ty001tz0001] T^{-1}=\begin{bmatrix} 1&0&0&-t_x \\ 0&1&0&-t_y \\ 0&0&1&-t_z\\0&0&0&1 \end{bmatrix}
缩放:
S=[Sx0000Sy0000Sz00001] S=\begin{bmatrix} S_x&0&0&0 \\ 0&S_y&0&0 \\ 0&0&S_z&0\\0&0&0&1 \end{bmatrix}
旋转:
MV:成像几何(1)
Rz,θ=[cosθsinθ00sinθcosθ0000100001]Rx,α=[10000cosαsinα00sinαcosα00001]Ry,β=[cosβ0sinβ00100sinβ0cosβ00001] R_{z,\theta}=\begin{bmatrix} cos\theta & sin\theta & 0 & 0 \\ -sin\theta & cos\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} R_{x,\alpha}=\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & cos\alpha & sin\alpha & 0 \\ 0 & -sin\alpha & cos\alpha & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} R_{y,\beta}=\begin{bmatrix} cos\beta &0 & -sin\beta & 0 \\ 0 & 1 & 0 & 0 \\ sin\beta & 0 & cos\beta & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}
复合变换:
A=Rz,θSTP=AP A=R_{z,\theta}ST \rightarrow P'=AP
透视投影:从平面上的一点到三维空间的反透视变换对应于一条直线,即一个齐次向量。
MV:成像几何(1)
Z>>fZ>>f
相似三角形:
xf=XZf=XfZ\frac{x}{f}=-\frac{X}{Z-f}=\frac{X}{f-Z}
yf=YZf=YfZ\frac{y}{f}=-\frac{Y}{Z-f}=\frac{Y}{f-Z}
矩阵形式的透视投影:
ch=Pwh=[100001000010001f1][kXkYkZk]=[kXkYkZkZf+k] c_h=Pw_h=\begin{bmatrix} 1 &0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & -\frac{1}{f} & 1 \end{bmatrix}\begin{bmatrix} kX \\ kY \\ kZ \\ k \end{bmatrix}= \begin{bmatrix} kX \\ kY \\ kZ \\ -\frac{kZ}{f}+k \end{bmatrix}
图像点的笛卡尔坐标:
c=[xyz]=[fXfZfYfZfZfZ] c= \begin{bmatrix} x \\ y \\ z \\ \end{bmatrix}= \begin{bmatrix} \frac{fX}{f-Z} \\ \frac{fY}{f-Z} \\ \frac{fZ}{f-Z} \end{bmatrix}
反透视变换映射图像点回到三维:
Wh=P1ChW_h=P^{-1}C_h
P1=[100001000010001f1] P^{-1}=\begin{bmatrix} 1 &0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & -\frac{1}{f} & 1 \end{bmatrix}

3. Camera Model and Calibration

Camera Model
实际中,摄像机和世界系统不一致,安装在gimbal万向架上的摄像机可以调整xx轴和XX轴之间的角度和zz轴和ZZ轴之间的角度。

1.从世界坐标原点到万向节中心的平移
2.xx轴平移(绕zz轴旋转一个角度θ\theta)
-平移角是在xx轴和XX轴之间测量的。
3.zz轴的倾斜(绕xx轴旋转一个α\alpha)
-倾斜角度是测量之间的zzZZ轴。
4.从万向节中心到摄像机坐标系原点的平移。
5.从意象点到世界点的透视转换。
Ch=PT(r)Rx(α)Rz(θ)T(w0)WhC_h=PT(r)R_x(\alpha)R_z(\theta)T(w_0)W_h
在齐次坐标下,场景点或实物点在世界坐标XX上的投影到图像点uu由一个简单的线性映射给出。
u=MX[kXkYkZk]=[a11a12a13a14a21a22a23a24a31a32a33a34a41a42a43a44][XYZ1] u=MX\rightarrow \begin{bmatrix} kX \\ kY \\ kZ \\ k \end{bmatrix}= \begin{bmatrix} a_{11} & a_{12} &a_{13}&a_{14}\\ a_{21} & a_{22} &a_{23}&a_{24}\\ a_{31} & a_{32} &a_{33}&a_{34}\\ a_{41} & a_{42} &a_{43}&a_{44}\\ \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix}
如果缩放系数为1:
[XYZ1]=[a11a12a13a14a21a22a23a24a31a32a33a34a41a42a43a44][xyz1] \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix}= \begin{bmatrix} a_{11} & a_{12} &a_{13}&a_{14}\\ a_{21} & a_{22} &a_{23}&a_{24}\\ a_{31} & a_{32} &a_{33}&a_{34}\\ a_{41} & a_{42} &a_{43}&a_{44}\\ \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix}
在接收平面上z=0z=0,忽略掉zz项:
[xy1]=[a11a12a13a14a21a22a23a24a31a32a33a34a41a42a431][XYZ1] \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}= \begin{bmatrix} a_{11} & a_{12} &a_{13}&a_{14}\\ a_{21} & a_{22} &a_{23}&a_{24}\\ a_{31} & a_{32} &a_{33}&a_{34}\\ a_{41} & a_{42} &a_{43}&1\\ \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix}
有11个自由参数,可以改写为:
[xy]=XαX=[XYZ10000xXxYxZ0000XYZ1yXyYyZ]α=[α1α2α3α4α5α6α7α8α9α10α11] \begin{bmatrix} x \\ y \end{bmatrix}=X\alpha \\ X= \begin{bmatrix} X&Y&Z&1&0&0&0&0&-xX&-xY&-xZ \\ 0 &0& 0& 0 &X&Y&Z&1&-yX&-yY&-yZ \end{bmatrix} \alpha= \begin{bmatrix} \alpha_1 \\ \alpha_2 \\ \alpha_3 \\ \alpha_4 \\ \alpha_5 \\ \alpha_6 \\ \alpha_7 \\ \alpha_8 \\ \alpha_9 \\ \alpha_{10} \\ \alpha_{11} \\ \end{bmatrix}

相关文章: