(九)单应性矩阵


欢迎访问个人网络日志🌹🌹知行空间🌹🌹


单应矩阵(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来估计相机的运动。

设点P所处的固定平面的方程为:
n T P + d = 0 n^TP + d = 0 nTP+d=0
上式参考空间中平面的方程:
A ( x − x 0 ) + B ( y − y 0 ) + C ( z − z 0 ) = 0 A(x-x_0) + B(y-y_0) + C(z-z_0) = 0 A(xx0)+B(yy0)+C(zz0)=0
化简为:
− n T P d = 1 -\frac{n^TP}{d} = 1 dnTP=1

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} uv1susvs
≃ \simeq 表示齐次坐标这种尺度相等的关系。

则方程
p = s K ( R P + t ⃗ ) p = sK(RP + \vec{t}) p=sK(RP+t )
可写成
p 2 ≃ K ( R P + t ⃗ ⋅ ( − n T P d ) ) p_2 \simeq K(RP + \vec{t}\cdot(-\frac{n^TP}{d})) p2K(RP+t (dnTP))
t k t_k tk时刻的相机坐标系当做世界坐标系,则R表示 t k t_k tk t k + 1 t_{k+1} tk+1时刻相机的姿态变化, t ⃗ \vec{t} t 表示 t k t_k tk t k + 1 t_{k+1} tk+1时刻相机的平移变化,上述方程可写成:
p 2 ≃ K ( R − t ⃗ n T d ) K − 1 p 1 p_2 \simeq K(R-\frac{\vec{t}n^T}{d})K^{-1}p_1 p2K(Rdt nT)K1p1
H = K ( R − t ⃗ n T d ) K − 1 H=K(R-\frac{\vec{t}n^T}{d})K^{-1} H=K(Rdt nT)K1,则上式写为:
p 2 = s H p 1 p_2 = s H p_1 p2=sHp1
p 2 p_2 p2 p 1 p_1 p1是齐次坐标,具有尺度不变性,s尺度缩放因子,而齐次坐标的最后一维要么为0要么为1,因此s最后都会被约掉,因此,
p 2 ≃ H p 1 p_2 \simeq H p_1 p2Hp1
H即为单应矩阵。
[ u 2 v 2 1 ] ≃ [ h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 ] [ u 1 v 1 1 ] \begin{bmatrix} u_2\\ v_2\\ 1 \end{bmatrix} \simeq \begin{bmatrix} h_1 & h_2 & h_3 \\ h_4 & h_5 & h_6 \\ h_7 & h_8 & h_9 \end{bmatrix}\begin{bmatrix} u_1 \\ v_1 \\ 1 \end{bmatrix} u2v21h1h4h7h2h5h8h3h6h9u1v11

这里还是 ≃ \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+h3h7u1u2h8v1u2=u2h4u1+h5v1+h6h7u1v2h8v1v2=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} u110u120u130u140v110v120v130v140101010100u110u120u130u140v110v120v130v1401010101u11u21u11v21u12u22u12v22u13u23u13v23u14u24u14v24v11u21v11v21v12u22v12v22v13u23v13v23v14u24v14v24h1h2h3h4h5h6h7h8=u21v21u22v22u23v23u24v24

通过求解上述方程组,可以恢复 H H H,这种方法称为直接线性变换法Direct Linear Transform(DLT)。求得H后再对其进行分解可以求得 R R R t ⃗ \vec{t} t .

参考资料


欢迎访问个人网络日志🌹🌹知行空间🌹🌹


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值