SFM图像三维重建(一)

SFM图像三维重建(一)openMVG/openMVS/bundler基于SFM的图像三维重建欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLo…

openMVG/openMVS/bundler基于SFM的图像三维重建(一)

SFM图像三维重建(一)的地址:
https://blog.csdn.net/abccc250110119/article/details/93471816
SFM图像三维重建(二)的地址:
https://blog.csdn.net/abccc250110119/article/details/105074333
SFM图像三维重建(三)的地址:
https://blog.csdn.net/abccc250110119/article/details/105075101

基于SFM算法的三维重建

为了完成毕业设计,尝试了一下图像三维重建的东西……虽然都是蛮浅显的尝试,但是对我一个新手来说,能出来效果真的蛮开心~嘿嘿

参考的网页:
https://blog.csdn.net/zouyu1746430162/article/details/78638133
https://blog.csdn.net/moneyhoney123/article/details/78454659

首先是bundler+pmvs/cmvs的

bundler简介&PMVS/CMVS简介

Bundler是一个采用C和C++开发的称为sfm(struct-from-motion)的系统,它能够利用无序的图片集合(例如来自网络的图片)重建出3D的模型。最早的版本被用在Photo Tourism的项目上。

项目的官方网站在此:http://phototour.cs.washington.edu/。

Bundler的输入是一些图像、图像特征以及图像匹配信息,输出则是一个根据这些图像反应的场景的3D重建模型,伴有少量识别得到的相机以及场景几何信息。系统借用一个由Lourakis 和Argyros提供的称为Sparse Bundle Adjustment的开发包的修改版,一点一点递增地重建出图像场景。Bundler已经成功的应用在许多网络相册系统,尤其是一些建筑相册里。

Bundler 的源代码可以在这里下载:http://phototour.cs.washington.edu/bundler/

Bundler和PMVS(CMVS)是进行三维重构中非常有用的一套工具包,Bundler利用一系列无序图片可以生成场景的稀疏点云,这些稀疏点云通过PMVS工具包可以得到稠密点云,从而可以重建出场景的3D模型。

PMVS和CMVS(CMVS是PMVS的改进版,里面包含PMVS)是Yasutaka Furukama博士写的已知一组图片和图片对应的相机参数生成dense reconstruction (稠密的三维模型)。

安装过程和结果

  1. 安装下载bundler和PMVS/CMVS
    在linux终端输入:
    git clone https://github.com/snavely/bundler_sfm.git
    git clone https://github.com/pmoulon/CMVS-PMVS.git
    在 http://www.cs.ubc.ca/~lowe/keypoints/ 下载SIFT。(因为bundler需要SIFT进行特征提取)
    安装bundler相关依赖:
    sudo apt-get install liblapack-dev libblas-dev minpack-dev f2c gfortran jhead imagemagick
    安装SIFT依赖:
    sudo apt-get install libc6-dev-i386
    安装CMVS/PMVS依赖:
    sudo apt-get install libgtk2.0-dev libdevil-dev libboost-all-dev libatlas-cpp-0.6-dev libatlas-dev libcminpack-dev libgfortran3 libmetis-edf-dev libparmetis-dev freeglut3-dev libgsl0-dev
  2. 编译bundler和CMVS/PMVS
    进入Makefile文件所在的目录:
    cd /你自己的安装目录/bundler_sfm/
    编译 :
    make
    将下载的SIFT程序中,SIFT可执行文件拷贝到bundler_sfm下的bin目录下;
    将jhead文件拷贝到bundler_sfm下的bin目录下;
    sudo cp /usr/bin/jhead bin/ 
    将bundler_sfm/bin/目录下生成的libANN_char.so文件拷贝到系统库;
    cd bundler_sfm-master
    make
    会生成libANN_char.so
    sudo cp bin/libANN_char.so /usr/lib/
    接下来对CMVS-PMVS进行编译,使用cd命令进入到CMVS-PMVS/program/下,然后依次执行以下命令:
    mkdir build && cd build
    cmake ..
    make
    执行完成后,CMVS-PMVS也就编译完成了,生成的可执行文件位于build目录下的main目录中。将生成的可执行文件cmvs、genOption、pmvs2这三个文件拷贝到bundler_sfm目录的bin下。
  3. 执行Bundler和CMVS-PMVS进行三维重建
    先利用自带的example中的图片进行测试。
    使用cd命令进入到ET文件夹下,然后执行以下命令 ../../RunBundler.sh
    最终会生成很多的结果文件,其中bundler文件夹下的bundler.out中存储了重建的稀疏点3D坐标和相机参数。
    接下来我们就可以利用PMVS进行稠密点云的重建了,在这之前需要将Bundler的输出转换为CMVS-PMVS的输入格式。利用bin下的Bundle2PMVS即可完成这一过程。
    ../../bin/Bundle2PMVS prepare/list.txt bundle/bundle.out
    此时会生成pmvs目录,在此目录下有prep_pmvs.sh文件,编辑此文件,将里边的BUNDLER_BIN_PATH修改为bundler的bin文件夹的实际路径。
    BUNDLER_BIN_PATH="/你自己的路径/bundler_sfm/bin
    然后依次执行如下操作:
    sh pmvs/prep_pmvs.sh
    (在这一步出现了报错“unexcepted operator”,参考了网页 https://www.linuxidc.com/Linux/2014-11/110010.htm ,修改sh默认连接到bash:sudo dpkg-reconfigure dash,解决了报错)
    ../../bin/cmvs pmvs/
    ../../bin/genOption pmvs/
    ../../bin/pmvs2 pmvs/ option-0000
    (注意option之前的空格键)
    生成的最终结果位于pmvs目录的models 文件夹下,名称为option-0000.ply
  4. 使用meshlab软件查看结果
    安装meshlab软件
    sudo add-apt-repository ppa:zarquon42/meshlab
    sudo apt-get update
    sudo apt-get install meshlab
    进入meshlsb软件后查看结果如图1:
    图1 实验结果例子1
    图1
    实物图片如图2
    图2 实物图片
    图2
    图3 实验结果
    图3图4 实物图片
    图4
    以下为使用自己的图片实验的结果:
    图5 实验结果
    图5 结果图6 实物图片
    图6 实物图
    没结果啊qwq。
    检查后发现是因为在这里插入图片描述 。无法找到相机CCD传感器宽度信息。
    我使用的手机型号为Samsung SM-C5010,手机相机为同款型号。手机相机搭载的为CMOS相机,而非CCD相机,但程序要求的CCD宽度并不是说只能用CCD相机,CMOS相机也是一样的,CMOS感应器宽度就是所需的CCD宽度。
    查到CCD/CMOS宽度信息后,在bin目录下找到extract_focal.pl配置文件,使用记事本程序打开,按照相应格式把你的相机传感器宽度信息加进去。
    在这里插入图片描述
    (即”[相机制造商] [相机型号]” => [传感器宽度])
    之后再次进行实验,得到效果如图7所示。
    在这里插入图片描述
    图7 实验效果图
    在这里插入图片描述
    图8 实验输入的图片

今天的文章SFM图像三维重建(一)分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11825.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注