APP下载

基于矩阵变换的立体视频播放技术研究

2014-09-15陈志文梁发云何小明陈海初熊根良

计算机工程与科学 2014年3期
关键词:播放器立体像素

陈志文,梁发云,何小明,陈海初,熊根良

(南昌大学裸眼立体技术与虚拟现实研究中心,江西 南昌 330031)

基于矩阵变换的立体视频播放技术研究

陈志文,梁发云,何小明,陈海初,熊根良

(南昌大学裸眼立体技术与虚拟现实研究中心,江西 南昌 330031)

立体图像按存储方式不同分为立体图片和视频,把左右格式立体图像准确传输到裸眼3D显示器的亚屏幕,是3D播放的关键技术。针对不同存储格式的立体图像,使用矩阵变换及视频融合算法,在FFmpeg函数库基础上构建立体视频播放器。实验表明该算法能将立体图像正确映射到左右眼亚屏幕。

立体显示;矩阵变换;3D播放器;立体度

1 引言

获取立体图像的成像系统是模拟人类的视觉设计的,用两台保持一定间距的摄像机同步采集场景,然后将图像保存为图片或视频形式[1]。

立体图像的存储形式分为分别存储的左右眼图像文件或单文件的视图组合形式。组合格式立体视频左右眼视频帧一一对应,剪辑方便且播放时无需考虑帧不同步造成的画面紊乱,应用最广泛。

与二维图像的显示方法不同,裸眼式3D显示器使用左右眼图像像素间隔排列亚屏幕方式在屏幕上显示双眼画面,为了解决图像快速融合的算法,满足裸眼3D画面的显示要求,需要对图像数据进行适当的变换和处理[2]。为满足工程应用和网络播放的需求,本文重点研究基于矩阵变换的立体图像融合算法,并以图像处理函数库FFmpeg为基础开发出适用的3D播放器。

2 裸眼立体显示原理

裸眼3D技术是近几年发展起来的光电显示技术,观看者无需佩戴眼镜就可以感受到立体画面的深度感和临场感。在结构上,裸眼立体显示器采用LCD作为显像层,使用柱状透镜(Lenticular Lens)技术、光屏障式(Barrier)技术或指向光源(Directional Backlight)等方法将具有视差的立体图像对分别传送到左右眼中,经过大脑视觉神经中枢处理产生立体效果[3]。

根据光学原理,左右眼的图像在屏幕上按列交错排列。为了把左右视图传送到奇、偶列的像素上,可以使用视频数字处理电路或者软件方法对左右格式图像进行处理[4],实现图像和像素的对应传输。立体图像显示原理如图1所示。

Figure 1 Principle of stereoscopic image display图1 立体图像显示原理

3 立体图像处理

立体图像包含了左右眼的全部信息,其存储方式可分为左右眼图像分别存储的双文件形式或左右图像组合形式的单文件存储,视频立体图像还需包含音频信息。全宽左右图像在进行画面融合时需要按列间隔重新采样图像,而半宽左右图像在存储前已完成间隔采样。

以一幅分辨率为m×2n的全宽左右格式立体图片为例,左右眼画面的分辨率分别为m×n,可用像素矩阵式(1)和式(2)表示[5]。

(1)

(2)

在显示器上播放时,经过融合算法处理后的像素可以用矩阵式(3)表示。

P3D=

(3)

当n为奇数时,k=n,n为偶数时,k=n-1。

令n维列向量:

0=(0,0,…,0)T,L1=(1,0,0,…,0)T,L2=(0,1,0,…,0)T,L3=(0,0,1,…,0)T,…,Lm=(0,0,0,…,1)T

当n为奇数时,令:

A1= (L1,0,L3,0,L5, 0,…,Ln)

可以得到3D运算公式:

(4)

n为偶数时,令:

A2=(L1,0,L3,0,L5, 0,…,Ln-1,0)

可以得到3D运算公式:

(5)

图2和图3是左右画面融合的示例。左右格式立体对由3D照相机拍摄后经过剪辑合并而成,播放时左半部分映射到奇列组成的左眼亚屏幕,右半部分映射到偶列组成的右眼亚屏幕。融合之后的立体图片宽度应是左右格式图片宽度的一半。

Figure 2 Left-Right picture图2 左右格式图片

Figure 3 Fusion of image图3 融合后屏幕画面

视频文件在播放过程中,首先对文件进行解码。解码过程是编码的逆过程,按照各帧的解码顺序对图像进行解码,解码完成后放入缓存的数据为YUV格式[6]。YUV是RGB通过矩阵变换而得到的亮度信号和色差信号,本文中以YUV420存储格式为例来研究立体视频画面融合算法。

对于分辨率为m×2n(画面行数为m,列数为2n)左右格式的视频画面,其图像可以用类似于P2DL和P2DR的m行、2n列矩阵P2D表示[7],其融合矩阵可以用m行、2n列矩阵P3D表示。

根据矩阵初等变换定理,对s×t矩阵A作一次初等列变换,相当于在A的右边乘上相应的t×t初等矩阵。对于2n阶单位矩阵E:

E=diag(1,1,…,1)2n×2n

(6)

令2n维列向量:

S1=(1,0,0,…,0)T,S2=(0,1,0,…,0)T,

S3=(0,0,1,…,0)T,…,S2n=(0,0,0,…,1)T

此时,

E=(S1,S2,S3,…,S2n)

(7)

要完成从P2D到P3D的列变换过程,应将矩阵E进行相同的列变换,即,

X=(S1,Sn+1,S2,Sn+2, …,S2n)

(8)

矩阵X上方及右方数字表示其对应的行列在变换之前所处位置。将原始像素矩阵右乘这一变换矩阵X,即可求得像素融合矩阵P3D:

P2D·X=P3D

(9)

4 立体图像播放软件实现及安卓系统移植研究

FFmpeg是开源的,可以用来记录、转换数字音、视频文件,并能将其转化为数据流的C语言程序。FFmpeg在视频格式转换和播放软件的开发中具有很大优势。本文以FFmpeg为核心设计的播放器输出的视频数据流为YUV格式,通过SDL(Simple DirectMedia Layer)平台显示。SDL是一个高效率的多媒体库,在视频播放、模拟器和很多视频游戏中应用广泛[8]。使用FFmpeg处理音频和视频流的流程如图4所示。

Figure 4 3D video processing flow图4 立体视频处理流程

在结构体AVPicture中有两个重要的数据:data[4]和linesize[4]。视频文件经过解码处理后,解码的数据以YUV420的格式存储在以data[0]为首地址的内存中,其中data[0]指向Y数据首地址,data[1] 指向U数据首地址,data[2] 指向V数据首地址。

Figure 5 Relationship between the data and YUV图5 data与YUV数据关系

在进行帧画面融合时,先将Y数据映射到矩阵P2D(width×height),右乘的矩阵X′应为height阶方阵,求出对应的矩阵P3D,再将U、V数据分别映射到矩阵P2D(width/2 ×height/2),右乘的矩阵X′应为height/2阶方阵,分别求出对应的P3D。将YUV420格式转换成RGB格式,使用SDL显示出经转换之后的视频数据即能够实现在裸眼立体显示器上的正确显示[9]。

Android系统软件一般使用Java语言进行开发。Java语言具有多平台移植的优点,同时也带来了运行效率低的缺点。在软件开发中,一些效率敏感的部分使用Java的效果不理想。为了弥补这一缺点,JNI(Java Native Interface)应运而生,JNI是为编译C/C++等本地语言而设计的编程接口,它能帮助我们从Java应用程序中调用其他语言编写的程序或方法[10]。

首先安装cygwin或Linux操作系统。cygwin是Windows下仿Linux的运行环境。将Android NDK(Native Development Kit)配置到cygwin中,NDK提供了众多工具使开发者能快速开发C/C++的动态库,并能自动将so文件和Java应用打包成apk安装文件。使用Java编写JNI接口文件。用Javah命令将其转换成h文件,命令为javah -classpath bin -d jni package_name,其中-classpath bin表示类的路径,-d jni表示该头文件存放的路径,package_name表示完整的类名。编写与该头文件同名的c文件,该文件的作用是获取视频解码数据,并实现3D运算。编写Android.mk文件,该文件对FFmpeg源代码及该c文件的编译方法做出定义,并定义生成的so文件名。完成上述工作后,打开cygwin,使用命令cd X:/prj_path进入工程目录,输入命令ndk-build,系统将根据mk文件的配置调用各代码文件并进行编译,最终将生成后缀为so的目标文件。将该文件复制到工程目录lib文件夹中。编写Java代码,该文件应该声明装载最后将要生成的so文件:System.loadLibrary("lib_name");表示程序调用该动态链接库,调用Android API实现播放器的各种功能。编写xml文件,对播放器界面进行布局。

5 算法性能实验

根据上述播放器构建方法和视频画面融合算法设计出裸眼立体播放器,代码在VS 2010环境下编译通过,图6为左右格式视频的平面播放效果。

Figure 6 Playing effect on flat-screen图6 平面播放效果

经过视频帧融合之后在裸眼3D显示器上播放的照片如图7所示,该裸眼立体液晶显示器由南昌兴亚光电科技发展有限公司研制,其分辨率为1 280×1 024、独立视区数为10个、立体度为20。

Figure 7 Fusion effect of 3D image图7 立体画面融合效果

6 结束语

左右格式立体图像根据裸眼3D显示器的亚屏幕像素排列要求,使用矩阵变换的融合算法完成画面重组,并研究了将该软件移植到安卓系统的可行性,该方法在本领域研究中具有一定的创新性,为3D技术的普及应用和网络播放提供了借鉴。

[1] Guo Lei, Li Hui-hui, Bao Yong-sheng. Image fusion[M].Beijing:Publishing House of Electronics Industry,2008.(in Chinese)

[2] Zhang Can-feng, Zhou Hai-fang. Research and implementation of the parallel algorithms of pixel-level image fusion for remote-sensing[J]. Computer Engineering & Science, 2010,32(9):34-38.(in Chinese)

[3] Wang Pan-feng,Du Yun-fei,Zhou Hai-fang,et al. A parallel fusion algorithm for remote sensing images based on complex wavelet transform[J]. Computer Engineering & Science, 2008,30(3):35-39.(in Chinese)

[4] McAllister D F. Stereo computer graphics and other true 3D technologies[M]. NJ:Princeton University Press, 1993.

[5] Cheng I, Basu A. Optimal aspect ratio for 3D TV[C]∥Proc of IEEE 3D TV Conference, 2007:1-4.

[6] Basu A, Sahabi H. Optimal non-uniform discretization for stereo reconstruction[C]∥Proc of the 13th International Conference on Pattern Recognition, 1996:755-759.

[7] Brown M Z, Burschka D, Hager G D. Advances in computational stereo[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2003,25(8):993-1008.

[8] Cheng I, Basu A. Perceptually optimized 3D transmission over wireless networks[J]. IEEE Transactions on Multimedia, 2007,9(2):386-396.

[9] Pan Y, Cheng I, Basu A. Quality metric for approximating subjective evaluation of 3D objects[J]. IEEE Transactions on Multimedia, 2005,7(2):269-279.

[10] Meng Liang, Wu Lu-shen. Method of single pixel edges detection for 3D surface measurement[J]. Journal of Nanchang University(Engineering&Technology), 2005,27(3):7-9.(in Chinese)

附中文参考文献:

[1] 郭雷, 李晖晖, 鲍永生. 图像融合[M].北京:电子工业出版社,2008.

[2] 张灿峰, 周海芳.像素级遥感图像融合并行算法研究与实现[J].计算机工程与科学,2010,32(9):34-38.

[3] 王攀峰, 杜云飞, 周海芳, 等.基于双树复小波变换的遥感图像并行融合算法[J].计算机工程与科学, 2008,30(3):35-39.

[10] 孟亮, 吴禄慎.三维图像测量中单像素级边缘的检测[J].南昌大学学报(工科版),2005,27(3):7-9.

CHEN Zhi-wen,born in 1986,MS candidate,his research interests include optical display technology,and measurement & control technology.

Study of stereoscopic video playing technique based on matrix transformation

CHEN Zhi-wen,LIANG Fa-yun,HE Xiao-ming,CHEN Hai-chu,XIONG Gen-liang
(3D & VR Research Centre,Nanchang University,Nanchang 330031,China)

According to the way of storage, stereo image is divided into 3D pictures and video. It is the key technique of 3D display that transmitting left-right format stereoscopic image to the sub-screen of the naked-eye 3D display accurately. According to the different storage formats of stereoscopic image, using matrix transformation and video fusion algorithm, a 3D video player is designed based on FFmpeg library. The experimental results show that the algorithm can map the 3D images onto the left-right eye sub-screen correctly.

stereoscopic display;matrix transformation;3D player;stereo degree

2012-10-08;

2012-12-18

江西省教育厅重点科技资助项目(GJJ09012,GJJ11001)

1007-130X(2014)03-0513-04

TP317.4

A

10.3969/j.issn.1007-130X.2014.03.024

陈志文(1986-),男,江西高安人,硕士生,研究方向为光电显示技术和测控技术。E-mail:420075327@qq.com

通信地址:330031 江西省南昌市南昌大学前湖校区南昌大学裸眼立体技术与虚拟现实研究中心

Address:3D & VR Research Centre,Qian-hu Campus,Nanchang University,Nanchang 330031,Jiangxi,P.R.China

猜你喜欢

播放器立体像素
像素前线之“幻影”2000
念个立体咒
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
“像素”仙人掌
基于STM32的MP3播放器设计
Moon ACE播放器/放大器一体机
立体登陆
ÉVOLUTIONDIGAE Style de vie tactile
炫酷立体卡
高像素不是全部