第三章 单视图测量
一、2D变换
1. 等距变换(欧式变换)
\[\left[ {\begin{array}{*{20}{c}}
{x'} \\
{y'} \\
1
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
R&t \\
0&1
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
x \\
y \\
1
\end{array}} \right] = {H_e}\left[ {\begin{array}{*{20}{c}}
x \\
y \\
1
\end{array}} \right]\]
特点:
- 不变量:长度、面积
- 3个自由度
- 适合描述刚性物体的运动
注意:
旋转矩阵\(R\)的行列式为1,且\({{R}^{-1}}={{R}^{T}}\)。
2. 相似变换
\[\left[ {\begin{array}{*{20}{c}}
{x'} \\
{y'} \\
1
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{SR}&t \\
0&1
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
x \\
y \\
1
\end{array}} \right] = {H_s}\left[ {\begin{array}{*{20}{c}}
x \\
y \\
1
\end{array}} \right]\]
特点:
- 不变量:长度的比值、角度
- 4个自由度
3. 仿射变换
\[\left[ {\begin{array}{*{20}{c}}
{x'} \\
{y'} \\
1
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
A&t \\
0&1
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
x \\
y \\
1
\end{array}} \right] = {H_a}\left[ {\begin{array}{*{20}{c}}
x \\
y \\
1
\end{array}} \right]\]
其中,\(A\)是任意2×2矩阵。
特点:
- 不变量:平行线、面积的比值
- 不能保持原有线之间的夹角关系
- 6个自由度
4. 射影变换(透视变换)
\[\left[ {\begin{array}{*{20}{c}}
{x'} \\
{y'} \\
1
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
A&t \\
v&1
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
x \\
y \\
1
\end{array}} \right] = {H_p}\left[ {\begin{array}{*{20}{c}}
x \\
y \\
1
\end{array}} \right]\]
其中,\(A\)是任意2×2矩阵,\(v\)是任意1×2矩阵。
特点:
- 不变量:共线性、四共线点的交比
- 不能保持原有平行关系
- 8个自由度
5. 结论
- 欧式变换是相似变换的特例
- 相似变换是仿射变换的特例
- 仿射变换是透视变换的特例
二、影消点与影消线
1. 平面上的线
\[ax+by+c=0\Leftrightarrow l=\left[ \begin{matrix} a \\ b \\ c \\\end{matrix} \right]\]
如果\(x=\left[ \begin{matrix} {{x}_{1}} \\ {{x}_{2}} \\\end{matrix} \right]\in l\),则\(\left[ \begin{matrix} {{x}_{1}} & {{x}_{2}} & 1 \\\end{matrix} \right]\left[ \begin{matrix} a \\ b \\ c \\\end{matrix} \right]=0\Leftrightarrow \left[ \begin{matrix} a & b & c \\\end{matrix} \right]\left[ \begin{matrix} {{x}_{1}} \\ {{x}_{2}} \\ 1 \\\end{matrix} \right]=0\)
2. 直线的交点
\(x=l\times {l}'\)
3. 2D无穷远点
两条平行线的交点:\[l\times {l}'\propto \left[ \begin{matrix} b \\ -a \\ 0 \\\end{matrix} \right]={{x}_{\infty }}\]
4. 无穷远直线\({{l}_{\infty }}\)
无穷远直线\({{l}_{\infty }}=\left[ \begin{matrix} 0 \\ 0 \\ 1 \\\end{matrix} \right]\)
无穷远线是无穷远点的几何,也是平面上线的“方向”的集合。
5. 无穷远点的透视变换与仿射变换
无穷远点经透视变换不是无穷远点
无穷远点经仿射变换仍是无穷远点
6. 无穷远线的透视变换与仿射变换
无穷远线经透视变换不是无穷远线
无穷远线经仿射变换仍是无穷远线
7. 空间中的面和直线
空间中的面:\(ax+by+cz+d=0\Leftrightarrow \Pi =\left[ \begin{matrix} a \\ b \\ c \\ d \\\end{matrix} \right]\)
如果\(x=\left[ \begin{matrix} {{x}_{1}} \\ {{x}_{2}} \\ {{x}_{3}} \\\end{matrix} \right]\in \Pi \),则\(\left[ \begin{matrix} {{x}_{1}} & {{x}_{2}} & {{x}_{3}} & 1 \\\end{matrix} \right]\left[ \begin{matrix} a \\ b \\ c \\ d \\\end{matrix} \right]=0\Leftrightarrow \left[ \begin{matrix} a & b & c & d \\\end{matrix} \right]\left[ \begin{matrix} {{x}_{1}} \\ {{x}_{2}} \\ {{x}_{3}} \\ 1 \\\end{matrix} \right]=0\)
空间中的直线定义为两平面的交线。一般用\(\mathbf{d}={{\left[ \begin{matrix} a & b & c \\\end{matrix} \right]}^{\text{T}}}\)来描述直线的方向。
8. 三维空间中的无穷远点(空间中平行线的交点)
空间中平行线的交点\({{x}_{\infty }}=\left[ \begin{matrix} a \\ b \\ c \\ 0 \\\end{matrix} \right]\)
9. 影消点
定义:无穷远点在图像平面上的投影点
设空间中直线方向为\(d={{\left[ \begin{matrix} a & b & c \\\end{matrix} \right]}^{\text{T}}}\)
则影消点\(v\)和直线方向\(d\)满足以下关系:\[v=Kd\Leftrightarrow d=\frac{{{K}^{-1}}v}{\left\| {{K}^{-1}}v \right\|}\]
10. 影消线(视平线)
影消线是空间上同一平面的多个无穷远点经透视变换得到的影消点的集合,也是空间上无穷远线经透视变换得到的平面直线。
影消线和无穷远直线的关系:\[{{l}_{horiz}}={{H}_{P}}^{-T}{{l}_{\infty }}\]
影消线和平面法向量之间的关系:\[n={{K}^{T}}{{l}_{horiz}}\]
11. 无穷远平面
平行平面在无穷远处相交于一条公共线,称为无穷远直线。
两条或多条无穷远直线的集合定义为无穷远平面\({{\Pi }_{\infty }}\)
定义无穷远平面\({{\Pi }_{\infty }}=\left[ \begin{matrix} 0 \\ 0 \\ 0 \\ 1 \\\end{matrix} \right]\)
12. 两组平行线的夹角和影消点的关系
由影消点\(v\)和直线方向\(d\)的关系\(d=\frac{{{K}^{-1}}v}{\left\| {{K}^{-1}}v \right\|}\),
可以得到空间中两组平行线的夹角\(\theta \)和影消点\({{v}_{1}}\), \({{v}_{2}}\)的关系:
\[\cos \theta =\frac{{{d}_{1}}\cdot {{d}_{2}}}{\left| {{d}_{1}} \right|\left| {{d}_{2}} \right|}=\frac{{{v}_{1}}^{T}\omega {{v}_{2}}}{\sqrt{{{v}_{1}}^{T}\omega {{v}_{1}}}\sqrt{{{v}_{2}}^{T}\omega {{v}_{2}}}}\]
其中,\(\omega ={{(K{{K}^{T}})}^{-1}}\)
特别地,如果\(\theta =90{}^\circ \),则可以得出:\[{{v}_{1}}^{T}\omega {{v}_{2}}\text{=0}\]
此外,\(\omega\)有以下性质:
- \(\omega ={{(K{{K}^{T}})}^{-1}}\text{=}\left[ \begin{matrix} {{\omega }_{1}} & {{\omega }_{2}} & {{\omega }_{4}} \\{{\omega }_{2}} & {{\omega }_{3}} & {{\omega }_{5}} \\{{\omega }_{4}} & {{\omega }_{5}} & {{\omega }_{6}} \\\end{matrix} \right]\)是对称阵
- 当\({{\omega }_{2}}=0\)时,表示零倾斜
- 当\({{\omega }_{2}}=0,{{\omega }_{1}}={{\omega }_{3}}\)时,表示方形像素
- \(\omega\)有5个自由度(\(K\)有5个自由度)
应用:
- 估计相机参数(单视图标定)
- 恢复三维场景结构
三、单视图重构
1. 单视图标定
选取三个互相垂直的平面,分别找出三个平面上的影消点。可以列出下面三个方程:\[\left\{ \begin{matrix} {{v}_{1}}^{T}\omega {{v}_{2}}\text{=0} \\ {{v}_{1}}^{T}\omega {{v}_{3}}\text{=0} \\ {{v}_{2}}^{T}\omega {{v}_{3}}\text{=0} \\\end{matrix} \right.\]
\(\omega\)有5个自由度,但只能列出三个方程。若假定零倾斜、正方形像素,则\({{\omega }_{2}}=0,{{\omega }_{1}}={{\omega }_{3}}\),即只剩下三个自由度。这样就可以根据三个影消点求解出相机内参数矩阵。
2. 单视图重构
可以由两个影消点画出这一平面的影消线,根据之前求出的内参数矩阵/(K/),即可得到这一平面的法向量:\[n={{K}^{T}}{{l}_{horiz}}\]
同理可以求出另外两个平面的法向量。根据三个平面的方程,即可重构出画面。
注意:
- 场景的实际比例无法恢复;
- 需要手动选择影消点和影消线;
- 需要场景的先验信息,如点对应的关系,线、面几何信息等等。
- 单幅视图2D到3D的映射具有多义性