关于两视图相机几何关系
什么是两视图相机几何关系?
想象一下,你用手机从两个不同的角度拍了同一个房间的两张照片。第一张从正面拍,第二张从侧面拍。现在,你想知道这两张照片之间有什么联系:相机在第二个角度时相对于第一个角度移动了多少?转了多少角度?房间里的物体在3D空间中是怎么对应的?这就是“两视图相机几何关系”(two-view camera geometry)的核心问题。
简单来说,“确定两视图相机几何关系”就是通过分析两张从不同视角拍摄的同一场景的图像,来计算出两个相机(或同一个相机在不同位置)之间的相对位置和方向。这个过程涉及数学模型,帮助我们理解图像中的点如何在3D世界中对应起来。它是计算机视觉(比如机器人导航、VR/AR、3D重建)的基础。
1. 基础概念:相机、图像和3D世界
-
相机模型:相机就像人眼,但它把3D世界投影到2D图像上。最常见的模型是“针孔相机模型”(pinhole camera model)。想象一个黑箱子,前端有个小孔,光线通过小孔投射到后端的胶片上,形成倒立的图像。
- 一个点在3D世界中的坐标记为 P=(X,Y,Z)P = (X, Y, Z)P=(X,Y,Z)(大写表示世界坐标)。
- 在图像上的投影点记为 p=(u,v)p = (u, v)p=(u,v)(小写表示图像坐标,单位是像素)。
- 相机有“内在参数”(intrinsic parameters,比如焦距、图像中心),用矩阵 KKK 表示;还有“外在参数”(extrinsic parameters,比如位置和方向),用旋转矩阵 RRR 和平移向量 ttt 表示。
-
两视图设置:我们有两台相机(或一台相机移动后拍两次),分别叫相机1和相机2。它们拍摄同一个3D场景,但视角不同。
- 相机1的位姿:假设它是参考,R1=IR_1 = IR1=I(单位矩阵,表示无旋转),t1=0t_1 = 0t1=0(无平移)。
- 相机2的位姿:相对相机1,有旋转 RRR 和平移 ttt。
问题来了:只给你两张2D图像,怎么知道相机2相对于相机1的 RRR 和 ttt?这就是“确定相机几何关系”的任务。
2. 为什么图像中的点会“对应”?
在两张图像中,同一个3D点 PPP 会投影到图像1的 p1p_1p1 和图像2的 p2p_2p2。这些 p1p_1p1 和 p2p_2p2 叫“对应点”(corresponding points)。
但对应点不是随意匹配的!它们受“对极约束”(epipolar constraint)限制。这就像物理定律:光线必须直线传播。
- 比喻:想象你从两个角度看一根棍子。棍子在第一个视角的投影是一条线段,在第二个视角也是。但如果你随意在两张图上挑点匹配,很多是错的。只有满足几何关系的点才是正确的对应。
确定几何关系就是找出这个“约束”,从而高效找到对应点,并恢复相机位姿。
3. 核心数学:对极几何(Epipolar Geometry)
对极几何是两视图几何的灵魂。它描述了对应点之间的关系。
-
关键元素:
- 对极点(Epipole):相机1的光心在图像2上的投影,叫 e2e_2e2;反之叫 e1e_1e1。光心是相机“眼睛”的位置。
- 比喻:对极点就像“视差的中心”。所有对应线的交点。
- 对极线(Epipolar Line):对于图像1中的点 p1p_1p1,它的对应点 p2p_2p2 必须躺在图像2上的一条直线上。这条线叫对极线。
- 为什么?因为3D点 PPP、相机1光心、相机2光心形成一个平面(叫对极平面)。投影到图像2上就是一条线。
- 好处:匹配对应点时,不用全图像搜索,只搜对极线,效率高!
- 对极点(Epipole):相机1的光心在图像2上的投影,叫 e2e_2e2;反之叫 e1e_1e1。光心是相机“眼睛”的位置。
-
数学公式:
对应点 p1p_1p1 和 p2p_2p2 满足对极约束:
p2TFp1=0 p_2^T F p_1 = 0 p2TFp1=0
这里:- p1p_1p1 和 p2p_2p2 是齐次坐标(homogeneous coordinates),比如 p1=[u1,v1,1]Tp_1 = [u_1, v_1, 1]^Tp1=[u1,v1,1]T。
- FFF 是基础矩阵(Fundamental Matrix),一个3x3矩阵,编码了相机间的几何关系。
- T^TT 表示转置。
基础矩阵 FFF 是对极几何的“身份证”。它不依赖3D结构,只靠对应点计算。
- 本质矩阵(Essential Matrix):
如果相机内在参数 KKK 已知(比如通过标定),我们用本质矩阵 EEE:
E=K2TFK1 E = K_2^T F K_1 E=K2TFK1
本质矩阵更“本质”,因为它直接编码旋转 RRR 和平移 ttt:
E=[t]×R E = [t]_\times R E=[t]×R
这里:- [t]×[t]_\times[t]× 是 ttt 的反对称矩阵(skew-symmetric matrix),表示叉乘:
[t]×=(0−tztytz0−tx−tytx0) [t]_\times = \begin{pmatrix} 0 & -t_z & t_y \\ t_z & 0 & -t_x \\ -t_y & t_x & 0 \end{pmatrix} [t]×=0tz−ty−tz0txty−tx0 - EEE 也是3x3矩阵,对应点满足:
q2TEq1=0 q_2^T E q_1 = 0 q2TEq1=0
其中 q1=K1−1p1q_1 = K_1^{-1} p_1q1=K1−1p1,q2=K2−1p2q_2 = K_2^{-1} p_2q2=K2−1p2(归一化坐标)。
- [t]×[t]_\times[t]× 是 ttt 的反对称矩阵(skew-symmetric matrix),表示叉乘:
本质矩阵 EEE 可以分解成 RRR 和 ttt(有4种可能组合,需要额外检查)。
4. 如何确定相机几何关系?(具体步骤)
确定关系就是估计 FFF 或 EEE,然后从中提取 RRR 和 ttt。最经典的方法是“8点算法”(8-point algorithm)。
-
步骤:
-
找到对应点:在两张图像中手动或自动(用SIFT、ORB等特征匹配)找至少8对对应点 (p1i,p2i)(p_1^i, p_2^i)(p1i,p2i),i=1i=1i=1到888。
- 为什么至少8?因为 FFF 有8个自由度(3x3矩阵减去尺度因子和秩约束)。
-
建立方程组:每个对应点给一个方程 p2iTFp1i=0p_2^{iT} F p_1^i = 0p2iTFp1i=0。
- 展开成:
(u2u1u2v1u2v2u1v2v1v2u1v11)f⃗=0 \begin{pmatrix} u_2 u_1 & u_2 v_1 & u_2 & v_2 u_1 & v_2 v_1 & v_2 & u_1 & v_1 & 1 \end{pmatrix} \vec{f} = 0 (u2u1u2v1u2v2u1v2v1v2u1v11)f=0
其中 f⃗\vec{f}f 是 FFF 的向量形式(9个元素)。 - 用8个点,得到8x9矩阵 AAA,求 Af⃗=0A \vec{f} = 0Af=0 的解(奇异值分解SVD)。
- 展开成:
-
强制秩约束:FFF 的秩必须是2(因为对极几何)。用SVD分解 F=UΣVTF = U \Sigma V^TF=UΣVT,把最小奇异值设为0,重构 F′F'F′。
-
如果有内在参数:计算 E=K2TFK1E = K_2^T F K_1E=K2TFK1。
-
分解本质矩阵:用SVD E=UΣVTE = U \Sigma V^TE=UΣVT,提取可能的 RRR 和 ttt。
- 公式:
R=UWVT或UWTVT R = U W V^T \quad 或 \quad U W^T V^T R=UWVT或UWTVT
t=U(:,3)(第三列) t = U(:,3) \quad (第三列) t=U(:,3)(第三列)
其中 W=(0−10100001)W = \begin{pmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{pmatrix}W=010−100001。 - 检查哪种组合使3D点在相机前(正深度)。
- 公式:
-
-
其他方法:如果对应点少,用5点算法(更复杂,涉及多项式求解)。实际中,用RANSAC处理噪声点。
-
挑战:噪声、退化情况(比如平面场景,FFF 不唯一)。所以常结合其他传感器(如IMU)。
5. 为什么要确定两视图相机几何关系?
现在,说说“为什么”。这不是纯理论,它有巨大实用价值!
-
核心原因:从2D图像恢复3D世界是计算机视觉的“圣杯”。单张图像只能猜3D(有歧义),但两张图像通过几何关系,能精确计算相机运动和场景深度。
- 比喻:单眼看世界是扁平的(2D),双眼(立体视觉)能感知深度。人类用双眼视差判断距离,计算机用两视图几何模拟这个。
-
具体应用:
-
3D重建:比如谷歌地球或电影特效。从多张照片建3D模型。先确定相机位姿,再三角测量3D点。
- 公式:对于对应点,3D点 PPP 满足 p1=K1[I∣0]Pp_1 = K_1 [I | 0] Pp1=K1[I∣0]P 和 p2=K2[R∣t]Pp_2 = K_2 [R | t] Pp2=K2[R∣t]P。解线性方程得 PPP。
-
运动估计(Visual Odometry):机器人或自动驾驶车用连续图像估算自身运动。确定几何关系就是算 RRR 和 ttt,累积成轨迹。
-
立体视觉(Stereo Vision):双目相机计算深度图。用于AR眼镜(叠加虚拟物体)或医疗成像。
-
图像匹配加速:对极线约束把2D搜索降到1D,节省计算(从百万像素搜到几百)。
-
SLAM(Simultaneous Localization and Mapping):无人机探索未知环境,同时建图和定位。两视图几何是起点。
-
其他:照片拼接(全景图)、物体跟踪、增强现实(Pokemon GO用类似技术)。
-
-
为什么重要性越来越大?随着AI和手机相机普及,处理海量图像需要高效几何模型。忽略它,匹配错误率高,3D重建失败。
总结:确定两视图相机几何关系就像解谜游戏的“线索系统”——它连接两张“拼图”,揭示隐藏的3D秘密。数学上靠 FFF 或 EEE 矩阵,对现实世界中的三维视觉进行一个不仅仅是定性也是定量的描述.