前言
上篇记录了本质矩阵,基础矩阵,单应矩阵的求解。
本篇学习3D-2D点的匹配方法PnP(Perspective-n-Point),DLT,P3P。
PnP
已知某相邻帧之间匹配点的2D和3D坐标(世界坐标),求当前的位姿,称为PnP。
在这里,已知匹配点的3D坐标往往是上一帧的点坐标,2D坐标是当前帧与上一帧匹配到的点坐标。
DLT
直接线性变换(DLT)是直接通过相机运动模型求解。假设P是3D点,P’是2D点对应在归一化坐标平面的3D点
P ′ = K − 1 p s P ′ = [ R , t ] P s [ u v 1 ] = [ t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10 t 11 t 12 ] [ X Y Z 1 ] s = t 9 X + t 10 Y + t 11 Z + t 12 u = t 1 X + t 2 Y + t 3 Z + t 4 t 9 X + t 10 Y + t 11 Z + t 12 v = t 5 X + t 6 Y + t 7 Z + t 8 t 9 X + t 10 Y + t 11 Z + t 12 t 1 X + t 2 Y + t 3 Z + t 4 − u ( t 9 X + t 10 Y + t 11 Z + t 12 ) = 0 t 5 X + t 6 Y + t 7 Z + t 8 − v ( t 9 X + t 10 Y + t 11 Z + t 12 ) = 0 P' = K^{-1}p \\ sP'=[R,t]P \\ \quad \\ s\begin{bmatrix} u \\ v \\ 1 \\ \end{bmatrix} = \begin{bmatrix} t_1 & t_2 & t_3 & t_4 \\ t_5 & t_6 & t_7 & t_8 \\ t_9 & t_{10} & t_{11} & t_{12} \\ \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \\ 1 \\ \end{bmatrix} \\ s = t_9X + t_{10}Y + t_{11}Z + t_{12} \\ \quad \\ u = \frac {t_1X+t_2Y+t_3Z+t_4}{t_9X+t_{10}Y+t_{11}Z+t_{12}} \\ \quad \\ v = \frac {t_5X+t_6Y+t_7Z+t_8}{t_9X+t_{10}Y+t_{11}Z+t_{12}} \\ \quad \\ t_1X+t_2Y+t_3Z+t_4 - u(t_9X+t_{10}Y+t_{11}Z+t_{12}) = 0 \\ t_5X+t_6Y+t_7Z+t_8 - v(t_9X+t_{10}Y+t_{11}Z+t_{12}) = 0 \\ P′=K−1psP′=[R,t]Ps⎣⎡uv1⎦⎤=⎣⎡t1t5t9t2t6t10t3t7t11t4t8