基础矩阵和本质矩阵

基础矩阵(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等算法来优化求解过程,筛选出符合模型的最佳匹配点集,并据此估计出最可靠的基础矩阵和本质矩阵。

相关推荐
多巴胺与内啡肽.6 分钟前
OpenCV进阶操作:指纹验证、识别
人工智能·opencv·计算机视觉
带鱼工作室23 分钟前
通义读光系列文字检测+识别模型端到端OCR应用
python·opencv·计算机视觉·ocr
吾门2 小时前
机器视觉开发教程——C#如何封装海康工业相机SDK调用OpenCV/YOLO/VisionPro/Halcon算法
图像处理·opencv·计算机视觉·c#·.net·.netcore·visual studio
Echo``2 小时前
4:点云处理—去噪、剪切、调平
c++·图像处理·人工智能·算法·机器学习·计算机视觉
白熊1883 小时前
【计算机视觉】OpenCV实战项目:Text-Extraction-Table-Image:基于OpenCV与OCR的表格图像文本提取系统深度解析
opencv·计算机视觉·ocr
白熊1883 小时前
【计算机视觉】OpenCV实战项目:Athlete-Pose-Detection 运动员姿态检测系统:基于OpenCV的实时运动分析技术
人工智能·opencv·计算机视觉
白熊1883 小时前
【计算机视觉】OpenCV项目实战:基于OpenCV的图像分割技术深度解析与实践指南
人工智能·opencv·计算机视觉
carpell4 小时前
【语义分割专栏】先导篇:常用数据集(VOC、Camvid、Cityscape、ADE20k、COCO)
人工智能·深度学习·计算机视觉·语义分割
就决定是你啦!4 小时前
深入解析 Vision Transformer (ViT) 与其在计算机视觉中的应用
深度学习·计算机视觉·transformer
想要成为计算机高手8 小时前
Helix:一种用于通用人形控制的视觉语言行动模型
人工智能·计算机视觉·自然语言处理·大模型·vla