首页 > 其他分享 >colmap大场景稀疏重建记录:部分照片畸变导致sfm生成的稀疏点云扭曲

colmap大场景稀疏重建记录:部分照片畸变导致sfm生成的稀疏点云扭曲

时间:2024-06-08 11:33:57浏览次数:16  
标签:视角 稀疏 照片 楼宇 sfm 点云 重建

一、问题

如题,要进行一个大场景的3DGS重建,数据集来自于某工地现场(大约3000张照片),数据集拍摄于同一个相机,按照国际惯例,3DGS需要输入一个稀疏点云,所以首先利用colmap进行稀疏重建。

进行特征提取,特征匹配(colmap官网建议1000-10000张图的特征匹配使用vocab tree),稀疏重建以后,发现场景中,楼宇出现弯曲,分裂现象,如下图:

4ac69d3ee51944908d8ab6b74fcbb968.jpg

f6c8619643b9452db6c99f53c024761c.jpg 问题出现以后,查看(在colmap gui界面双击)弯曲部分对应的照片,楼宇上下拍摄角度的照片并没有发现畸变(楼宇是直的,简单的用尺子或者其他工具对比一下,楼宇是否有弯曲)

d64eef4100654a4c82741e3db599e373.jpg

 从拍摄的照片来看,虽然是对着楼宇上下拍摄,但是无人机的镜头并没有调正,很多照片全是偏向于俯视,头大尾小,虽然这样不影响重建效果,但是处理这些必然是要花费更多时间,相比于端正拍摄的镜头来说。

39f02fb502f34225a53ce57aa3aee686.jpg

f8e6f6e25c3e422482fa94125a3a9148.jpg

 然而,在检查楼宇最上方的俯视视角照片时,发现了几处畸变,原来问题出现在这里!因为这些畸变的出现,colmap的计算产生了误差,导致原本方形的楼宇扭曲。后续删除了一些畸变很大的照片。

二、处理

实际上,对于照片中存在的畸变,colmap一般可以修正,猜想这个问题有可能因为特征提取时限定了所有路径下图片使用同一个相机模型。

因为数据集路径中,楼宇的上下与环绕视角,空中俯视视角,两种类型的照片存于不同文件夹,考虑将上下与环绕视角的数据单独分出来先进行重建,先得到正确的楼宇点云,然后在这个正确的结果之上,进行全局的稀疏重建。

具体先重建出上下环绕视角的点云,然后所有图片重新走一次sfm过程,特征提取的时候使用camera for subfolder(每一个文件夹使用一个相机模型,而不是所有文件夹使用同一个相机模型),然后特征匹配,这里可以使用前面重建上下环绕视角的时候得到的database.db文件,里面存储了之前的特征提取和匹配的数值,这样可以更快一点。下图是正确的楼宇环绕点云:

d184da99b5414fc4846f5ef6f5102075.png

在进行最后一步稀疏重建的时候,添加一个参数--input_path,这个指向已有的稀疏点云,也就是前面重建的上下环绕视角点云,这样,在这个正确点云的基础上,重建剩余全部视角,得到修正的全局稀疏点云。

626b1eace0134839831218c6a7dd15e9.png

 整体数据集稀疏重建成功,进入3DGS训练过程,注意大场景的训练显存占用较大,一些硬件,高斯基元相关的参数需要调整一下。

 

标签:视角,稀疏,照片,楼宇,sfm,点云,重建
From: https://blog.csdn.net/m0_74310646/article/details/139543108

相关文章

  • 高度向稀疏的毫米波成像方法
    分析:高度向稀疏的采样数据是整行缺失的,每一列上都缺失了大量数据,这可能造成高度向的混叠现象,但是每一行上是没有缺失数据的,这说明方位向应该是不会出现混叠现象。考虑到上述现象,对于三维成像,可不可以先实现距离-方位向的二维成像,而后再实现高度向的聚焦,进而实现三维成像。想......
  • 基于Open3D的点云处理20- 基于Visualizer类自定义可视化
    1.自定义可视化官网测试用例Open3D/examples/python/visualization/customized_visualization.py自定义可视化工具窗口-Visualizer类Visualizer可视化基础操作defcustom_draw_geometry(pcd):#Thefollowingcodeachievesthesameeffectas:#o3d.v......
  • 基于对比稀疏扰动技术的时间序列解释框架 ContraLSP
    开篇近日,由阿里云计算平台大数据基础工程技术团队主导,与南京大学、宾夕法尼亚州立大学、清华大学等高校合作,解释时间序列预测模型的论文《ExplainingTimeSeriesviaContrastiveandLocallySparsePerturbations》被机器学习领域顶会ICLR2024接收。该论文提出了一种创新的基......
  • 基于稀疏辅助信号平滑的心电信号降噪方法(Matlab R2021B)
    基于形态成分分析理论(MCA)的稀疏辅助信号分解方法是由信号的形态多样性来分解信号中添加性的混合信号成分,它最早被应用在图像处理领域,后来被引入到一维信号的处理中。在基于MCA稀疏辅助的信号分析模型中,总变差方法TV是其中一个原型,稀疏辅助平滑方法结合并统一了传统的LTI低通滤......
  • 稀疏矩阵 - 十字链表 & 快速转置
    十字链表每个稀疏矩阵非零元素都是一个结点,数据域存储的是所在行、所在列和元素值,有两个指针域,分别存储的是指向与该元素同行的下一个非零元素和同列的下一个非零元素的指针。所以一个m行n列的稀疏矩阵,(最多)总共有(m+n)个链表,即(在每行每列都有非零元素的情况下,当然这样可能并不算......
  • [Open3d系列]--点云平面提取
    Open3d:点云平面拟合因为项目需要分析点云数据,此文总结其中拟合平面经验。加载点云importopen3daso3dplypath="/xxx/xxx.ply"pcd=o3d.io.read_point_cloud(plypath)o3d.visualization.draw_geometries([pcd])效果如下:平面拟合plane_model,inliers=current......
  • 使用pptk对点云进行可视化渲染
    需求有一些3D点云,需要在三维空间进行可视化渲染,并做两组点云之间的对比。实现使用pptk库对点云进行渲染,可将两组点云合并传入用颜色进行区分。importnumpyasnpimportpptk#genpointsgt_points=np.random.rand(100,3)pd_points=np.random.rand(200,3)red=np.ar......
  • 深度学习算法中的稀疏编码(Sparse Coding)
    【摘要】引言稀疏编码(SparseCoding)是深度学习算法中的一种重要技术,它在神经网络模型中发挥着重要的作用。本文将介绍稀疏编码的基本概念、原理以及在深度学习中的应用。稀疏编码的概念稀疏编码是一种通过寻找数据的稀疏表示来描述数据的方法。在深度学习中,稀疏编码可以将输入数......
  • Sparse稀疏检索介绍与实践
    Sparse稀疏检索介绍在处理大规模文本数据时,我们经常会遇到一些挑战,比如如何有效地表示和检索文档,当前主要有两个主要方法,传统的文本BM25检索,以及将文档映射到向量空间的向量检索。BM25效果是有上限的,但是文本检索在一些场景仍具备较好的鲁棒性和可解释性,因此不可或缺,那么在NN模......
  • 最具有影响力的三个视觉平台 | 3D高斯、场景重建、三维点云、工业3D视觉、SLAM、三维
    大家好,我是小柠檬这里给大家推荐三个国内具有影响力的3D视觉方向平台!原文:最具有影响力的三个视觉平台|3D高斯、场景重建、三维点云、工业3D视觉、SLAM、三维重建、自动驾驶......