Facebook360学习总结
工作流程
环侧
两极
- 无法形成左右两眼不同图像。
- 侧边立体视觉过渡到极点附近的2D图像。
- 用光流法与环侧拼接
顶部
Then the top image is warped according to the flow and alpha-blended (with deghosting) to composite the images.(此句不理解)
底部
三脚架两侧两个camera,用光流法拼接后去除三脚架的支撑杆。
不知为什么会在极点形成一个白斑?
代码
本段结合代码和文章,进行总结。核心源代码位于/Surround360/surround360_render/source目录下。
Calibration
分别有Color、Geometric、KeyPoint的校准,分别对应“环侧”中所述的1、4、5步。
Camera_isp
此文件下的源码,基本处理原数据,控制ISP的参数。对应“环侧”所述的第1步。
1.RawConvert.cpp include RawConvert.h RAW文件转化为16bit深度的图
RawConvert.h include BinaryFootageFile.h 二进制文件转化为RAW
BinaryFootageFile.cpp include BinaryFootageFile.h 此文件最为基础,处理二进制原始数据
2.Raw2Rgb.cpp include CameraISP.h & CameraIspPip.h RAW文件转化为Rgb格式的PNG
CameraISP.h include ColorspaceConversion.h 此文件是控制rgb色域转换
3.Unpacker.cpp include BinaryFootageFile.h & RawConvert.h & CameraIspPip.h
Optical_flow
光流法算插值,模拟camera的核心代码在此。对应“环侧”所述的第3步。
1.OpticalFlowFactory.h include PixFlow.h 工厂类
PixFlow.h include OpticalFlowInterface.h & OpticalFlowVisualization.h & KeypointMachers.h
2.NovelView.h/.cpp include OpticalFlowFactory.h & OpticalFlowInterface.h 此文件生成虚拟的camera视角
Render
渲染拼接
1.ImageWarper.h/cpp include Camera.h 图像整经,缝合环侧14camera的图像
2.RigDescription.h include Camera.h Camera.h处理单个camera;RigDescription.h处理14个环侧camera
3.PoleRemoval.h/.cpp include OpticalFlowFactory.h & OpticalFlowInterface.h 移除底部的支撑杆
Test
facebook的debug
Thirdpart
整合了json的一个读取器。suppereasyjson。把camera的各种以json格式存储的参数读入工程项目。
Util
cpp工具包
传播
facebook为媒介
- 由于facebook的浏览端是单屏幕的,所以并不需要左右眼不同的图像。
- 为了传播低延迟的需要,需要进一步压缩圆柱投影的视频。
- 压缩为立方投影,文件体积缩小25%。
- 压缩为金字塔投影,文件体积缩小80%。
变形工具
变形工具,不过这个工具是将矩形投影转化为其他类型的投影。