使用全景相机进行高斯泼溅的构建方案

书接上回,前文尝试视频裁切帧的方式来进行3D高斯场景重建。

但视频切帧缺乏位置信息,运镜的速度、角度不均匀,会导致很多图片没法准确关联。

因此,想到另一种只需一次运镜就能完成场景重建的方案,那就是全景相机

Insta360 X系列的全景相机为例,它允许一前一后两台相机同时进行录制,通过视角合成,实现约等于360°的全景效果。

我手上正好有一台两年前购置的Insta360 X3,于是参考了Pixel Reconstruct的教程[1],尝试了一下通过全景相机来进行3D高斯场景重建。

前期拍摄

拍摄场景必须满足的一点是:拍摄过程中,没有行人经过。

因为后面要利用所有帧的图像来还原场景,如果一个角度有人,一个角度没人,可能就会造成画面不一致无法匹配,甚至场景的崩坏。

我选择了学校图书馆前一处行人较少的场景,等到行人走干净时,采用4K 30fps的规格进行录制。

拍摄方式是通过拍摄杆,将相机举到头顶,这样的好处是可以利用全景相机存在的视角差,让后面在裁剪画面时,可以不把自己的影响裁进去。

举着相机绕着这个场景走了两圈,一圈外圈,一圈内圈,耗时4分钟。

后期编辑

拍摄完成后,将视频导入insta360 studio里面进行编辑。

由于我拍摄的时间偏黄昏,画面亮度较低,因此我进行了简单的画面处理,主要调整三个值:

  • 调高亮度:让画面看起来更亮,提升观感
  • 调高曝光:在调高画面亮度的同时,减少画面中的噪点
  • 调高清晰度:提升锐度,让场景边缘更加锐利,方便后面特征点匹配

调整完之后,导出.mp4格式的视频,直接用普通播放器打开,看到的是这样的画面,一个画面中,记录了两颗摄像头拍摄的信息。

视频切帧

下一步,就是将视频切成图像,采用ffmpeg进行处理,命令如下:

复制代码
ffmpeg -i path/to/360_video.mp4 -vf fps=2 -qscale:v 1 (output_folder)/ image_%04d.jpg

其中,fps=2表示每2帧切一帧,如果步频较慢,可以间隔更多帧进行切帧。

切完帧后,共得到479张图片。

全景图片裁切

下一步,需要将这些全景图像裁切成正方形的图像块。

具体用到的是 meshroom[2],它仅支持windows和linux两个系统,需要下载2021.1这个版本。

因为后面的版本,命令有很大变化,只有该版本能使用下面的命令。

下面进入bin路径,用以下命令进行图像裁切:

复制代码
aliceVision_utils_split360Images.exe -i (input 360 image folder) -o (output 2D image folder) --equirectangularNbSplits 8 --equirectangularSplitResolution 1200

裁切完之后,得到了3k多张1200x1200分辨率的图像块。

进行高斯重建

有了图像块之后,高斯重建就相对简单了。

下面采用colmap-gradio来计算colmap(花费了两个半小时),再用brush训练了三万步。

这两个工具前文已详细介绍过,这里不做赘述。

下图是重建完的效果:

编辑后预览

下面再使用SuperSplat对结果进行编辑,导入图像,会有很多冗余的散点。

编辑后,得到需要保留的区域。

下面基于GaussianSplats3D进行了模型可视化。

模型粗看还可以,但拉近细看还是有些"毛糙"的。

总结

本文打通了从全景相机到构建3DGS的流程路径,不过仍有两点可以优化:

  • 选择在白天光线充足的时候进行拍摄,同时场景中避免水面/玻璃等反射物体干扰,理论效果会更好;
  • 在计算colmap时,可以采用RealityScan的方案,理论效果会比当前计算的效果更好。

后面抽时间再尝试一下新方案。

参考

1\] https://www.youtube.com/watch?v=LQNBTvgljAw \[2\] https://github.com/alicevision/meshroom/releases

相关推荐
leiming611 小时前
Qt视频监控系统开发实战:从视频捕获到照片管理
linux·数码相机·音视频
ZPC821015 小时前
机器人手眼标定
人工智能·python·数码相机·算法·机器人
格林威15 小时前
Baumer相机碳纤维布纹方向识别:用于复合材料铺层校验的 5 个核心技巧,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·视觉检测
格林威16 小时前
Baumer相机视野内微小缺陷增强检测:提升亚像素级瑕疵可见性的 7 个核心方法,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·视觉检测·工业相机
格林威1 天前
Baumer相机金属焊缝缺陷识别:提升焊接质量检测可靠性的 7 个关键技术,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·视觉检测·堡盟相机
格林威2 天前
Baumer相机金属弹簧圈数自动计数:用于来料快速检验的 6 个核心算法,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·视觉检测·堡盟相机
码农三叔2 天前
(8-2)传感器系统与信息获取:外部环境传感
人工智能·嵌入式硬件·数码相机·机器人·人形机器人
暮志未晚Webgl2 天前
UE5使用CameraShake相机震动提升游戏体验
数码相机·游戏·ue5
哎呦 你干嘛~3 天前
相机+二维舵机云台的人员追踪
数码相机
木子啊3 天前
ProCamera 智能水印相机解决方案 (UniApp)
数码相机·uni-app·水印相机·小程序水印