三维重建——Structure from motion

本文介绍了Structure from Motion(SFM)的概念和算法流程。SFM通过一系列图像重建3D点云和相机姿态。算法包括获取相机内参、计算匹配特征点、估算基础矩阵、计算本质矩阵、确定相机外参以及使用bundle adjustment融合不同3D点云。此外,还讨论了fundamental matrix与homography的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 概念

Structure from motion 指的是由图像生成3维点云以及相机姿态,即:
- 输入:一系列图像,拍摄同一场景
- 输出: 每一张图像对应的相机位置和朝向, 场景中的3D点云


2. 算法流程

  1. 获取相机内参矩阵
    对输入图像利用其内部的编码信息获取相机的焦距,计算内参矩阵
  2. 对相邻图像两两计算匹配特征点
    对于3D重建而言, 一般是首先用两张图像作为初始化建出来一个初始的点云,之后不断添加后续的图像进入,并添加入点云。 那么具体添加那一张图像可以采用的方法是:看已有的图像中哪一个与已有点云中的点匹配最多就先选哪张。
  3. 计算两图像之间的内参矩阵F
    关于fundamental matrix的推导可以使用Multiview geometry 242页 9.2.1中的几何推导以及9.2.2中的算术推导,算术推导证明如果两张图像的拍摄是纯相机平移的话,fundamental matrix是计算失败的。计算内参矩阵可以使用8点算法。具体内容参看Multiview geometry 282页 Algorithm 11.1,值得注意的是,在进行8点算法之前,需要使用RANSAC算法对特征点进行提纯(RANSAC算法中的模型使用计算基础矩阵的8点算法,参见Multiview geometry 121页 Algorithm 4.5),同时在输入计算基础矩阵之前,需要对所有的特征点进行normalize,这里是必须要做的,原因参见Multiview geometry 108页,具体做法使用109页 Algorithm 4.2.
  4. 计算相机的essential matrix
    使用公式 E=
地形数据测量是许多地貌研究应用程序的基本方面,尤其是那些包括地形监测和地形变化研究的应用程序。然而,大多数测量技术需要相对昂贵的技术或专门的用户监督。 MotionSfM)摄影测量技术的结构通过允许使用消费级数码相机和高度自动化的数据处理(可以免费使用)减少了这两个限制。因此,SfM摄影测量法提供了快速,自动化和低成本获取3D数据的可能性,这不可避免地引起了地貌界的极大兴趣。在此贡献中,介绍了SfM摄影测量的基本概念,同时也承认了其传统。举几个例子来说明SfM在地貌研究中的应用潜力。特别是,SfM摄影测量为地貌学家提供了一种工具,用于在一定范围内对3-D形式进行高分辨率表征,并用于变化检测。 SfM数据处理的高度自动化既创造了机遇,也带来了威胁,特别是因为用户控制倾向于将重点放在最终产品的可视化上,而不是固有的数据质量上。因此,这项贡献旨在指导潜在的新用户成功地将SfM应用于一系列地貌研究。 关键词:运动结构,近距离摄影测量,智能手机技术,测量系统,表面形态echnology reduces both these constraints by allowing the use of consumer grade digital cameras and highly automated data processing, which can be free to use. SfM photogrammetry therefore offers the possibility of fast, automated and low-cost acquisition of 3-D data, which has inevitably created great interest amongst the geomorphological community. In this contribution, the basic concepts of SfM photogrammetry are presented, whilst recognising its heritage. A few examples are employed to illustrate the potential of SfM applications for geomorphological research. In particular, SfM photogrammetry offers to geomorphologists a tool for high-resolution characterisation of 3-D forms at a range of scales and for change detection purposes. The high level of automation of SfM data processing creates both opportunities and threats, particularly because user control tends to focus upon visualisation of the final product rather than upon inherent data quality. Accordingly, this contribution seeks to guide potential new users in successfully applying SfM for a range of geomorphic studies.
### SFM三维重建的技术原理 结构从运动(SfM)作为计算机视觉中的关键技术之一,旨在从未校准的图像集合中恢复场景的三维结构以及相机的姿态信息[^1]。此过程依赖于多个核心概念和技术: - **特征提取与匹配**:为了建立不同视图间的联系,通常会先检测每幅图像的关键点,并寻找这些关键点在其他图像中的对应位置。常用的方法包括尺度不变特征变换(SIFT)[^2]。 - **相对位姿估算**:一旦获得了足够的可靠匹配对,则可以运用诸如八点法或五点法这样的算法来计算两帧之间的本质矩阵(Essential Matrix),进而推导出旋转和平移向量,即相机构造参数[^5]。 - **全局优化——光束调整(Bundle Adjustment)**:随着更多图像被加入到重建过程中,初始估计可能会累积误差;因此需要执行整体性的非线性最小化操作以精炼所有未知数(如3D坐标、内参外参等),从而获得更精准的结果。 ```python import numpy as np from scipy.optimize import least_squares def bundle_adjustment(object_points, image_points, camera_params): """ Perform Bundle Adjustment to refine the structure and motion parameters. Parameters: object_points : array_like of shape (n_observations,) The observed 3D points in world coordinates. image_points : array_like of shape (n_observations,) Corresponding pixel locations on images where each point was seen. camera_params : array_like of shape (num_cameras * num_parameters_per_camera,) Initial guess for intrinsic/extrinsic parameters per camera. Returns: optimized_params : ndarray with same size as `camera_params` Optimized set of intrinsics & extrinsics after BA optimization. """ def residuals(params): # Compute reprojection errors here... result = least_squares(residuals, x0=camera_params) return result.x ``` ### 应用实例分析 #### 文物数字化保护 对于历史遗迹或者珍贵文物而言,传统接触式的测量方式容易造成损害。而借助SfM技术可以从多角度拍摄的照片构建高精度的数字模型,不仅有助于保存文化遗产的信息,也为后续的研究提供了便利条件[^4]。 #### 自动驾驶环境感知 现代汽车配备了大量的摄像头传感器用于辅助驾驶功能实现。通过连续采集前方道路状况并实时更新周围物体的空间分布情况,车辆能够更好地理解和预测潜在风险因素,提高行驶安全性的同时增强了用户体验感。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值