BundleFusion

一、配置
1.先安装VS2013,先安装VS,先安装VS(安装CUDA会配置VS文件,反向的话VS中找不到文件)
VS安装参考:https://blog.csdn.net/m0_37477061/article/details/83447773

2.安装CUDA,我们选择的版本为10.1
2.1 CUDA下载路径:https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10

2.2 下载后点击EXE文件运行,默认安装即可

2.3 安装成功后,打开电脑的环境变量配置,首先会看到系统已经默认安装了两个路径,如下图所示

2.4 然后添加新的环境变量(除上述两个变量之外)

2.5 在系统的path中添加路径

%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;

系统将默认将其转换成:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64;
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin;
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\common\lib\x64;
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\bin\win64;

添加方式二选一即可

2.6 验证安装成功,输入nvcc --version

显示cuda compilation tools,release 10.1,V10.1.243


2、DirectX SDK安装
下载地址:http://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe ,运行安装。

#若运行安装出现 错误 ErrorCode:s1023
解决办法1:

在这里插入图片描述

控制面板卸载以上两项,再重新安装DXSDK_Jun10.exe即可。

二、vs2013代码生成
BundleFusion GitHub地址:https://github.com/niessner/BundleFusion
配置过程主要参考这里

从GitHub上下载该BundleFusion,并解压,得到工程 BundleFusioin-master

1、mLib与 mLib external配置
mLib
下载地址:https://github.com/niessner/mLib ,解压后,替换掉目录 BundleFusion-master\external\mLib

mLib external
下载地址:https://www.dropbox.com/s/fve3uen5mzonidx/mLibExternal.zip?dl=0 ,解压后,放到 BundleFusioin-master 同级目录,网址访问不了的话可以用我传到网盘的mLibExternal.zip:链接:https://pan.baidu.com/s/1CJysQCHl4t7RPfvqliwfew 提取码:0x4t

最终目录结构:

bundlefusion
    BundleFusion-master/
      external/
        mLib/ # this is the submodule you replaced
          data/
          src/
          [...]
      FriedLiver/
        [...]
        FriedLiver.sln
        [...]
    mLibExternal/ # you downloaded this from Dropbox
      include
      libsWindows
      [...]

2、cuda设置
修改cuda版本
用VS2013打开 BundleFusion-master\FriedLiver\FriedLiver.sln 工程,如果cuda版本不是原代码设置的cuda7.0,就会出现如下错误:

在这里插入图片描述

修改 BundleFusion-master\FriedLiver\FriedLiver.vcxproj 文件,用vs code打开该文件,并修改如下两行:

# 第35行
<Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 7.0.props" />
# 将7.0,修改为我们8.0的cuda版本
<Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 10.1.props" />

# 第375行
<Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 7.0.targets" />
# 将7.0,修改为8.0
<Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 10.1.targets" />

再次打开就不会报错了。

显卡计算能力设置
选择适合你显卡的compute能力,显卡计算能力在https://developer.nvidia.com/zh-cn/cuda-gpus#compute查询
我的笔记本显卡NVIDIA GeForce MX150,计算能力与GeForce 940M等同,为5.0,在工程的配置选项中设置如下:

在这里插入图片描述

3.报错:boost1.66.0链接

JFroghttps://boostorg.jfrog.io/ui/native/main/release/1.66.0/source

3、相机类型设置(以apt0.sens离线数据为例)
输入类型
输入数据可以为Kinect v1,Kinect v2,PrimeSenseSensor,IntelSensor,RealSense,StructureSensor以及SensorDataReader(离线数据)
具体可以查看FriedLiver.cpp中7-103行的内容

没有深度相机的,以离线数据office3.sens为例,下载地址:http://graphics.stanford.edu/projects/bundlefusion/

修改GlobalAppState.h
因为使用的是离线数据,将GlobalAppState.h中深度相机全部注释掉。

注:如果用深度相机(如:Kinect v1)实时运行,用哪个将哪个取消注释,并安装对应SDK。

4、生成FriedLiver.exe
修改为 Release 版本,然后选择 生成->生成解决方法
编译通过后,如下图:

在BundleFusion-master\FriedLiver\x64\Release中生成可执行文件FriedLiver.exe

三、运行与结果
1、配置文件修改
将BundleFusion-master\FriedLiver 目录下的 zParametersBundlingDefault.txt 和 zParametersDefault.txt 拷贝到 BundleFusion-master\FriedLiver\x64\Release

修改zParametersDefault.txt
用vs code打开 zParametersDefault.txt 配置文件,选择输入类型,这里使用离线数据,修改第2行,设置s_sensorIdx = 8 。如果用深度相机(如:Kinect v1)实时运行,修改为对应的序列号。

修改第49行,设置s_hashNumSDFBlocks = 100000

修改第58行,设置输入路径s_binaryDumpSensorFile = "../data/office3.sens"

将下载的office3.sens放置到BundleFusion-master\FriedLiver\x64\data

修改zParametersBundlingDefault.txt
双击运行后,若出现窗口崩溃或者没有响应直接跳出,如下图:

用vs code打开 zParametersBundlingDefault.txt 配置文件,修改第30行,设置s_maxNumImages = 400

2、运行结果
配置修改后,双击运行FriedLiver.exe

按下tab键,如下图所示,按照提示与软件进行交互,按下ctrl+2显示带颜色深度,按下ctrl+3显示彩色视频流,按下ctrl+9导出当前模型到FriedLiver\x64\Release\scans\scan.ply ,具体实现代码查看FriedLiver\Source\DepthSensing\DepthSensing.cpp


3、模型生成
运行结束后,BundleFusion-master\FriedLiver\x64\data\office3.sens同目录下生成office3.ply,用meshlab打开


4、在Kinect v1上的实时运行
安装 Kinect SDK v1.8
Kinect for Windows SDK v1.8
Kinect for Windows Developer Toolkit v1.8
下载后默认安装

设置Kinect v1输入
重新打开 BundleFusion-master\FriedLiver\FriedLiver.sln 工程,将GlobalAppState.h中第三行取消注释

选择 生成->生成解决方法,即可编译通过。

zParametersDefault.txt 配置文件,选择输入类型,这里使用Kinect v1,修改第2行,设置s_sensorIdx = 0

实时运行
插上Kinect v1,双击运行FriedLiver.exe

在编译时报错:

LNK2001    无法解析的外部符号 __imp_GetWindowPlacement    FriedLiver    类似的90多个错误,在DXUT.h中添加一下依赖库:

#pragma comment(lib,"kernel32.lib")
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"gdi32.lib")
#pragma comment(lib,"winmm.lib")
#pragma comment(lib,"shlwapi.lib")
#pragma comment(lib,"comdlg32.lib")
#pragma comment(lib,"shell32.lib") 

转自:BundleFusion在win10+vs2013+cuda8.0上的实现_zhoujie1994的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实时全局一致的3D重建,使用动态表面重新整合技术实时,高品质,大尺寸场景的3D扫描是混合现实和机器人应用的关键。然而,可扩展性带来了姿态估计漂移的挑战,在累积模型中引入了显着的错误。方法通常需要几个小时的离线处理来全局纠正模型错误。最近的在线方法证明了令人信服的结果,但遭受以下缺点:(1)需要几分钟的时间才能执行在线修正,影响了真正的实时使用; (2)脆弱的帧到帧(或帧到模型)姿态估计导致许多跟踪失败;或(3)仅支持非结构化的基于点的表示,这限制了扫描质量和适用性。我们通过一个新颖的,实时的端对端重建框架来系统地解决这些问题。其核心是强大的姿态估计策略,通过考虑具有高效分层方法的RGB-D输入的完整历史,针对全局摄像机姿态优化每帧。我们消除了对时间跟踪的严重依赖,并且不断地将其定位到全局优化的帧。我们提出了一个可并行化的优化框架,它采用基于稀疏特征和密集几何和光度匹配的对应关系。我们的方法估计全局最优化(即,束调整的姿势)实时,支持从总跟踪故障(即重新定位)恢复的鲁棒跟踪,并实时重新估计3D模型以确保全局一致性;都在一个框架内。我们优于最先进的在线系统,质量与离线方法相同,但速度和扫描速度前所未有。我们的框架导致尽可能简单的扫描,使用方便和高质量的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值