3DGS学习(五)—— sfm初始化点云

sfm初始化点云

此部分不是3dgs主要的算法改进部分,只是通过sfm算法处理图片并初始化点云,进行后续操作。
推荐学习文章:如何从零开始实现一个SFM

sfm算法简要流程

  1. 特征提取:首先从输入的多个图像中提取出特征点,通常使用SIFT、SURF等算法来检测关键点并计算它们的描述子。

  2. 特征匹配:对于不同图像之间的特征点,通过匹配它们的描述子来找到对应的点对,建立两两图像之间的对应关系。

  3. 三角化:对于至少两幅图像中共享的特征点,利用它们的像素坐标和相机参数,通过三角化算法计算出对应的三维点坐标。

  4. 运动估计:通过对匹配的特征点进行运动估计,推断出相机的运动轨迹,即相机的位姿随时间的变化。

  5. 结构恢复:同时根据三角化得到的三维点和相机的运动轨迹,恢复出整个场景的三维结构,得到场景中的物体位置和形状信息。

主要工具

可以直接用开源软件COLMAP直接使用sfm算法生成3d结果。

### 3DGS系统选择使用结构从运动(SFM)技术的原因 3D高斯喷溅(3DGS)作为一种高效的3D场景表示方法,其核心在于能够快速生成高质量的新视角合成效果[^1]。为了实现这一目标,3DGS依赖于一种可靠的初始场景重建方式,而结构从运动(SFM)正是为此提供了基础支持。 SFM的主要功能是从一系列二维图像中恢复出三维空间中的相机姿态以及稀疏的三维点云[^3]。这种技术的特点使其非常适合用于3DGS系统的初始化阶段: - **提供稀疏但精确的几何信息**:SFM生成的稀疏点云虽然不如多视图立体(MVS)那样稠密,但它能准确反映场景的基本结构和尺度关系。这对于后续基于3D高斯的优化至关重要,因为3D高斯可以从这些稀疏点出发逐步调整自身的参数以适配更复杂的几何形状[^4]。 - **高效性和鲁棒性**:相比其他可能的方法(如直接应用MVS),SFM计算成本较低且更加稳定,在资源受限的情况下尤为适用[^5]。它能够在有限的数据集上完成初步的空间建模工作,为之后更高精度的操作奠定良好开端。 综上所述,借助SFM所提供的可靠初值条件,再加上可微分渲染驱动下的精细调优机制,使得整个流程既保持了效率又兼顾到了最终呈现出来的画质水准。 ```python # 示例代码展示如何加载预处理好的 SFM 数据作为输入给到 3D Gaussians 初始化模块 import numpy as np def initialize_3d_gaussians(sfm_points, sfm_cameras): """ 使用来自 SfM 的数据初始化 3D 高斯分布 参数: sfm_points (np.ndarray): 来自 SfM 过程得到的稀疏点云坐标 N*3 数组 sfm_cameras (list of dict): 各个摄像头的位置、方向等元数据列表 返回: list of Gaussian: 初始状态的一系列 3D 高斯对象集合 """ gaussians = [] for point in sfm_points: gaussian = { 'mean': point, 'covariance': compute_initial_covariance(point), 'amplitude': estimate_amplitude() } gaussians.append(gaussian) return gaussians def compute_initial_covariance(mean_position): """ 计算每个高斯分布对应的协方差矩阵""" pass def estimate_amplitude(): """ 对振幅进行合理猜测设定 """ pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜡笔小新配吉良吉影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值