您的位置:首页 > 其它

facebook surround360 环境配置,编译,测试(生成双目立体全景图)

2018-03-05 22:12 357 查看
surround360是facebook开源的一套集采集,渲染与一体的全景内容制作解决方案,其中使用到了诸多开源库,花了几天时间才把它跑通,下面就记录一下其中的一些注意事项。

项目介绍与测试样例

官网: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还不是很懂这个参数是什么意思
3. 参数配置

拼接渲染一帧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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐