计算机视觉——单应矩阵

视觉github:https://github.com/g107904/Computer_Vision_task

二维空间的点和线:
m = \begin{bmatrix} u \\ v \\ 1 \end{bmatrix},m' = \begin{bmatrix} u' \\ v' \\ 1 \end{bmatrix},所确定直线:
l^T m = 0,l^T m' = 0,其中l = \begin{bmatrix} a \\ b \\ c \end{bmatrix} \rightarrow \lambda \begin{bmatrix} a \\ b \\ c \end{bmatrix},l = m \times m'
两个直线的交点:
两条直线l,l’,交点m,有l \cdot m = 0,l' \cdot m = 0 \rightarrow m = l \times l'
二维点和线的对偶:
给定任意一个点和直线的等式,我们可以互换点和直线的位置,从而得到一个新的公式。
x_2 = T x_1 \rightarrow l_2 = T^{-T} l_1,其中T是变换矩阵。
三维空间的点、线、面:
平面参数:\pi = \begin{bmatrix} a \\ b \\ c \\ d \end{bmatrix},平面点P\begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} 满足\pi * P = 0
齐次坐标\begin{bmatrix} x' \\ y' \\ z' \\ w \end{bmatrix} \rightarrow \begin{bmatrix} \frac{x'}{w} \\ \frac{y'}{w} \\ \frac{z'}{w} \end{bmatrix},若w=0,则该齐次坐标代表一个无穷远点。
三个方向无穷远点,\begin{bmatrix} x' \ne 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} \rightarrow \begin{bmatrix} \infty \\ 0 \\ 0 \\ 1 \end{bmatrix}
\begin{bmatrix}  0 \\ y' \ne 0 \\ 0 \\ 0 \end{bmatrix} \rightarrow \begin{bmatrix} 0 \\ \infty \\ 0 \\ 1 \end{bmatrix}

\begin{bmatrix}  0 \\ 0 \\ z' \ne 0 \\ 0 \end{bmatrix} \rightarrow \begin{bmatrix} 0 \\ 0 \\ \infty \\ 1 \end{bmatrix}
三维空间的两条平行线相交于某个无穷远点
消失点与消失线:
透视投影变换让平行线可能相交!

    \[\lambda \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = K \begin{bmatrix} R & t \end{bmatrix} \begin{bmatrix} X \\ 1\end{bmatrix} = P \begin{bmatrix} X \\ 1\end{bmatrix}\]

P是透视投影矩阵,将无穷远点代入,有\lambda \begin{bmatrix} u_x \\ v_x \\ 1 \end{bmatrix} = \begin{bmatrix} P_{11} \\ P_{21} \\ P_{31} \end{bmatrix}
已知摄像机的内参,可估计旋转矩阵r_1 = \lambda K^{-1} u_{x \infty} \rightarrow r_1 = \frac{K^{-1} u_{x \infty}}{||K^{-1} u_{x \infty}||},同理可得其他
三维点与平面的对偶:
给定任意一个点和平面的等式,我们可以互换点和平面的位置,从而得到一个新的公式。
单应矩阵:
平面点X = \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} = c + v_x B_1 + v_y B_2 = \begin{bmatrix} B_1 & B_2 & c \end{bmatrix} \begin{bmatrix} v_x \\ v_y \\ 1 \end{bmatrix},其中B_1,B_2是平面的两个基。
平面的投影:

    \[\lambda u = K \begin{bmatrix} R & t \end{bmatrix} \begin{bmatrix} \begin{bmatrix} B_1 & B_2 & c \end{bmatrix} & \begin{bmatrix} v_x \\ v_y \\ 1 \end{bmatrix} \\ 1 \end{bmatrix} = K \begin{bmatrix} R B_1 & R B_2 & R c+t \end{bmatrix} \begin{bmatrix} v_x \\ v_y \\ 1 \end{bmatrix} = H \begin{bmatrix} v_x \\ v_y \\ 1 \end{bmatrix}\]

H即为单应矩阵,8个自由度。
每对点有

    \[\begin{bmatrix} v_x & v_y & 1 & 0 & 0& 0 & -v_x u_x & -v_y u_x & -u_x \\ 0 & 0 & 0 & v_x & v_y & 1 & -v_x u_y & -v_y u_y & -u_y \end{bmatrix} \begin{bmatrix} h_{11} \\ h_{12} \\ h_{13} \\ h_{21} \\ h_{22} \\ h_{23} \\ h_{31} \\ h_{32} \\ h_{33} \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}\]

QR分解:
A = Q*R,A是m*n矩阵,R是m*n上三角矩阵,Q是m*m正交矩阵。
Givens分解:
P=K*R,已知P,则
将P连乘以多个正交矩阵,即R^T,化为上三角矩阵。

    \[P \begin{bmatrix} c_1 & -s_1 & \\ s_1 & c_1 & \\ & & 1 \end{bmatrix} \begin{bmatrix} c_2 & & s_2 \\ & 1 & \\ -s_2 & & c_2 \end{bmatrix}  \begin{bmatrix} c_3 & -s_3 & \\ s_3 & c_3 & \\ & & 1 \end{bmatrix} = \begin{bmatrix}  &  & \\ 0 &  & \\ 0 & 0 &  \end{bmatrix},c^2+s^2 = 1\]


s_1 = \frac{p_{32}}{\sqrt{p_{31}^2+p_{32}^2}},c_1 = \frac{p_{31}}{\sqrt{p_{31}^2+p_{32}^2}}
c_2 = \frac{p_{33}}{\sqrt{p_{31}^2+p_{33}^2}},s_2 = \frac{p_{31}}{\sqrt{p_{31}^2+p_{33}^2}}
c_3 = \frac{p_{22}}{\sqrt{p_{21}^2+p_{22}^2}},s_3 = \frac{-p_{21}}{\sqrt{p_{21}^2+p_{22}^2}}
张正友标定法:
可以针对标定板设定一个公共的坐标。

    \[\lambda \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} f &  & P_x \\  & f & P_y \\ & & 1 \end{bmatrix} \begin{bmatrix} r_1 & r_2 & r_3 & t \end{bmatrix} \begin{bmatrix} X \\Y \\ 0 \\ 1\end{bmatrix} = \begin{bmatrix} f &  & P_x \\  & f & P_y \\ & & 1 \end{bmatrix} \begin{bmatrix} r_1 & r_2  & t \end{bmatrix} \begin{bmatrix} X \\Y  \\ 1\end{bmatrix} = H \begin{bmatrix} X \\Y  \\ 1\end{bmatrix}\]

求出单应矩阵H。
单应矩阵分解:

    \[\begin{bmatrix} h_1 & h_2 & h_3 \end{bmatrix} = \begin{bmatrix} f &  & P_x \\  & f & P_y \\ & & 1 \end{bmatrix} \begin{bmatrix} r_1 & r_2  & t \end{bmatrix} \rightarrow r_1 = K^{-1} h_1,r_2 = K^{-1} h_2,t = K^{-1} h_3\]

对旋转矩阵有

    \[r_1^T r_2 = 0 ,||r_1|| = 1, ||r_2|| = 1 \rightarrow  {K^{-1} h_1}^T K^{-1} h_2 = {h_1}^T K^{-T} K^{-1} h_2 = 0, ||K^{-1} h_1|| = ||K^{-1} h_2|| \leftrightarrow {h_1}^T K^{-T} K^{-1} h_1 = {h_2}^T K^{-T} K^{-1} h_2\]

    \[K^{-T} K^{-1} = \begin{bmatrix} b_1 & & b_2 \\ & b_1 & b_3 \\ b_2 & b_3 & b_4 \end{bmatrix}\]

其中,b_1 = \frac{1}{f^2},b_2 = - \frac{P_x}{f^2},b_3 = \frac{P_y}{f^2},b_4 = \frac{P_x^2+P_y^2+f^2}{f^2}
h_1^T B h_2 = 0,h_1^T B h_1 = h_2^T B h_2
每幅图像产生两个2个方程,因此,求解需要2幅图像.
三角化:
给定: 标定的两个或者多个摄像机,求解三维空间的点的坐标.

发表评论

电子邮件地址不会被公开。 必填项已用*标注