Advertisement

python 稠密重建_毕业设计记录的三维重建2:CMVs密集点云重建,之,2cmvs,稠密,实现...

阅读量:

稠密重建部分直接在sfm的基础之上调用cmvs可执行程序,cmvs集成了稀疏点云聚类算法和基于面片的稠密重建算法pmvs,其中pmvs是目前效果最好的稠密重建算法。

cmvs可执行程序在windows上的使用

准备资源.:在

此处

下载名为

CMVS for Windows

的文件,在下载后的binariesWin-Linux文件夹下即可找到对应的可执行文件,按照自己电脑配置选择Win32或Win64。(我选择Win64)

创建根文件夹,将Win64中的文件都拷贝到该文件夹内。

在根文件夹下创建一个名为pmvs的文件夹。该文件夹存放cmvs需要的输入文件及cmvs的输出结果。目录结构如下所示。
d3af3c081fba4d1f364c3a46a22cbd86.png

准备输入的文件:pmvs下应有三个子文件夹和一个文件,分别如下图所示。
d8e6525559294c1672db0e4d7168ddfd.png

models

:空文件夹,留给cmvs存放最终生成的ply格式点云。

txt

:存放

每个图片对应的投影矩阵

,命名方式为00000000.txt,00000001.txt,以此类推。(n个图片对应n个文件)

visualize

:存放重建使用的所有图片,命名方式为00000000.jpg,00000001.jpg,依次类推。图片顺序应与txt文件顺序对应,即名为00000000.jpg的图片的矩阵存放在00000000.txt中。

bundle.rd.out

:按照

bundler格式

存放的sfm输出文件。

执行:一般意义上使用命令窗口执行cmd命令来调用cmvs程序,但我之前的项目使用的是python编写,因而我使用python执行cmd命令。代码如下:

root = os.getcwd()

设置命令

commend1 = root + "\cmvs.exe" + " " + root + "\pmvs\ "

commend2 = root + "\genOption.exe" + " " + root + "\pmvs\ "

commend3 = root + "\pmvs2.exe" + " " + root + "\pmvs\ option-0000"

执行CMVS

process = subprocess.Popen(commend1, shell=True)

process.wait()

process = subprocess.Popen(commend2, shell=True)

process.wait()

process = subprocess.Popen(commend3, shell=True)

process.wait()

注意:第三个命令中,option-0000前面必须有空格;执行完一个命令再执行下一个命令,否则程序会出错。

执行完成后,在/pmvs/models中的option-0000.ply文件就是稠密重建的结果。

准备输入文件

有三个输入文件需要准备,下面依次说明。

visualize:这里是重建图片的副本,将待重建图片复制到visualize文件夹下即可,

注意命名必须为8位(4位也可)数字,格式最好为jpg


43790aaf9671a47bc184d4aece6c015b.png

txt:每个图片对应的投影矩阵存放格式如下:
c067bfb45be1f009300ec69f462ef49b.png

sfm已经了解了投影矩阵,P为内参矩阵与外参矩阵的乘积。存储txt文件的时候注意

顺序与visualize中图片顺序对应,最好sorted一下

每个txt中存放的实际内容参考如下:
38c89775888319639038c87b995a3330.png

3. bundle.rd.out

文件格式:
08b62b424057cc9bc372bceaaf0ad871.png

#Bundle file v0.3 :文件头

总相机数(正常情况下等同于总的重建图片数) 总点数(sfm输出的稀疏点云点总数)

实际内容参考:
dc2506275e88550d8b20d0eebd8f1617.png

每个相机参数(一个相机参数由五行数据表示)

格式为:
2da22d7d9f46fb1d6c4773405d344fdd.png

第一行:焦距f 畸变参数k1 畸变参数k2

第二到四行:旋转矩阵R

第五行:平移量t

实际内容参考:
531413636482396a73c1c4237863e926.png

每个点参数(一个点参数由三行数据表示)

格式为:
43281569b7899738e38ba2c9affcd81b.png

第一行:三维点的坐标

第二行:该点的RGB颜色

第三行:该点的详细信息

第一个参数:能观察到该点的相机个数。之后以< camera > < key > < x >< y >四个参数参数为一组依次写入。

其中:< camera >为相机(图片)索引,< key >为keypoint序列索引,< x >< y >为该keypoint在图片上的二维坐标。

实际内容参考:
b5ef577dae28193535574bf254352db7.png

参考博客:

全部评论 (0)

还没有任何评论哟~