1.主要流程

1.1 SIFT:计算图片每个像素点的特征(常见的用SIFT算子)

1.2 SFM:对多张图片像素做匹配对应,通过上步得到的特征,从而估计相机参数,得到稀疏的3D信息

1.3 CMVS/PMVS:根据上步得到的相机参数,做稠密重建,得到点云

1.4 对上步的点云做后处理,得到网格,去除噪声点等。

2.使用源码

完成1.1和1.2流程可以使用Bundler(实现SFM的比较经典的方法)和VisualSFM(好像网页上只放了程序,我没有找到源码),到这一步只是生成了稀疏点云。

CMVS/PMVS可生成稠密点云,完成1.3流程,但一般CMVS/PMVS是加载到Bundler和VisualSFM程序(软件)中的,所以1.1,1.2和1.3是在一个软件中(分步骤)完成的,后面把这三个流程算作一个步骤了。

处理1.4我使用的是MeshLab(开源系统),可以处理点云,生成3D模型。

应该不是很重要的小插曲:其实在前期一开始我还调研了opencv写的一个小程序处理图片,生成效果并不理想,但可能是使用的照片本身效果并不好,因为生成的是** .yml文件(点云文件),我没有查到这个文件格式的处理方法,所以作罢。文档见后面。

3.文件格式问题

第一步:使用Bundler和VisualSFM先生成稀疏点云,再利用集成在程序里的CMVS/PMVS生成稠密点云。

输入:围着要重建对象拍摄的一系列照片;

输出:一个 .out文件,存储着每个相机的位置及重建出的稀疏点云(先输出);

一个.ply文件,存储着由稀疏点云重建出的稠密点云(后输出)。

第二步:使用Meshlab对3D网格/点云做各种操作。输入第一步的生成文件,Meshlab通过一系列操作可创建出包含纹理的、干净的、高分辨率的网格,并自动计算UV映射及创建纹理图像。

输入:VisualSFM的生成文件,.out文件和list.txt文件(存储照片序列);以及.ply文件;

输出:一个.obj文件,3D模型的网格;一个.png文件,任意大小的纹理图;

4.参考文档

4.1 sfm流程概述: http://blog.csdn.net/qingcaichongchong/article/details/62424661

4.2数据集(也就是下载图片和点云的网站)

三维重建数据集:http://vision.ia.ac.cn/zh/data/index.html(国内的我只找到这一个)

这还有一个别人总结的,可以看看,我用的上一个,不知道这个怎么样:

三维点云数据集:https://www.douban.com/note/632704028/

4.3三维重建全过程教程

VisualSFM和Meshlab实现三维重建过程:http://planckscale.info/tag/visualsfm/

这是在Windows下,因为Bundler在Windows下安装的话,还需要安装Linux虚拟环境,我安了一遍没安好(其实是我懒),正好有linux系统,我就直接在那台机器上跑的,虽然,那台机器,配置,相当高,小型服务器的那种,但是!Bundler跑一次就要一夜(可能是我选的照片过大),另外Bundler还有其他的一些问题,我都写在最后总结处了,我这有一篇linux下使用Bundler + CMVS-PMVS进行三维重建的博客:http://blog.csdn.net/u013358387/article/details/71576660  写的很清晰,但有几个小问题,可能博主写错了,我在博客的评论中已经写出来了,另外三篇供大家参考:

(1)Bundler 及 PMVS 常见问题&解决方法http://blog.csdn.net/xdczj/article/details/51301877

(如果你使用的是手机拍摄的照片,你可能找不到CMOS宽度信息,但可以从百度上找找现在手机常用CMOS宽度信息,试一试嘛)

(2)Bundler在Windows下的安装和配置 http://www.cnblogs.com/weizhoupan/archive/2011/03/05/Intro_on_Bundler.html

还是会遇到一些问题,但是可以搜一搜,很好解决。

(3)在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用

http://www.cnblogs.com/mothe123/p/3570981.html

4.4 一开始调研的OpenCV实现SfM

OpenCV实现SfM: http://blog.csdn.net/AIchipmunk/article/details/48132109源码和讲解都很清晰,共有四篇,感谢博主http://blog.csdn.net/chuhang_zhqr/article/details/52946689这也是一个关于OpenCV实现SfM的详解,但没有给出源码,好像还没有更完。。

温馨提示:

因为在OpenCV 3.1.x后的版本中把未稳定功能模块(需要用到Surf和Sift算法),都一起独立存放在opencv_contrib目录下面了,,所以如果我们想要使用这个目录的功能,就需要自己重新进行OpenCV的编译,但是过程十分繁琐,配置版本之间的要求十分苛刻,所以很! 难 !安!而且会遇到各式各样的问题。

http://www.cnblogs.com/wjy-lulu/p/6805557.html

(这是一篇关于opencv3.1+contrib的配置大总结,里面有遇到的各式各样的问题,还有安装教程博客的推荐,以及作者自己编译好的半永久配置文件,特别好,我配置了三天,失败无数次,实属无奈,最后用的还是作者的半配置文件,但不知是我前一个配置的成功还是作者的半配置文件,反正吧,最后成功了,笔芯,强推!)

4.5另外的一些

别人对Structure from Motion 资料总结,很全,偏理论的一些资料:http://blog.csdn.net/u014636245/article/details/77527627

这还有个Qt + OpenGL + OpenCV实现SFM算法的,但只生成了稀疏点云,博主没有放出源码,但里面内容能帮助理解sfm原理的一些东西:

http://blog.csdn.net/Mahabharata_/article/details/70799695?locationNum=9&fps=1

5.最后大总结[撒花]

三维重建的方法很多,我隔壁的姐姐正在搞slam,看起来也很高级。SFM的开源库也有很多,我只调研了OpenCV,VisualSFM,Bundler这三个开源库,我的感受,只是我的感受:

OpenCV:要安装3.1.0以上的版本,还要配置opencv_contrib扩展库,安装麻烦,效果还好,生成** .yml文件(点云文件),后续我也不知道咋处理了。。

VisualSFM+ CMVS-PMVS和 Meshlab:成像快,好,安装简单,用在Windows下,使用简单,但生成的点云有超多杂点,不知道为什么,需要你在Meshlab下手动删除处理,好像牵扯到相机系统标定什么的,没查到。。

Bundler+ CMVS-PMVS和 Meshlab:成像最好的,杂点很少,运行最慢的,要求最麻烦的,要求图片长不过2000,还需要知道相机传感器宽度,需在linux环境下使用命令行运行,还有一个问题,他只能建成一面,我把物体四周都拍了,他就拆开,前后建在一面,我也是很惆怅。。

其实文章虽然写了很长,但并不能把我这两个多月所有的全部写进去,由于时间很短,我对三维重建这块的原理也是一知半解,所以,有疏漏有错误以及各种各种不好的地方,希望大家指出多多包涵。先行谢过。然后,因为某些原因,我已经转去AR/VR组了,所以三维重建也就此告一段落,我也是两个月前接到的任务,从对这方面一点不懂到完成这篇总结,感谢各位博主的无私分享,笔芯。我只是一个大千世界中的一只小蚂蚁,对于其中涉及到的算法和需要的优化,我真心无能为力,等我考上研究生,我再来答,加油中~~~

瞎七瞎八写了很多,也不知道有没有价值,抱住胖啊胖的寄几╰( ̄▽ ̄)╯

从多张图片重建3D模型(瞎七瞎八写了好多)相关推荐

  1. 【3DSlicer】基于心脏ct影像重建3d模型及导出

    3DSlicer4.11 这里使用软件自带数据 可以调整看得更清晰 点击ADD添加两层,双击改名heart,background 点击paint,选中heart,在ct图像中画出心脏区域 选中back ...

  2. 几张图片生成3D模型?距离真正的AI建模还有多远?

    时间溯回,早在2017年,美图秀秀就曾引入人工智能美化人像而被谷歌誉为"最佳娱乐App".智能技术奔腾发展,今年的AIGC技术可谓在各行各业大放异彩,从AI绘画.AI写作到AI配音 ...

  3. 内部局域网怎么测试带宽_通信老鸟手把手教你,怎么纯正地测网速。没有瞎七倒八的套路

    引言 有时需要测试网速,但是在开始使用文件传输工具来测量之前,请考虑一下,你实际测量的是什么? 为了说明这一点,请假设一位数据库管理员DBA,他一直在使用千兆以太网适配器,在几个节点之间配置集群数据库 ...

  4. android 3d模型ppt,PPT已支持3D PPT怎么插入3D模型?

    很多人都知道新版PowerPoint能够插入3D模型,但3D模型又该去哪儿下载呢? 1.站长素材3D模型网 网址://sc.chinaz.com/3D/ 站长素材是一家很不错的3D建模网站,模型数量多 ...

  5. 卫星图片重建洛杉矶3D模型,效果就像谷歌地球,港中大团队提出CityNeRF

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 看到下面这张动图,你会想到什么?是谷歌地球,还是苹果自带的3D地图? 其实都不是,它是用卫星和航拍图片直接渲染生成的洛杉矶. 很难想象,如此 ...

  6. 3D游戏导论七 · 模型与动画

    3D游戏导论七 · 模型与动画 本次的作业我们需要制作一个简易的巡逻兵项目. 文章目录 3D游戏导论七 · 模型与动画 一.作业要求 二.具体实现 1.概念解释 2.项目详解 三.最终结果 一.作业要 ...

  7. cesiumjs开发实践(七) 3D模型

    2019独角兽企业重金招聘Python工程师标准>>> cesium中支持载入3D模型,不过只支持gltf格式.gltf是khronos组织(起草OpenGL标准的那家)定义的一种交 ...

  8. Altium Designer(七):3D模型

    3D模型导入: 下载3D模型文件,网站:https://www.3dcontentcentral.cn/default.aspx(免费注册一个账号)-----以 "NE555" 为 ...

  9. C#开发PACS医学影像三维重建(一):使用VTK重建3D影像

    VTK简介: VTK是一个开源的免费软件系统,主要用于三维计算机图形学.图像处理和可视化.Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的. 因为使用C#语言开发,而VTK是C++ ...

最新文章

  1. MariaDB/MySQL 报错解决:ERROR 1698 (28000): Access denied for user 'root'@'localhost'
  2. 浅谈C++中的友元关系
  3. 区块链在天猫国际商品溯源中的应用
  4. Golang的for range遍历
  5. 浅谈Redis五种数据结构的底层原理
  6. Web Service和Servlet的区别
  7. Oracle .事物,提交,回滚
  8. (7)Linux进程调度-O(1)调度算法
  9. OJ 注意点及知识点总结
  10. vscode npm install下载权限问题解决
  11. powerdesigner 连接数据库
  12. web前端性能优化总结 1
  13. Solidity学习教程
  14. 大数据扫黄如此精准,你中招了没
  15. 在vscode和android studio中安装代码注释翻译插件
  16. python假设检验和区间估计_用 Python 实现常用的假设检验
  17. web应用防火墙的部署方式
  18. java中的\uxxxx
  19. GeoScene Pro 2.1下载地址与安装基本要求
  20. 《基础微积分教材中译版》--11.3偏导数

热门文章

  1. 对接阿里云平台短信接口
  2. My feelings
  3. 华科计算机博导刘云生论文,华科白翔老师团队ECCV2018 OCR论文:Mask TextSpotter
  4. 苹果11是高通基带吗_iPhone11信号成最大问题,不支持5G还是英特尔基带,令人失望...
  5. git diff使用简单记录
  6. 数据库作业3:第二章课后题(关系数据库及相关概念)
  7. nslookup blog.csdn.net Can't resolve blog.csdn.net
  8. 阿里的天蝎计划-迟到了N多年的 SI
  9. 自定义控件---继承ViewGroup类方式(循序渐进之第3步效果----图片左右拖动+RadioGroup切换效果)
  10. MySQL:一主两从架构(读写分离)