基于VR拼接服务开发MEC应用
您在体验过程中有任何疑问,都可以在此留言反馈>>
1. 介绍
5G、MEC边缘计算及AI人工智能的快速应用,使能VR实时拼接新方案:多路原始流回传到MEC,通过高密算力实现实时、高质量VR内容拼接,再低时延分发到终端用户。
您将完成什么?
在本次CodeLab中,您将调用VR实时拼接服务接口,完成一组图片序列拼接,输出VR全景图片序列。
您将学会什么?
技能要求
2. 什么是VR拼接?
VR拼接通过将来自多个不同视角相机的画面变换到统一坐标系,无缝融合成一张宽视野图像。传统的VR内容制作通常使用4路、6路或8路相机拍摄,由一体机一站式采编,或者外部工作站近端拼接。
图1 当前VR采集拼接流程
受限于终端算力,难以实现高码率、高分辨率内容制作,拼接实时性难以保证,且单站成本较高,阻碍VR业务普及。
3. 基于MEC的360°VR全景实时拼接服务
图2 基于MEC的360°VR全景拼接流程
基于5G MEC的360°VR全景实时拼接服务,将多路视频源流上行汇聚注入到MEC上的拼接Pipeline中,通过自适应参数估计和标定,智能视频精细缝合以及鬼影消除技术,实现8K@30fps甚至更高画质的全景视频输出。开发者调用MEC VR全景实时拼接服务,可以快速开发高画质VR视频相关应用。
<span id="_oume30bphe" class="anchor"></span>
4. 设置开发环境
开发环境
- 操作系统:Linux或Windows均可;
- 编辑软件:Pycharm
- 浏览器:Chrome
本次样例的运行依赖Python环境,开发者可以根据自己的喜好在Linux或Windows上安装,建议使用Python3.3以上版本,Windows用户可以通过https://www.python.org/downloads/ 下载合适的版本进行安装,Linux用户(以Ubuntu为例)可以通过系统命令apt-get install python3完成安装。

以Windows环境为例,安装完成后可以通过cmd命令行输入 python --version 查看当前的版本

本次样例通过Python requests库提交API请求,可以通过pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests 完成一键式安装

下载样例项目
浏览器访问样例项目代码仓库5G_VR,参考下图,依次点击"code"、"app",再移动鼠标至主窗口,文件app.py右侧,点击页面高亮下载按钮,将样例工程文件下载到本地。

启动样例项目
以本地Python调试为例,打开Pycharm程序,点击Open按钮,选择上步操作保存到本地的"app.py"文件,确认无误后点击OK按钮,导入项目文件。

图3开发环境配置
5. 数据预处理
VR拼接服务支持视频流和图片序列处理,本次CodeLab提供图片序列拼接体验。为简化体验流程,已完成素材预处理及参数标定。
VR拼接服务定义资源素材结构:每组图片序列以独立文件夹保存;输入序列中逐帧图片按子目录存放,以%0000d方式命名;每帧多路图片以顺时针编号并保存在上述子目录,如图4示例。本次CodeLab提供3组素材,按media1、media2、media3命名,每组素材存放25帧图片,即以00001为起始,00025结束;每帧图片由6路相机输出6张图片。

图4 图片序列文件树
6. 初始化参数配置
本次体验中,您需要指定输入及输出图片序列的存放路径(相对默认/home/),及输出分辨率参数,其宽高比为2:1,输出分辨率高度不大于输入分辨率高度。
您需指定提交拼接的起始帧序号及结束帧序号,若指定拼接帧序号超出input目录下的文件序号,取实际最小/大帧序号作为起始帧序号。VR拼接服务直接取input目录下图片分辨率参数使用,无需指定图片序列路数及输入图片分辨率。

图5拼接参数初始化定义
以输出8K全景图像为例,服务器home目录media1文件夹已包含intput、output目录,分别对应输入、输出文件夹;及config文件夹下circle.json文件,对应标定参数;”1”, ”25”参数表示完成1至25帧的图片拼接。
7. 程序编写及调测
您可通过Restful API向MEC服务器stitch API传递配置参数,发起拼接服务调用。

图6 stitch API拼接服务调用
确认上述编码无误后,可通过菜单栏“Run”→“Run…”或工具栏的三角形图标运行程序,程序执行成功后将在屏幕中返回success状态,并输出本次访问的专属链接,用于拼接输出的全景图片查阅。

图7 拼接应用程序运行
系统完成本体验预置素材的拼接处理大约耗时6-8秒,其中数据处理流程如图8所示。因素材数据量较大,IO操作比较耗时,可以通过status获取任务的状态,如遇系统繁忙,系统将返回busy状态,请在8-10秒后重试。实际视频业务一般由显卡硬解码后直接加载到显存,处理时延1s以内,满足实时业务要求。

图 8 图片序列拼接数据流
8. 浏览生成的全景图片
预览拼接结果
您可以通过Chrome浏览器访问本次API调用生成的专属链接,默认初始界面如下,您可以通过右键选择“小行星视角”或“正常视角”,也可以通过双击进入全屏模式,通过拖动鼠标切换视角

图9 全景图片浏览正常视角

图10 全景图片浏览小行星视角
![]()
图11 全屏模式预览图片细节
9. 恭喜您
祝贺!您已经成功地完成VR全景实时拼接程序开发与体验,感谢您的参与!
10. 参与互动赢好礼
完成Codelab发布心得和截图,可赢取奖品。
基于VR拼接服务开发MEC应用
您在体验过程中有任何疑问,都可以在此留言反馈>>
1. 介绍
5G、MEC边缘计算及AI人工智能的快速应用,使能VR实时拼接新方案:多路原始流回传到MEC,通过高密算力实现实时、高质量VR内容拼接,再低时延分发到终端用户。
您将完成什么?
在本次CodeLab中,您将调用VR实时拼接服务接口,完成一组图片序列拼接,输出VR全景图片序列。
您将学会什么?
<span id="_w7akf9d42zqu" class="anchor"></span>如何进行VR拼接服务的参数初始化配置
如何完成VR拼接服务的接口调用及输出结果确认
技能要求
2. 什么是VR拼接?
VR拼接通过将来自多个不同视角相机的画面变换到统一坐标系,无缝融合成一张宽视野图像。传统的VR内容制作通常使用4路、6路或8路相机拍摄,由一体机一站式采编,或者外部工作站近端拼接。
受限于终端算力,难以实现高码率、高分辨率内容制作,拼接实时性难以保证,且单站成本较高,阻碍VR业务普及。
3. 基于MEC的360°VR全景实时拼接服务
基于5G MEC的360°VR全景实时拼接服务,将多路视频源流上行汇聚注入到MEC上的拼接Pipeline中,通过自适应参数估计和标定,智能视频精细缝合以及鬼影消除技术,实现8K@30fps甚至更高画质的全景视频输出。开发者调用MEC VR全景实时拼接服务,可以快速开发高画质VR视频相关应用。 <span id="_oume30bphe" class="anchor"></span>
4. 设置开发环境
开发环境
本次样例的运行依赖Python环境,开发者可以根据自己的喜好在Linux或Windows上安装,建议使用Python3.3以上版本,Windows用户可以通过https://www.python.org/downloads/ 下载合适的版本进行安装,Linux用户(以Ubuntu为例)可以通过系统命令apt-get install python3完成安装。
以Windows环境为例,安装完成后可以通过cmd命令行输入 python --version 查看当前的版本
本次样例通过Python requests库提交API请求,可以通过pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests 完成一键式安装
下载样例项目
浏览器访问样例项目代码仓库5G_VR,参考下图,依次点击"code"、"app",再移动鼠标至主窗口,文件app.py右侧,点击页面高亮下载按钮,将样例工程文件下载到本地。
启动样例项目
以本地Python调试为例,打开Pycharm程序,点击Open按钮,选择上步操作保存到本地的"app.py"文件,确认无误后点击OK按钮,导入项目文件。
图3开发环境配置
5. 数据预处理
VR拼接服务支持视频流和图片序列处理,本次CodeLab提供图片序列拼接体验。为简化体验流程,已完成素材预处理及参数标定。
VR拼接服务定义资源素材结构:每组图片序列以独立文件夹保存;输入序列中逐帧图片按子目录存放,以%0000d方式命名;每帧多路图片以顺时针编号并保存在上述子目录,如图4示例。本次CodeLab提供3组素材,按media1、media2、media3命名,每组素材存放25帧图片,即以00001为起始,00025结束;每帧图片由6路相机输出6张图片。
图4 图片序列文件树
6. 初始化参数配置
本次体验中,您需要指定输入及输出图片序列的存放路径(相对默认/home/),及输出分辨率参数,其宽高比为2:1,输出分辨率高度不大于输入分辨率高度。
您需指定提交拼接的起始帧序号及结束帧序号,若指定拼接帧序号超出input目录下的文件序号,取实际最小/大帧序号作为起始帧序号。VR拼接服务直接取input目录下图片分辨率参数使用,无需指定图片序列路数及输入图片分辨率。
图5拼接参数初始化定义
以输出8K全景图像为例,服务器home目录media1文件夹已包含intput、output目录,分别对应输入、输出文件夹;及config文件夹下circle.json文件,对应标定参数;”1”, ”25”参数表示完成1至25帧的图片拼接。
7. 程序编写及调测
您可通过Restful API向MEC服务器stitch API传递配置参数,发起拼接服务调用。
图6 stitch API拼接服务调用
确认上述编码无误后,可通过菜单栏“Run”→“Run…”或工具栏的三角形图标运行程序,程序执行成功后将在屏幕中返回success状态,并输出本次访问的专属链接,用于拼接输出的全景图片查阅。
图7 拼接应用程序运行
系统完成本体验预置素材的拼接处理大约耗时6-8秒,其中数据处理流程如图8所示。因素材数据量较大,IO操作比较耗时,可以通过status获取任务的状态,如遇系统繁忙,系统将返回busy状态,请在8-10秒后重试。实际视频业务一般由显卡硬解码后直接加载到显存,处理时延1s以内,满足实时业务要求。
图 8 图片序列拼接数据流
8. 浏览生成的全景图片
预览拼接结果
您可以通过Chrome浏览器访问本次API调用生成的专属链接,默认初始界面如下,您可以通过右键选择“小行星视角”或“正常视角”,也可以通过双击进入全屏模式,通过拖动鼠标切换视角
图9 全景图片浏览正常视角
图10 全景图片浏览小行星视角
图11 全屏模式预览图片细节
9. 恭喜您
祝贺!您已经成功地完成VR全景实时拼接程序开发与体验,感谢您的参与!
10. 参与互动赢好礼
完成Codelab发布心得和截图,可赢取奖品。