基础矩阵和本质矩阵

基础矩阵(Fundamental Matrix)和本质矩阵(Essential Matrix)是计算机视觉和立体视觉中极为重要的几何概念,它们分别描述了两个不同视点(通常是双目相机或连续拍摄的两张图像)下的点对之间的几何关系。

基础矩阵(Fundamental Matrix, F)

基础矩阵 F 是一个 3x3 的矩阵,它描述了在两个不同视点下观测到的同名点对之间的约束关系。在理想情况下,一对共轭的图像点(即立体匹配成功找到的对应点对)必须满足如下关系:

p 2 T F p 1 = 0 p_2^T F p_1 = 0 p2TFp1=0

其中 ( p 1 ) ( p_1 ) (p1) 和 ( p 2 ) ( p_2 ) (p2)分别是左、右相机图像上的齐次坐标点。基础矩阵 F 由两幅图像的相对运动参数(旋转和平移)确定,但不包含相机的内参数(如焦距、主点等)。它有七个自由度,因此,至少需要提供至少包含四个对应点对的数据才能唯一确定一个基础矩阵。

本质矩阵(Essential Matrix, E)

本质矩阵 E 是基础矩阵的一个特殊情况,专门用于双目相机或多视图立体视觉的情况。本质矩阵同样是一个 3x3 的矩阵,但它是在知道相机内参数(焦距、主点坐标相同且相机光轴平行)的基础上定义的。本质矩阵描述的是两个相机光心连线(基线)和三维空间中同名点构成的平面之间的关系。

本质矩阵由相对姿态(旋转矩阵 R 和平移向量 t)派生而来,具体形式可以表示为:

E = [ t ] × R E = [t]_\times R E=[t]×R

其中, ( [ t ] × ) ([t]_\times) ([t]×)是一个由平移向量 t 衍生出的反对称矩阵。

本质矩阵有五个自由度,因为它不包含相机的尺度信息,且受到旋转向量 r 的正交约束(r 的长度固定为单位长度)。与基础矩阵相似,通过至少四对匹配点可以估算出本质矩阵,并且通过分解本质矩阵可以得到相对姿态参数 R 和 t。

总的来说,基础矩阵和本质矩阵都是为了关联两个不同视点的图像点,从而为三维重建提供必要的几何信息。在实际应用中,例如在双目立体视觉中,往往先估计本质矩阵,然后进一步分解得到相机的姿态参数。而在不知道相机内参数的情况下,需要先计算基础矩阵,随后通过内参数进行转换以得到本质矩阵。

基础矩阵(Fundamental Matrix)和本质矩阵(Essential Matrix)的求解通常依赖于图像中的特征点匹配。以下是它们各自的求解步骤概述:

基础矩阵的求解

输入:
  1. 两幅图像中互相匹配的特征点对集合,每个点对表示为 (p1, p2),其中 p1p2 分别为第一幅图像和第二幅图像中的二维点,用齐次坐标表示。
求解过程:
  1. 八点法(8-point algorithm):是最常用的求解基础矩阵的方法之一,它需要至少4对匹配点。通过最小化满足基础矩阵约束的误差函数,可以求得基础矩阵的解。

  2. DLS(Direct Linear Solvers)TLS(Total Least Squares) 方法:这两种方法尝试解决因匹配点噪声而导致的问题,寻找最优的基础矩阵。

  3. RANSAC(Random Sample Consensus) 或其他迭代求解方法:对于含有大量错误匹配点的情况,可以使用RANSAC算法来找出最有可能正确的基础矩阵。

具体步骤:
  • 收集足够数量的匹配点对。
  • 应用上述方法之一,解算出满足约束条件的矩阵F。
  • 对于得到的矩阵,验证其秩为2,且满足基础矩阵的约束条件(即对于所有的匹配点对,满足 ( p 2 T F p 1 = 0 ) ( p_2^T F p_1 = 0 ) (p2TFp1=0))。

本质矩阵的求解

输入:
  1. 两台相机的内参数矩阵(焦距、主点坐标等),记为 K1K2
  2. 两幅图像中互相匹配的特征点对集合。
求解过程:
  1. 首先,使用上述基础矩阵的求解方法,基于匹配点对计算基础矩阵 F

  2. 通过相机内参矩阵将基础矩阵转换为本质矩阵 E,公式为:
    E = K 2 T F K 1 E = K_2^T F K_1 E=K2TFK1

    或者在两个相机具有相同内参数的情况下:
    E = K − T F K − 1 E = K^{-T} F K^{-1} E=K−TFK−1

  3. 对得到的 E 矩阵进行进一步处理,例如奇异值分解(SVD)来获取相机的旋转矩阵 R 和平移向量 t(注意:还需要进行一定的规范化处理以确定唯一的旋转和平移解)。

在实际应用中,由于噪声的存在和匹配点的不确定性,通常会结合RANSAC等算法来优化求解过程,筛选出符合模型的最佳匹配点集,并据此估计出最可靠的基础矩阵和本质矩阵。

相关推荐
游客52021 分钟前
opencv中的常用的100个API
图像处理·人工智能·python·opencv·计算机视觉
吃个糖糖2 小时前
36 Opencv SURF 关键点检测
人工智能·opencv·计算机视觉
普密斯科技4 小时前
手机外观边框缺陷视觉检测智慧方案
人工智能·计算机视觉·智能手机·自动化·视觉检测·集成测试
是十一月末10 小时前
Opencv实现图片的边界填充和阈值处理
人工智能·python·opencv·计算机视觉
Eric.Lee202113 小时前
Paddle OCR 中英文检测识别 - python 实现
人工智能·opencv·计算机视觉·ocr检测
audyxiao00114 小时前
AI一周重要会议和活动概览
人工智能·计算机视觉·数据挖掘·多模态
橙子小哥的代码世界16 小时前
【计算机视觉基础CV-图像分类】01- 从历史源头到深度时代:一文读懂计算机视觉的进化脉络、核心任务与产业蓝图
人工智能·计算机视觉
云云32117 小时前
怎么通过亚矩阵云手机实现营销?
大数据·服务器·安全·智能手机·矩阵
姚先生9717 小时前
LeetCode 54. 螺旋矩阵 (C++实现)
c++·leetcode·矩阵
小陈phd17 小时前
OpenCV学习——图像融合
opencv·计算机视觉·cv