参考文档:
[1]https://blog.csdn.net/baoshuowl/article/details/80373591?biz_id=102&utm_term=vmware%20UBANTU&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-80373591&spm=1018.2118.3001.4187

[2] https://blog.csdn.net/abccc250110119/article/details/93471816

[3] https://www.cnblogs.com/21207-iHome/p/6034792.html

目录

  • Ubantu虚拟机的安装
  • SFM、CMVS-PMVS及其环境的安装
  • 相片拍摄调制与点云形成
  • 点云文件的合并与保存
  • 任意两点的距离量测

Ubantu虚拟机的安装

  1. 在官网下载vmware workstation windows最新版并安装

  2. 在官网下载Ubantu合适版本的ISO镜像,这里用的是16.04.3

  3. 打开vmware主页,点击“创建新的虚拟机”

  4. 选择“典型”

  5. 浏览并选择已经下载好的Ubantu系统镜像

  6. 输入一些个人与安装信息并确认

  7. 完成后便可以打开虚拟机了

  8. 启动虚拟机后,会出现以下界面,左侧选择我们想安装的语言,右边选择安装Ubuntu

  9. 选择为图形或无线硬件,不要选择安装Ubuntu时下载更新,否则会先下载,速度很慢

  10. 选择其他选项,这样就可以自己创建、调整分区

  11. 然后选择创建新分区表,这时候会出现一个21474MB大小空闲的设备

  12. 进行分区,分区之后如下图

  13. 分区之后,在下面选择/boot分区,也就是选择/dev/sda6,这样就设置了安装启动引导其的设备,进行安装,或许有的小伙伴看不到下面的按钮,可以按这ALT然后鼠标拖动从窗口

  14. 点击现在安装之后会弹出下面的窗口,点击继续即可

  15. 之后会出现以下界面,选择时区Shanghai

  16. 选择键盘布局,选择左侧的汉语,然后选择右侧的汉语

  17. 接下来设置系统用户,和密码,密码为登陆系统的密码,要牢记

  18. 点击继续,就会进入到安装系统的界面了,只需等待

SFM、CMVS-PMVS及其环境的安装

  1. 在Ubantu系统中按住CTRL+alt+T调出终端
  2. 在linux终端输入:
    git clone https://github.com/snavely/bundler_sfm.git
    git clone https://github.com/pmoulon/CMVS-PMVS.git
    若没有安装git,则按照终端的提示输入指令安装git
  3. 安装bundler相关依赖:sudo apt-get install liblapack-dev libblas-dev minpack-dev f2c gfortran jhead imagemagick
  4. 在 http://www.cs.ubc.ca/~lowe/keypoints/ 下载SIFT。(因为bundler需要SIFT进行特征提取)
  5. 安装SIFT依赖:sudo apt-get install libc6-dev-i386
  6. 安装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
  7. 进入Makefile文件所在的目录:cd /你自己的安装目录/bundler_sfm/
    编译 :make
  8. 将下载好的SIFT解压,进入文件夹中编译:make
  9. 将sift可执行文件拷贝到bundler_sfm下的bin目录下
  10. 将jhead文件拷贝到bundler_sfm下的bin目录下:sudo cp /usr/bin/jhead bin/
  11. 生成libANN_char.so:
    cd bundler_sfm -master
    make
  12. 将bundler_sfm/bin/目录下生成的libANN_char.so文件拷贝到系统库:sudo cp bin/libANN_char.so /usr/lib/
  13. 接下来对CMVS-PMVS进行编译,使用cd命令进入到CMVS-PMVS/program/下,然后依次执行以下命令:
    mkdir build && cd build
    cmake ..
    make
  14. 执行完成后,CMVS-PMVS也就编译完成了,生成的可执行文件位于build目录下的main目录中。将生成的可执行文件cmvs、genOption、pmvs2这三个文件拷贝到bundler_sfm目录的bin下。

相片拍摄调制与点云形成

  1. 位移前图像进行三个角度的多张图片拍摄,并将其称为1-1,1-2,1-3

  2. 利用“光影魔术手”软件将图片的分辨率改为640*480的同时保存EXIF信息


  3. 位移后的图像也进行同样的拍照操作,并将其称为2-1,2-2,2-3

  4. 查看bin目录下extract_focal.pl配置文件中有没有自己所用相机的CCD宽度或CMOS宽度信息,若没有,在网上查找并写入进去,如:

  5. 在虚拟机中bundler_sfm/example文件夹下新建peach_1文件夹,将图片集1-1复制到文件夹中

  6. 在终端中使用cd命令进入到peach_1文件夹下,然后执行以下命令../../RunBundler.sh

  7. 最终会生成很多的结果文件,其中bundler文件夹下的bundler.out中存储了重建的稀疏点3D坐标和相机参数。

  8. 接下来我们就可以利用PMVS进行稠密点云的重建了,在这之前需要将Bundler的输出转换为CMVS-PMVS的输入格式。利用bin下的Bundle2PMVS即可完成这一过程。
    ../../bin/Bundle2PMVS prepare/list.txt bundle/bundle.out

  9. 此时会生成pmvs目录,在此目录下有prep_pmvs.sh文件,编辑此文件,将里边的BUNDLER_BIN_PATH修改为bundler的bin文件夹的实际路径。
    BUNDLER_BIN_PATH="/你自己的路径/bundler_sfm/bin

  10. 然后依次执行如下操作:
    sh pmvs/prep_pmvs.sh
    (在这一步出现了报错“unexcepted operator”,可修改sh默认连接到bash:sudo dpkg-reconfigure dash,解决报错)
    ../../bin/cmvs pmvs/
    ../../bin/genOption pmvs/
    ../../bin/pmvs2 pmvs/ option-0000
    生成的最终结果位于pmvs目录的models 文件夹下,名称为option-0000.ply

  11. 对6个图片序列分别进行如上操作得到点云

点云文件的合并与保存

  1. 回到windows系统中,在官网上下载meshlab最新版并安装

  2. 运用meshlab打开1-1,1-2,1-3的点云

  3. 点击Align开始配准

  4. 在右边的tool栏中选择基准点云,并点击Glue Here Mesh,选择好之后点云名字前面会出现一个星号。

  5. 然后选择另一块点云,点击Point Based Glueing,这时弹出一个窗口,在两块点云上手动选择匹配点,至少选4对点之后点OK确认。双击鼠标左键进行选择,按住Ctrl双击左键消除选择。

  6. 之后会发现,两块点云基本上重合在了一起,并且第二块点云名字前也出现了一个星号。初始配准之后,我们将进行ICP配准,注意Param ICP Default中的默认参数,根据需要进行修改。如果我们的两块点云大小相同,那么就要勾选Rigid matching选型。如果我们不勾选,那最终的变换矩阵中将会有一个缩放因子。

  7. 点击Process之后软件开始自动计算,然后按照上述步骤再次合并第3幅点云

  8. 对任意一个点云图层右键并点击Flatten Visible Layers,选择1,3,4并apply

  9. 按住ctrl+s保存合并的点云

  10. 对2-1,2-2,2-3也采取上述操作进行合并,以下是合并的点云图片

  11. 再对上面两幅合并的点云进行合并操作

任意两点的距离量测

  1. 采用measure工具量取标准距离,两个黄色标识之间的实际距离为10cm,测量距离为0.412087

  2. 桃子的位移测量距离为0.916609,算的实际距离为10*0.916609/0.412087=22.24cm

  3. 实际桃子的位移距离约为22~23cm,这此方法对于位移测量是值得参考的

基于SFM的三维重建点云合并及位移测量相关推荐

  1. matlab 光度 三维重构 code,基于matlab的三维点云数据三维重建

    基于matlab的三维点云数据三维重建,通过快速构建三角网,实现三维模型的建立,并提供实例数据用于实验. 三维重建的英文术语名称是3D Reconstruction. 三维重建是指对三维物体建立适合计 ...

  2. 基于VisualSFM的三维重建(一)

    第一章绪论 1.1.项目背景与目的 三维重建一直是计算机视觉的热点研究领域,是获取物体模型及三维场景的重要手段.人们获取物体三维信息的方法有很多种,比如传统的几何造型技术,此方法需要较好的专业水平和大 ...

  3. 基于图像的三维重建——基于空间patch扩散的方法(PMVS)

    1.PMVS:多视图匹配经典算法简介 导语:常见的稠密重建方法主要有三种:基于体素的方法.基于深度图融合的方法以及基于3D patch扩张的方法.第一种基于体素的方法仅适用于小场景,单个物体,遮挡较少 ...

  4. 基于MVS的三维重建算法学习笔记(一)— MVS三维重建概述与OpenMVS开源框架配置

    基于MVS的三维重建算法学习笔记(一)- MVS三维重建概述与OpenMVS开源框架配置 声明 1. MVS(Multi-view stereo)概述 稀疏重建与稠密重建的区别 稀疏重建--SFM(S ...

  5. 视频+课件| PointDSC:基于特征匹配的点云配准方法(CVPR2021)

    写在前面 感谢「3D视觉从入门到精通」知识星球嘉宾白旭阳博士为我们带来的主题为PointDSC:基于特征匹配的点云配准方法(CVPR2021)视频讲解,星球成员可免费观看学习.备注:白旭阳,香港科技大 ...

  6. 重磅直播 | PointDSC:基于特征匹配的点云配准方法(CVPR2021)

    大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微信群内完成答疑. 本期由香港科技大学计算机系白旭阳博士分享,分享的主题为<基于特征匹配的鲁棒 ...

  7. 基于深度学习的点云配准Benchmark

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨千百度@知乎 来源丨https://zhuanlan.zhihu.com/p/289620126 ...

  8. 基于八叉树的区域增长点云分割算法

    基于八叉树的区域增长点云分割算法 1. 提出问题 激光雷达探测到城市环境的物体表面构成三维几何点,相应的点云分割技术常用于建筑物重建.由于建筑物的复杂性,数据分割计算量很大,传统的点云分割方法需人工干 ...

  9. 基于MVS的三维重建算法学习笔记(二)— 立体视觉的几何基础总结

    基于MVS的三维重建算法学习笔记(二)- 立体视觉的几何基础总结 声明 概述 1. 常见三维数据类型 2. 三维形状的几种表达形式 3. 三维空间刚体运动 4. 李群和李代数 5. 相机标定 6. 非 ...

最新文章

  1. 计算机组装cpu用哪种好,教你电脑处理器哪款好
  2. 《Javascript高级程序设计》读书笔记之对象创建
  3. 操作系统(二)操作系统的四个特征
  4. THANATOS数据库(自噬调节相关蛋白及其翻译后修饰信息数据库)使用指南
  5. ffmpeg个人翻译文档1-8转
  6. python中库是什么意思_python的库是什么意思
  7. 委内瑞拉通胀这么厉害,为什么有钱人不去圈地、买房?
  8. Mybatis 插入时获取主键的方式
  9. 向量除法能用计算机吗,为什么向量没有除法
  10. php选择排序从大到小,PHP选择排序
  11. Bash学习系列---第2/3部分
  12. failed building wheel for termcolor_【零基础学Python】For循环和RANGE()函数
  13. Rust : chrono库,DateTime、FixedOffset等
  14. beanshell断言_jmeter BeanShell断言(一)
  15. Meshlab快捷键与菜单功能翻译
  16. U盘数据恢复免费破解版哪里有?
  17. matlab编程999玫瑰花,网上收到的用matlab画玫瑰花的代码怎么不行啊,报告错误,求大神...
  18. easyExcel合并单元格策略
  19. ASP模式的机械产品分布式协同设计的研究
  20. 《23种设计模式之原型模式(2种实现)》

热门文章

  1. D. Lucky Chains edu139 div2
  2. 嵌入式c语言学习笔记
  3. Zynga收购Rovio和PopCap无果,企业文化是关键
  4. 使用overlap-add方法计算两个信号的卷积示例
  5. 我们常用的图片格式到底有什么区别?
  6. uni-app h5 上传图片太大压缩图片
  7. 【莫比乌斯反演】互质数对
  8. 连续忙碌了好一阵,太想出去透透气了,最近有假想去湖南玩玩,不知道有哪些好玩的景点?有哪些旅游线路推荐?~在线等哦
  9. Python 游戏:300行代码实现俄罗斯方块
  10. 协程:协程的创建和使用。