1 约定
这里约定对于一个3D点位置为\(\mathbf{p}\),其坐标为(\(x,y,z\)),则\(\mathbf{p}\)采用如下齐次坐标表示
(1-1)
$$
\mathbf{p}'=\begin{bmatrix}
\mathbf{p}
\\
1
\end{bmatrix}=\begin{bmatrix}
x
\\
y
\\
z
\\
1
\end{bmatrix}
$$
对于相机内参\(K\),约定\(K'\)其为如下4\(\times\)4齐次矩阵
(1-2)
$$
K'=\begin{bmatrix}
K & \mathbf{0}
\\
\mathbf{0}^T & 1
\end{bmatrix}=\begin{bmatrix}
K_{00} & K_{01} & K_{02} & 0
\\
K_{10} & K_{11} & K_{12} & 0
\\
K_{20} & K_{21} & K_{22} & 0
\\
0 & 0 & 0 & 1
\end{bmatrix}
$$
对于相机位姿\(T\),这里约定的表示为世界坐标到相机坐标的变换,其满足如下定义
(1-3)
$$
T=\begin{bmatrix}
R & \mathbf{t}
\\
\mathbf{0}^T & 1
\end{bmatrix}
$$
对于相机平面上的像素位置(\(u,v\)),深度为\(s\) ,用点 \(\mathbf{g}\)表示,其坐标形式为
$$
\mathbf{g} = \begin{bmatrix}
u
\\
v
\\
1
\end{bmatrix}
$$
对于元素个数为1的向量,其表示形式与数值等价。
2 理论
2.1 问题
在空间中有个3D点 \(\mathbf{p}\)在相机1(位姿为\(T_1\))的里的像素位置为\(\mathbf{g}_1\)以及深度值为\(s_1\) ,\(\mathbf{p}\)在相机2(位姿为\(T_2\))的里的像素位置为\(\mathbf{g}_2\)以及深度值为\(s_2\)。现在想建立相机1与相机2之间的相对测量信息。
2.2 相对测量
两个相机位姿间的相对测量不应该随着同一个刚体变换而改变,根据(1-3)的约定,这里两个相机的相对测量\(T\)使用如下定义
(2-1)
$$
T = T_1T_2^{-1}
$$
注意:这里的相对测量是定义在整体刚体变换情况下,相对测量不变的基础上。也就是说,不管怎么移动,他们之间的相对测量值不再改变。
2.3 已知推导
根据2.1的信息有
(2-2)
$$
\begin{cases}
s_1\begin{bmatrix}
\mathbf{g}_1
\\
1/s_1
\end{bmatrix}=K_1'T_1\mathbf{p}'
\\
\\
s_2\begin{bmatrix}
\mathbf{g}_2
\\
1/s_2
\end{bmatrix}=K_2'T_2\mathbf{p}'
\end{cases}
\Rightarrow
s_1K_1'^{-1}\begin{bmatrix}
\mathbf{g}_1
\\
1/s_1
\end{bmatrix}=T_1T_2^{-1}(s_2K_2'^{-1}\begin{bmatrix}
\mathbf{g}_2
\\
1/s_1
\end{bmatrix})=T(s_2K_2'^{-1}\begin{bmatrix}
\mathbf{g}_2
\\
1/s_1
\end{bmatrix})
$$
展开上面公式有
(2-3)
$$
s_1K_1^{-1}\mathbf{g}_1=R(s_2K_2^{-1}\mathbf{g}_2)+\mathbf{t}
$$
上面公式中的\(R\)与\(t\)来自\(T\)。进一步,这里设如下中间变量
(2-4)
$$
\mathbf{a}_1=K_1^{-1}\mathbf{g}_1
\\
\mathbf{a}_2=K_2^{-1}\mathbf{g}_2
$$
将(2-4)带入公式(2-3)有
(2-5)
$$
\begin{aligned}
s_1\mathbf{a}_1&=s_2R\mathbf{a}_2+\mathbf{t}
\\
\Downarrow
\\
s_1 \mathbf{t}^\wedge\mathbf{a}_1&=s_2 \mathbf{t}^\wedge R \mathbf{a}_2
\\
\Downarrow
\\
s_1\mathbf{a}_1^T\mathbf{t}^\wedge\mathbf{a}_1&=s_2\mathbf{a}_1^T\mathbf{t}^\wedge R \mathbf{a}_2
\end{aligned}
$$
因为\(\mathbf{a}_1^T\mathbf{t}^\wedge\mathbf{a}_1 = 0\),因此代入(2-5)可以得到如下表达式
(2-6)
$$
\mathbf{a}_1^T\mathbf{t}^\wedge R \mathbf{a}_2 = 0
$$
因此,最终公式(2-6)就是我们导出的2D匹配点间相机间相关测量约束关系。
需要特别注意的是,(2-6)公式存在缺陷,如果使用这个约束作为优化的边,需要谨慎。
仔细观察(2-6)可以发现,当\(\mathbf{t}=\mathbf{0}\)时,\(R\)取任意值,均满足上面的表达式,很明显,这种满足无穷组特解的模型对优化有一定误导作用。针对这种情况,需要增加有意义的约束,这里设\(\mathbf{t}=\mathbf{0}\),代入公式(2-5)可得到如下形式
(2-7)
$$
\mathbf{a}_1^\wedge R \mathbf{a}_2=\mathbf{0}
$$
因此,当\(\mathbf{t}=\mathbf{0}\)时,直接使用公式(2-7)作为约束。
2.4 解的限定
虽然(2-6)与(2-7)给出了限定的约束条件,但这时使用的边依然存在多解的情况,而这些多解中有些并不满足实际的条件。在实际使用中,只有深度\(s_1,s_2\)为正数,才符合我们预期,因此可以将这个判定条件,进一步加入约束。这里设置如下变量
(2-8) $$
\begin{aligned}
\mathbf{b} &=\mathbf{a}_1
\\
\mathbf{c} &=R\mathbf{a}_2
\end{aligned} $$
根据公式(2-5),在\(||\mathbf{t}||_2^2 > 0\)时有
(2-9)
$$
s_1\mathbf{b}=s_2\mathbf{c}+\mathbf{t}
$$
求解(2-9)有
(2-10)$$
\begin{cases}
s_1&=\dfrac{t_2c_0-t_0c_2}{b_2c_0-b_0c_2}=\dfrac{t_2c_1-t_1c_2}{b_2c_1-b_1c_2}=\dfrac{t_1c_0-t_0c_1}{b_1c_0-b_0c_1}
\\
s_2&=-\dfrac{b_0t_2-b_2t_0}{b_0c_2-b_2c_0}=-\dfrac{b_1t_2-b_2t_1}{b_1c_2-b_2c_1}=-\dfrac{b_0t_1-b_1t_0}{b_0c_1-b_1c_0}>0
\end{cases} $$
根据(2-10)可得到如下等效判别式
(2-11)
$$\begin{cases}
(t_2c_0-t_0c_2)(b_2c_0-b_0c_2)>0
\\
(t_2c_1-t_1c_2)(b_2c_1-b_1c_2)>0
\\
(t_1c_0-t_0c_1)(b_1c_0-b_0c_1)>0
\\
(b_0t_2-b_2t_0)(b_0c_2-b_2c_0)<0
\\
(b_1t_2-b_2t_1)(b_1c_2-b_2c_1)<0
\\
(b_0t_1-b_1t_0)(b_0c_1-b_1c_0)<0
\end{cases}$$
对于\(||\mathbf{t}||_2^2 = 0\)时,这时公式(2-5)变成
(2-12)
$$
\begin{aligned}
\dfrac{s_1}{s_2}\mathbf{b}&=\mathbf{c}
\\
&\Downarrow
\\
\dfrac{s_1}{s_2}&=\dfrac{c_0}{b_0}=\dfrac{c_1}{b_1}=\dfrac{c_2}{b_2}>0
\end{aligned}
$$
根据(2-12)可得到如下等效判别式
(2-13)$$\begin{cases}
b_0c_0>0
\\
b_1c_1>0
\\
b_2c_2>0
\end{cases}$$
因此,当使用(2-6)算式约束时,使用(2-11)作为辅助判别约束;当使用(2-7)算式约束时,使用(2-13)作为辅助判别约束。