双目视觉实战---三维重建基础与极几何

目录

一,简介

[二. 双视图与三角化](#二. 双视图与三角化)

[1. 三角化模型](#1. 三角化模型)

[2. 多视图几何的关键问题](#2. 多视图几何的关键问题)

3、极几何

三、本质矩阵

四、基础矩阵

[3. 基础矩阵的作用及小结](#3. 基础矩阵的作用及小结)

五、基础矩阵估计


一,简介

三维重建是指通过一系列的图像或传感器数据,推导出物体或场景的三维模型的过程。而极几何(Epipolar Geometry)是三维重建中的一个重要概念和技术。

  1. 基础概念:

    • 图像平面:表示我们观察到的二维图像,由像素组成。
    • 世界坐标系:表示真实世界中的三维坐标系统。
    • 相机:捕捉图像的装置,可以将真实世界中的三维点映射到图像平面上。
  2. 极几何:

    • 极线:相机原理中的重要概念,表示在一个相机视野内,某个三维点在另一个相机视野上的投影位置可能出现的范围。
    • 极线约束:两幅图像中的对应点之间存在着特定的几何关系,即对于一幅图像上的一个点,其在另一幅图像上的对应点必然在相应的极线上。
    • 极线几何:通过利用这些几何关系,可以使用相机标定参数和匹配的特征点,计算出一些基本矩阵或基础矩阵,来描述两个相机视野之间的关系。
  3. 三维重建基础:

    • 特征点匹配:通过在两个图像中找到对应的特征点,建立二者之间的对应关系。
    • 基础矩阵估计:使用特征点的对应关系,计算出描述两个相机视野之间几何关系的基础矩阵。
    • 三角剖分:利用基础矩阵和已知的相机参数,通过三角化方法计算出特征点的三维位置。
    • 点云生成:将所有三角剖分生成的三维点组成一个点云模型。

由于从单幅视图恢复场景三维结构比较困难,并且,单视图2D到3D的映射具有多义性,如下图所示,从单视图中很难辨别塔是模型还是实物;

二. 双视图与三角化

1. 三角化模型

在理想情况下,。但是由于噪声的存在,两条直线通常不相交,因此就存在新的问题:已知和,和以及和,如何求解的三维坐标?(可通过线性解法和非线性解法求解)

寻找p使得最小化。具体可使用牛顿法或列文伯格-马夸尔特法(L-M方法)

2. 多视图几何的关键问题
  1. **摄像机几何:**从一张或多张图像中求解摄像机的内、外参数(第二章解决)
  2. **场景几何:**通过二张或多幅图寻找3D场景坐标(以上解决)
  3. **对应关系:**已知一个图像中的p点,如何在另外一个图像中找到p′点(以下解决)

3、极几何

极几何描述了同一场景或者物体的两个视点图像间的几何关系;

极几何约束

极几何可以将对应点搜索范围缩小到对应的极线上;

(1)极几何特例------平行视图

(2)极几何特例------前向平移(无旋转)

三、本质矩阵

本质矩阵的概念

本质矩阵对规范化摄像机拍摄的两个视点图像间的极几何关系进行代数描述。

本质矩阵表示了两个相机之间的投影关系,可以用来推算出相机的相对姿态和场景的深度信息。它具有以下特点:

  1. 数学定义:本质矩阵E是一个3x3的矩阵,其满足以下条件:

    • 对于任意一个三维点P,在相机1中的投影点x1和在相机2中的投影点x2之间满足 x2^T * E * x1 = 0。
    • E的秩为2。
  2. 构建方式:

    • 特征点对应:通过在两个图像中找到匹配的特征点对,获得一组二维点对(x1, x2)。
    • 基础矩阵计算:通过这些特征点对应关系,使用8点法或最小二乘法等方法计算得到基础矩阵F。
    • 相机参数:利用已知的相机内参矩阵K1和K2,可以通过 F = K2^(-T) E K1^(-1) 计算得到本质矩阵E。
  3. 本质矩阵的应用:

    • 相对姿态估计:通过分解本质矩阵E,可以恢复出两个相机之间的相对位置和旋转矩阵。
    • 三角剖分:结合已知的相机参数和本质矩阵,可以利用三角剖分等方法计算出特征点的三维坐标。
    • 点云生成:通过三维重建算法,将多个特征点的三维坐标估计出来,形成点云模型。

四、基础矩阵

基础矩阵(Fundamental Matrix)是用于描述两个摄像机之间的几何关系的核心矩阵。利用基础矩阵我们可以将一副图像中的像素点对应到另一幅图像上,从而在立体视觉、目标跟踪等任务中发挥着重要的作用。以下是基础矩阵的相关内容:

  1. 基础概念:

    • 图像平面:表示我们观察到的二维图像,由像素组成;
    • 世界坐标系:表示真实世界中的三维坐标系统;
    • 相机:捕捉图像的装置,可以将真实世界中的三维点映射到图像平面上。
  2. 极线几何:

    • 极线:相机原理中的重要概念,表示相机视野内某个三维点在另一个相机视野上的投影位置可能出现的范围;
    • 极线约束:两幅图像中的对应点之间存在着特定的几何关系,即对于一幅图像上的一个点,其在另一幅图像上的对应点必然在相应的极线上;
    • 极线几何:通过利用这些几何关系,可以通过相机标定参数和匹配的特征点,计算出一些基本矩阵或基础矩阵,来描述两个相机视野之间的关系。
  3. 基础矩阵的定义:

    • 基础矩阵F是一个3x3的矩阵,其满足以下条件:
      • 对于任意一对图像中的特征点(x1, x2)来说,都存在F使得 x'^T F x = 0 成立,其中的x'与x分别表示对应点在另外一个视角下的投影结果;
      • F的秩为2。
  4. 构建方式:

    • 特征点对应:通过在两幅图像中找到匹配的特征点对,获得一组二维点对(x1, x2);
    • 基础矩阵计算:通过这些特征点对应关系,使用8点法或最小二乘法等方法计算得到基础矩阵F。
  5. 基础矩阵的应用:

    • 对极约束:利用基础矩阵可在不知道摄像机的内外参时获得图像中某一点的深度信息。
    • 立体视觉:通过基础矩阵,可以确定两个相机之间投影位置的关系,进而实现图像的配准。
    • 运动估计:利用基础矩阵,可以在视频序列中精确地估算出相机的运动轨迹。
3. 基础矩阵的作用及小结
  • 作用:已知F,无需场景信息以及摄像机内、外参数,即可建立左右图像对应关系
  • F刻画了两幅图像的极几何关系,即相同场景在不同视图中的对应关系
  • F应包含摄像机内参数信息
  • 基础矩阵可应用于三维重构和多视图匹配

五、基础矩阵估计

基础矩阵的估计步骤:

  1. 特征点提取:从两幅图像中提取特征点,例如使用角点检测算法(如Harris角点、FAST角点等)或特征描述算法(如SIFT、SURF、ORB等)。

  2. 特征点匹配:对每个特征点在第一幅图像中找到与之最匹配的特征点,并建立特征点对应关系。

  3. 基础矩阵计算:使用特征点对应关系,通过8点法或最小二乘法等方法计算基础矩阵。具体步骤如下: a. 选择足够的特征点对(通常大于8对); b. 构建一个线性方程组,其中每个方程代表一个特征点对应关系,形如 x'^T F x = 0; c. 对方程组进行求解,可以使用最小二乘法或奇异值分解(SVD)等方法求解基础矩阵的参数。

  4. 基础矩阵验证:通过采用RANSAC等方法排除错误的匹配点,进一步验证基础矩阵的准确性。

需要注意的是,基础矩阵的估计过程中可能存在噪声和误匹配的问题,因此对于特征点的选择和匹配算法的优化都是需要考虑的因素。此外,有时候可能需要先进行相机标定,获取相机的内外参数,以提高基础矩阵的估计精度。

相关推荐
学习前端的小z20 分钟前
【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用
人工智能·chatgpt·aigc
可均可可24 分钟前
C++之OpenCV入门到提高004:Mat 对象的使用
c++·opencv·mat·imread·imwrite
埃菲尔铁塔_CV算法1 小时前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR1 小时前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
打羽毛球吗️1 小时前
机器学习中的两种主要思路:数据驱动与模型驱动
人工智能·机器学习
蒙娜丽宁1 小时前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉
好喜欢吃红柚子1 小时前
万字长文解读空间、通道注意力机制机制和超详细代码逐行分析(SE,CBAM,SGE,CA,ECA,TA)
人工智能·pytorch·python·计算机视觉·cnn
小馒头学python1 小时前
机器学习是什么?AIGC又是什么?机器学习与AIGC未来科技的双引擎
人工智能·python·机器学习
神奇夜光杯1 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
正义的彬彬侠1 小时前
《XGBoost算法的原理推导》12-14决策树复杂度的正则化项 公式解析
人工智能·决策树·机器学习·集成学习·boosting·xgboost