facebook surround360 环境配置,编译,测试(生成双目立体全景图)
2018-03-05 22:12
357 查看
surround360是facebook开源的一套集采集,渲染与一体的全景内容制作解决方案,其中使用到了诸多开源库,花了几天时间才把它跑通,下面就记录一下其中的一些注意事项。
开源代码:https://github.com/facebook/Surround360
测试样例:http://surround360.hacktv.xyz/sample/sample_dataset.zip
python: ubuntu系统自带,python 2.7
其他:内存8G,硬盘40G。(在编译中间如果内存比较小可能会比较慢或者出错)
其他重要参考:http://blog.csdn.net/sunyolanda_cs/article/details/52448399
folly: facebook的C++底层库,对boost的扩展和进一步封装。
ceres: 解决优化问题的数值计算库。(google从2010年开始使用)
opencv: Intel的计算机视觉库。(视觉研究人员必备技能)
ffmpeg: 视频处理库。集音/视频采集,编码/解码/转码,推流,播放等功能为一体的开源库,音视频相关人员必备,市面上的播放器基本都是拿它稍微改一下就直接用了。
colmap: 实现Structure-from-Motion (SfM) 和 Multi-View Stereo (MVS) 的开源库。
Goory: 一个可以很容易把python的命令行输入转化为图形界面的开源库。
PIL:python图像处理库(基本算是官方的图像处理库了)
LLVM/Halide: 用于程序优化的两个库。LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time)。Halide基于LLVM,可以让我们使用简单的方法写出高性能的图像处理算法。(加入这两个库之后代码编译会慢许多,而且surround360中有一个程序(Unpaker)是依赖于这两个库的,虽然指导手册中这两个是可选的,不过建议不要跳过)。
**.so not found: 虽然编译指南已经尽可能把依赖库写出来了,但是还有可能缺失一些库,如果编译过程中发现一些库缺失,那么就将它装上:使用apt-get或者pip。或者检查 边境变量LD_LIBRARY_PATH,看看是不是路径没有加进去。
LLVM使用官方文档中的编译方法似乎会失败,参考这里:http://blog.csdn.net/fan2273/article/details/76439042
如果在make时候出现错误,错误中包含”Permission Denied”,说明是make的权限不够,请使用sudo make.
surround360_render/script文件夹下是python脚本,在安装了wxpython之后,可以以图形界面呈现。
出现如下图形界面
到这里说明我们的程序编译运行都没有问题了。
重要参考: http://blog.csdn.net/sunyolanda_cs/article/details/52448606
说明:这里facebook只给出了两帧的数据,而且是unpack之后的数据,所以如果我们要得到全景图,只需要执行渲染那一步。也就是软件中的step2。
参数说明
3. 参数配置
拼接渲染一帧8K双目立体全景图的配置如下图所示
- step2实际上并没有用到Data Directory中的文件夹,但是还是要给一个文件夹。
- 新建的output 文件夹中有如下的目录结构,其中cam一共是到16。png图片来自samples_dataset/vid/000000/isp_out.
- 点击start就开始拼接渲染,在i7@4.0G的机子上大约需要45s.
运行结果
output文件夹
eqr_frames
cube_frames
项目介绍与测试样例
官网:https://facebook360.fb.com/facebook-surround-360/开源代码:https://github.com/facebook/Surround360
测试样例:http://surround360.hacktv.xyz/sample/sample_dataset.zip
环境配置
操作系统: ubuntu 16.04 (其他版本会多很多坑,可以考虑使用虚拟机,我就是用的WMware虚拟机)python: ubuntu系统自带,python 2.7
其他:内存8G,硬盘40G。(在编译中间如果内存比较小可能会比较慢或者出错)
编译
官方指南:https://github.com/facebook/Surround360/tree/master/surround360_render其他重要参考:http://blog.csdn.net/sunyolanda_cs/article/details/52448399
重要依赖库简介
gflags/glog/gtest: google开源的命令行解析库,应用程序日志库,C++单元测试框架。folly: facebook的C++底层库,对boost的扩展和进一步封装。
ceres: 解决优化问题的数值计算库。(google从2010年开始使用)
opencv: Intel的计算机视觉库。(视觉研究人员必备技能)
ffmpeg: 视频处理库。集音/视频采集,编码/解码/转码,推流,播放等功能为一体的开源库,音视频相关人员必备,市面上的播放器基本都是拿它稍微改一下就直接用了。
colmap: 实现Structure-from-Motion (SfM) 和 Multi-View Stereo (MVS) 的开源库。
Goory: 一个可以很容易把python的命令行输入转化为图形界面的开源库。
PIL:python图像处理库(基本算是官方的图像处理库了)
LLVM/Halide: 用于程序优化的两个库。LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time)。Halide基于LLVM,可以让我们使用简单的方法写出高性能的图像处理算法。(加入这两个库之后代码编译会慢许多,而且surround360中有一个程序(Unpaker)是依赖于这两个库的,虽然指导手册中这两个是可选的,不过建议不要跳过)。
编译过程中的一些小BUG
多线程make的问题: 由于有几个库编译非常耗时,所以可以考虑使用多线程make(make -j8使用8个线程编译),但是事实证明多数程序猿在编写makefile或者cmakelist时并没有好好考虑多个target的依赖性问题,我在编译过程中遇到好几次使用多线程编译失败的情况,所以,如果你在使用多线程编译是出现了error,可以实时单线程。**.so not found: 虽然编译指南已经尽可能把依赖库写出来了,但是还有可能缺失一些库,如果编译过程中发现一些库缺失,那么就将它装上:使用apt-get或者pip。或者检查 边境变量LD_LIBRARY_PATH,看看是不是路径没有加进去。
LLVM使用官方文档中的编译方法似乎会失败,参考这里:http://blog.csdn.net/fan2273/article/details/76439042
如果在make时候出现错误,错误中包含”Permission Denied”,说明是make的权限不够,请使用sudo make.
样例测试
软件运行
编译成功之后,在surround360_render/bin目录下会有14个二进制文件,script文件夹中的脚本会来调用这里的二进制文件。surround360_render/script文件夹下是python脚本,在安装了wxpython之后,可以以图形界面呈现。
sudo pip install -U \ -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \ wxPython cd surround360_render/script python run_all.py
出现如下图形界面
到这里说明我们的程序编译运行都没有问题了。
样例使用
样例下载地址:http://surround360.hacktv.xyz/sample/sample_dataset.zip重要参考: http://blog.csdn.net/sunyolanda_cs/article/details/52448606
说明:这里facebook只给出了两帧的数据,而且是unpack之后的数据,所以如果我们要得到全景图,只需要执行渲染那一步。也就是软件中的step2。
参数说明
参数 | 说明 |
---|---|
Data Directory | 数据流文件(把多路数据压缩为一路数据,这一路数据就是bin文件,猜测) |
Des Directory | 输出文件夹,包括raw 图像,rgb图像,程序配置,蒙版,log,全景图输出,cube映射输出都在这里 |
Start Frame/ Frame Count | 渲染的帧数 |
Quality | 输出视频/全景图的分辨率 |
Cubemap Format | 立方体映射的格式,暂时不清楚区别 |
Cudamap Face Width/Height | 全景图立方体映射每一个面的宽高 |
save_debug_images/save_raw | 是否保存程序的一些中间输出,是否保存bmp格式图像 |
steps_unpack | 是否执行第一步,也就是将bin文件解压为rgb文件 |
steps_render | 是否执行第二步,也就是将多张rgb渲染为双目立体全景图 |
steps_ffmpeg | 是否执行第三步,将多帧双目立体全景图使用ffmpeg合成为一个视频流 |
enable_top/enable_bottom | 是否添加顶部/底部的摄像头(这三个相机是鱼眼镜头,顶部一个,底部两个) |
enable_pole_removal | 是否使用去相机支架算法(底部两个相机,一个被相机支架挡住的部分另一个可以看到,通过融合可以将支架在输出中去掉) |
dryrun | 不执行step,三个步骤都不执行 |
verbose | 还不是很懂这个参数是什么意思 |
拼接渲染一帧8K双目立体全景图的配置如下图所示
- step2实际上并没有用到Data Directory中的文件夹,但是还是要给一个文件夹。
- 新建的output 文件夹中有如下的目录结构,其中cam一共是到16。png图片来自samples_dataset/vid/000000/isp_out.
- 点击start就开始拼接渲染,在i7@4.0G的机子上大约需要45s.
output |--rgb |--cam0 |--000000.png |--cam1 |--000000.png |--cam2 |--000000.png |--cam3 |--000000.png |--cam4 |--000000.png |--cam5 |--000000.png |--cam6 |--000000.png
运行结果
output文件夹
eqr_frames
cube_frames
相关文章推荐
- [cocos2d-x]环境配置、交叉编译及安卓项目的生成
- 【cocos2d-x入门实战】环境配置、交叉编译及安卓项目的生成
- Ant环境配置、生成测试报告以及问题的解决
- 【cocos2d-x入门实战】环境配置、交叉编译及安卓项目的生成
- Facebook Surround 360 环境配置指南(3D立体全景)
- ProtocolBuffer for Objective-C 运行环境配置(真正测试过的3.0版本编译)
- java环境配置,命令行编译和生成jar包
- 【cocos2d-x入门实战】环境配置、交叉编译及安卓项目的生成
- Maven 利用Profile属性配置,生成不同环境(生产、测试)下的发布包
- 有关cygwin中JAVA的中文环境编译测试(用gcj生成.exe)
- 测试环境服务器配置、生成环境服务器配置、测试机配置
- 【cocos2d-x入门实战】环境配置、交叉编译及安卓项目的生成
- libCURL开源库在VS2010环境下编译安装,配置详解 (测试通过)
- Windows环境下设置Qt编译环境 - 关于Qt的静态链接库的配置和生成方法
- 在linux 上编译生成windows上运行的exe程序,交叉编译环境的配置( 平台:gentoo linux)
- 使用Maven自动打包配置文件生成开发环境,测试环境,生产环境
- 【cocos2d-x入门实战】环境配置、交叉编译及安卓项目的生成
- 【cocos2d-x入门实战】环境配置、交叉编译及安卓项目的生成
- Maven项目之Spring.profile.开发.测试.生产环境的配置和切换之一键部署
- java基础—配置java环境以及编译简单的java程序