大家好,欢迎来到IT知识分享网。
欢迎访问个人网络日志🌹🌹知行空间🌹🌹
单应矩阵(homography matrix
)等同于透视变换中使用的矩阵。
透视变换描述了两个平面之间的映射关系。理解之所以称为单应矩阵,是因为两个平面之间的关系是确定的,只能通过唯一的矩阵来表示这个变换,故称之为单应矩阵。
单应矩阵通常描述处于共同平面上的一些点在两张图像间的变换关系。对于空间中固定平面上的点P(如墙面),对于运动的相机,可根据P在 t k , t k + 1 t_k,t_{k+1} tk,tk+1时刻图像中的位置 p 1 , p 2 p_1,p_2 p1,p2来估计相机的运动。
设 K K K是相机的内参矩阵, R R R和相机外参旋转矩阵, t ⃗ \vec{t} t是相机外参平移向量,则根据相机模型的推导,空间点P到像素坐标系的映射可写为:
p = s K ( R P + t ⃗ ) p = sK(RP + \vec{t}) p=sK(RP+t)
使用齐次坐标表示像素坐标,因齐次坐标最后一维为0或1,则带尺度因子的 s p sp sp与 p p p是相等的,
[ u v 1 ] ≃ [ s u s v s ] \begin{bmatrix} u\\ v\\ 1 \end{bmatrix} \simeq \begin{bmatrix} su\\ sv\\ s \end{bmatrix} ⎣⎡uv1⎦⎤≃⎣⎡susvs⎦⎤
≃ \simeq ≃表示齐次坐标这种尺度相等的关系。
这里还是 ≃ \simeq ≃而非=
,因此对矩阵 H H H乘以任意的缩放因子 s s s上式仍然成立。假设取 s = 1 h 9 s = \frac{1}{h_9} s=h91则矩阵H可以重新写成:
H = [ h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 1 ] H = \begin{bmatrix} h_1 & h_2 & h_3 \\ h_4 & h_5 & h_6 \\ h_7 & h_8 & 1 \end{bmatrix} H=⎣⎡h1h4h7h2h5h8h3h61⎦⎤
因此可令 h 9 = 1 h_9=1 h9=1,单应矩阵只包含8个自由度。
{ u 2 = h 1 u 1 + h 2 v 1 + h 3 h 7 u 1 + h 8 v 1 + 1 v 2 = h 4 u 1 + h 5 v 1 + h 6 h 7 u 1 + h 8 v 1 + 1 \left\{\begin{matrix} u_2=\frac{h_1u_1+h_2v_1+h_3}{h_7u_1+h_8v_1+1}\\ v_2=\frac{h_4u_1+h_5v_1+h_6}{h_7u_1+h_8v_1+1} \end{matrix}\right. {
u2=h7u1+h8v1+1h1u1+h2v1+h3v2=h7u1+h8v1+1h4u1+h5v1+h6
整理之后可以写为:
{ h 1 u 1 + h 2 v 1 + h 3 − h 7 u 1 u 2 − h 8 v 1 u 2 = u 2 h 4 u 1 + h 5 v 1 + h 6 − h 7 u 1 v 2 − h 8 v 1 v 2 = v 2 \left\{\begin{matrix} h_1u_1+h_2v_1+h_3 – h_7u_1u_2 – h_8v_1u_2 = u_2\\ h_4u_1+h_5v_1+h_6 – h_7u_1v_2 – h_8v_1v_2 = v_2 \end{matrix}\right. {
h1u1+h2v1+h3−h7u1u2−h8v1u2=u2h4u1+h5v1+h6−h7u1v2−h8v1v2=v2
由以上推理过程,1组匹配点可以得到2个方程,因此自由度为8的单应矩阵H可以通过4组匹配点(不能有3点共线)得到8个方程来求得,方程组可写为:
[ u 1 1 v 1 1 1 0 0 0 − u 1 1 u 2 1 − v 1 1 u 2 1 0 0 0 u 1 1 v 1 1 1 − u 1 1 v 2 1 − v 1 1 v 2 1 u 1 2 v 1 2 1 0 0 0 − u 1 2 u 2 2 − v 1 2 u 2 2 0 0 0 u 1 2 v 1 2 1 − u 1 2 v 2 2 − v 1 2 v 2 2 u 1 3 v 1 3 1 0 0 0 − u 1 3 u 2 3 − v 1 3 u 2 3 0 0 0 u 1 3 v 1 3 1 − u 1 3 v 2 3 − v 1 3 v 2 3 u 1 4 v 1 4 1 0 0 0 − u 1 4 u 2 4 − v 1 4 u 2 4 0 0 0 u 1 4 v 1 4 1 − u 1 4 v 2 4 − v 1 4 v 2 4 ] [ h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 ] = [ u 2 1 v 2 1 u 2 2 v 2 2 u 2 3 v 2 3 u 2 4 v 2 4 ] \begin{bmatrix} u^1_1 & v^1_1 & 1 & 0 & 0 & 0 & -u^1_1u^1_2 & -v^1_1u^1_2\\ 0 & 0 & 0 & u^1_1 & v^1_1 & 1 & -u^1_1v^1_2 & -v^1_1v^1_2\\ u^2_1 & v^2_1 & 1 & 0 & 0 & 0 & -u^2_1u^2_2 & -v^2_1u^2_2\\ 0 & 0 & 0 & u^2_1 & v^2_1 & 1 & -u^2_1v^2_2 & -v^2_1v^2_2\\ u^3_1 & v^3_1 & 1 & 0 & 0 & 0 & -u^3_1u^3_2 & -v^3_1u^3_2\\ 0 & 0 & 0 & u^3_1 & v^3_1 & 1 & -u^3_1v^3_2 & -v^3_1v^3_2\\ u^4_1 & v^4_1 & 1 & 0 & 0 & 0 & -u^4_1u^4_2 & -v^4_1u^4_2\\ 0 & 0 & 0 & u^4_1 & v^4_1 & 1 & -u^4_1v^4_2 & -v^4_1v^4_2\\ \end{bmatrix}\begin{bmatrix} h_1\\ h_2\\ h_3\\ h_4\\ h_5\\ h_6\\ h_7\\ h_8 \end{bmatrix}=\begin{bmatrix} u_2^1\\ v_2^1\\ u_2^2\\ v_2^2\\ u_2^3\\ v_2^3\\ u_2^4\\ v_2^4 \end{bmatrix} ⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡u110u120u130u140v110v120v130v140101010100u110u120u130u140v110v120v130v1401010101−u11u21−u11v21−u12u22−u12v22−u13u23−u13v23−u14u24−u14v24−v11u21−v11v21−v12u22−v12v22−v13u23−v13v23−v14u24−v14v24⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡h1h2h3h4h5h6h7h8⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡u21v21u22v22u23v23u24v24⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
通过求解上述方程组,可以恢复 H H H,这种方法称为直接线性变换法Direct Linear Transform
(DLT)。求得H
后再对其进行分解可以求得 R R R和 t ⃗ \vec{t} t.
参考资料
- 1.What’s the difference between a perspective transform, homography matrix, essential matrix, and a fundamental matrix?
- 2.《视觉SLAM十四讲》p167
欢迎访问个人网络日志🌹🌹知行空间🌹🌹
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/134269.html