美文网首页
Colmap的使用方法以及三维重建效果

Colmap的使用方法以及三维重建效果

作者: 小黄不头秃 | 来源:发表于2024-01-22 17:02 被阅读0次

1、下载安装包

github链接:https://github.com/colmap/colmap

官方文档:COLMAP — COLMAP 3.9-dev documentation

相关视频:【三维重建】利用开源软件colmap实现基于图像的三维重建_哔哩哔哩_bilibili

去releses里面下载对应的版本,例如:


image.png

然后进行解压,如果是windows版本,运行.bat文件即可。

2、准备图片

colmap处理的是图片文件,如果是视频文件,需要对其进行抽帧。抽帧的代码如下所示:

import cv2 

if __name__ == "__main__":
    # cap = cv2.VideoCapture(0)  #读取摄像头
    cap = cv2.VideoCapture("./VIDEOS/example_videos1.mp4")  #读取视频文件
    counter = 0
    num = 1 # 抽帧间隔

    while(True):
        ret, frame = cap.read()
        if ret:
            counter += 1
            if counter % num == 0:
                cv2.imwrite(f"./images/{counter}.jpg", frame)
            # cv2.imshow("frame", frame)
            # if cv2.waitKey(1) & 0xFF == ord('q'):
            #     break
        else:
            break
    cap.release()
    print(counter)

将其保存在我们项目下的images文件夹中。

3、colmap新建项目数据库文件并进行特征提取和匹配

  • 首先需要新建一个.db结尾的数据库文件,并选取images文件夹作为数据源。在file → newproject中。

  • 然后在processing → feature extractprcessing → feature matching 。进行数据特征提取及匹配

4、开启三维重建

  • 点击reconstruction → start reconstruction开启三维重建stf建立稀疏点云。

重建的结果是稀疏点云(就是刚刚提取的特征点三角化后的三维坐标)和相机位姿恢复的示意图(这里发现一个问题,当画面中有固定位置的像素,会对相机位姿恢复产生较大影响)。

可以将稀疏点云导出为ply文件进行查看 file → save project,可以使用另一个软件打开查看,例如:MeshLab。

  • 点击reconstruction → dense reconstruction 进入稠密重建的步骤。
  • 点击右上角的select选择筹募重建项目保存的文件夹,可以在项目文件夹下新建一个dense文件及来进行保存。
  • 点击左上角的Undistortion进行图像的去畸变。
  • 点击Stereo进行密集匹配,时间将会较久。
  • 完成密集匹配后,可以看到生成的深度图,colmap采用的是PatchMatch的倾斜窗口密集匹配算法。点击Fusion进行深度图融合生成稠密点云。
  • 完成后,可以导出稠密点云结果(实际,在dense文件夹下已经进行了自动保存。)
  • 接下来需要进行表面重建,可以选择Possion泊松表面重建和Delaunay狄洛尼三角网重建。
  • 接下来就可以使用三维软件进行查看了,例如在meshlab里面打开dense文件夹下的meshed-possion.ply即可。

4、使用colmap生成NeRF输入数据格式 LLFF

我们在第三步中对图片进行信息提取和和匹配,就可以对相机的位姿进行保存和输出。在特征提取时,需要注意Camera model选择为SIMPLE_PINHOLE,其他配置可以不用更改,点击Extract后,自动开始提取图片特征。提取过程中可以在右侧Log一栏中查看进度,请确保提取过程中没有Erro报错(本文后面会对部分Erro报错给出可能的原因)。

点击File → Export model导出模型,注意,请在工作目录下新建/sparse/0/文件夹,并将模型导入到该路径下例如(./COLMAP_test/sparse/0/),选择改文件夹。或者经过稠密匹配后也会在dense文件夹中生成。

使用脚本生成LLFF格式数据集,需要注意的是,脚本需要修改这个部分:

parser.add_argument('--scenedir', type=str,
                    default="D:/software/colmap/COLMAP-3.8-windows-cuda/COLMAP-3.8-windows-cuda/Project2/",
                    help='input scene directory')  

最终会生成.npy文件,最终构建数据集。

相关文章

网友评论

      本文标题:Colmap的使用方法以及三维重建效果

      本文链接:https://www.haomeiwen.com/subject/fqnyodtx.html