关键词:
JetsonTX2
SGM算法
CUDA
视频编码
视频传输
摘要:
随着计算机视觉和数字多媒体技术的不断发展,人们对于视频交互性以及感官体验不断提出更高的要求。由于自由视点视频允许用户在一定范围内自由地切换视角,所以用户可以有选择性地观看其感兴趣的视频内容,从而获得良好的互动感和沉浸感。自由视点视频是三维视频领域的一个重要研究方向,其中提高生成的深度图质量并兼顾立体匹配算法的处理速度是目前需要解决的主要难点。本论文设计并实现了一款基于嵌入式GPU的自由视点视频深度图像生成软件,具有良好的实际应用价值。论文的主要内容如下:(1)软件总体设计。分析深度图生成软件的功能和性能需求,选择NVIDIAJetsonTX2作为硬件开发平台;结合JetsonTX2平台特点设计软件总体框架,主要包括视频采集、深度图生成、视频编码传输三大模块,阐述各模块软件设计思路;最后搭建软硬件开发环境。(2)视频采集模块设计。首先从Jetson TX2的外设接口出发,根据自由视点视频功能需求,使用左、中、右三个平行排列的USB相机进行视频采集,左相机和中相机、中相机和右相机组成两个相机对;接着利用张正友标定法,对每个相机对采集的视频帧进行标定和畸变校正,得到相机内外参数和畸变系数;最后根据标定得到的相机外参,对每个相机对采集的视频帧进行Bouguet极线校正,使得每个相机对的视频帧呈极线对齐。(3)深度图生成模块设计。采用SGM算法来生成深度图,以兼顾局部立体匹配算法速度快和全局立体匹配算法生成深度图精度高的优点。在匹配代价计算阶段,先利用中心对称的Census变换来描述每个像素点的特征,再使用汉明距离来计算匹配代价。在代价聚合和视差计算阶段,对每个像素点采用从上往下、从下往上、从左往右、从右往左、从左下往右上、从左上往右下、从右下往左上、从右上往左下等8个方向进行扫描线优化,从而计算出视差。在视差后处理阶段,利用中值滤波来处理噪声,提高深度图像质量。针对遮挡和视差不连续产生的空洞,设计了水平插值的深度图像优化方案。由于采用了类似全局匹配算法的代价聚合策略,所以SGM算法速度较慢。因此根据SGM算法的三个阶段的特点,设计各个阶段的CUDA加速方案,最终算法整体实现了 4倍加速。(4)视频编码传输模块设计。针对立体校正后彩色视频的特点,以插件的形式设计编码管道,实现彩色视频的GStreamer编码。基于深度图像的特点,提出深度图像的ROI编码方法。采用V4L2视频编码框架,实现深度视频ROI编码。利用多线程实现多路视频编码,不同线程间互不影响。码流可以进行本地存储,也可以进行远程传输。基于TCP网络通信架构,设计多路视频码流传输协议,利用Socket编程接口实现多路视频码流传输。采用多线程传输多路视频码流,通过信号量实现线程间通信,确保每一时刻只传输一路码流。