APP下载

基于X.264的嵌入式无线视频传输单元及其优化

2015-06-06

西南科技大学学报 2015年1期
关键词:实时性嵌入式编码

赵 创 张 华 王 姮 张 静

(西南科技大学特殊环境机器人技术四川省重点实验室 四川绵阳 621010)



基于X.264的嵌入式无线视频传输单元及其优化

赵 创 张 华 王 姮 张 静

(西南科技大学特殊环境机器人技术四川省重点实验室 四川绵阳 621010)

针对无线视频传输中因视频编码产生的图像清晰度差、实时性弱等问题,设计了一种基于X.264的嵌入式无线视频传输单元。该无线视频传输单元基于Linux操作系统,以S3C2440A处理器为核心,利用Linux内核提供的视频数据采集接口V4L2控制摄像头采集视频,之后经过X.264编码的视频流通过WiFi无线网络和RTP流媒体传输协议传送至PC客户端显示。针对X.264编码中UMH运动估计算法的不足,采用3×3搜索模板和动态搜索窗口策略,改进的UMH算法有效降低了算法的编码时间和运动估计时间,提高了编码过程的实时性。实验表明,在不影响图像质量和码率的前提下,应用优化算法的无线视频传输单元,运动估计时间效率最大提高32.9%,编码时间效率最大提高9.18%。

视频传输 嵌入式系统 V4L2 X.264 RTP UMH算法

稳定可靠的视频图像无线传输方法及其在嵌入式系统中的实现技术,在安防、遥控机器人、视频会议等众多应用领域都有重要应用意义。

伴随视频编解码技术高速发展,X.264编码器大量运用在视频传输系统中,但是X.264编码器采用高精度的运动矢量,计算量急剧增加,运动估计消耗时间占到整个编码过程的60%~80%。因此,对实时性要求较高的视频传输单元而言,研究快速运动估计算法具有重大意义。文献[1]提出的模式判别算法采用跳过不必要的块模型,降低运算量,进而降低编码时间。文献[2]提出的基于螺旋子集匹配误差法,采用螺旋子集匹配误差搜索算子,利用减少搜索点数,降低计算的时间复杂度,提高编码效率。目前,X.264编码器的运动估计算法采用的是2003年清华大学提出的非均匀十字形多层次六边形格点搜索算法(UMH)[3],它改善了失真性能,但是UMH算法使用5×5搜索模板和固定搜索窗口。针对X.264中UMH算法的编码效率的不足,本文提出了一种基于X.264嵌入式无线视频传输单元的优化方法,采用3×3搜索模板和动态搜索窗口策略,降低算法的编码时间和运动估计时间,提高编码过程的实时性。本文从整个视频传输单元的硬件、软件等方面对视频传输单元进行表述,并通过实际的测试来验证系统的正确性。

1 系统总体设计

本文采用优化的UMH算法设计并实现基于X.264编码无线视频传输单元。无线视频传输单元主要包括摄像头采集原始视频、X.264对视频编码和RTP传输视频流等功能。在原始视频采集过程中,需要V4L2接口调用摄像头驱动程序,操作USB摄像头,完成JPEG格式图像采集;其次需要移植LibJPEG库完成JPEG图像格式转化,以获得可直接用于X.264编码的YUV420格式;最后把经过X.264编码的视频流通过RTP/RTCP协议传输到PC客户端显示。整个无线视频流程如图1所示。

图1 基于X.264无线视频传输流程图
Fig.1 The X.264 based wireless video transmission chart

2 系统硬件平台

系统硬件部分主要由S3C2440A微处理器芯片、OV7725摄像头、Lb-link无线WiFi模块、256 M NandFlash、64 M SdRam、USB HUB、LCD接口、JTAG接口、RS232接口、以太网接口等部分组成。系统硬件设计框架如图2所示。

3 系统软件设计

系统软件主要包括引导加载程序Bootloader、Linux内核、设备驱动程序和应用层程序。系统软件的总体设计框图如图3所示。

图2 系统硬件设计框架Fig.2 The system hardware’s design framework

图3 系统软件设计框架Fig.3 The system software’s design framework

3.1 V4L2视频采集模块设计

在Linux 操作系统下,进行视频图像采集所使用的接口是Video4Linux2(V4L2)。V4L2是 Linux 系统下视频设备驱动程序,为上层应用程序提供了一系列的接口函数,可实现对USB摄像头、视频捕捉卡等视频设备的操作。考虑到所采用型号为OV7725的USB摄像头输出的码流是JPEG格式并不支持YUV420格式以及嵌入式开发板的处理器主频仅为400 MHz,在对其进行X.264的编码时难以达到系统实时性,因此采用图像裁剪策略,通过图像裁剪以及RGB到YUV格式转换,减少视频数据量,降低转化时间复杂度,缩短转化消耗时间。

JPEG解码后所获得RGB图像大小为320×240,根据图像裁剪策略,从存储的RGB缓冲区中提取视频信息,使用循环遍历把320×240大小的图片从中心截取为176×144的RGB格式图片。由于本文中使用YUV420格式图像,因此需要完成RGB颜色空间到YUV颜色空间的转化,转化公式如式(1)所示。

(1)

根据提出的图像裁剪策略以及V4L2的设计规范,可得到基于V4L2视频采集流程如图4所示。

图4 基于V4L2视频采集流程Fig.4 The V4L2-based video capture process

3.2 优化UMH算法的X.264视频编码模块设计

2003年3月,ITU-T 和 ISO/IEC 共同发布了H.264视频编码标准,与以往的视频编码标准相比,H.264具有较高的数据压缩比率,在同等带宽的条件下,视频质量提高2~4倍,同时其具有更好的网络亲和性,加强了对网络传输的误码和丢包处理能力[4]。结合嵌入式的特点,本文采用X.264编码器进行视频编码。在X.264编码过程中,运动估计时间大约占到总编码时间的60%~80%,在不影响图像质量和码率的前提下,设法减少编码算法的运动估计消耗时间就能有效提高视频编码的效率,全搜索算法采用搜索窗口中穷举匹配当前编码图像块,这样虽然能够获得最高的编码效率,但是其时间复杂度非常高,因此提出了一些快速运动估计算法来降低视频编码的时间复杂度,比如采用四步搜索法[5]、菱形搜索法[6]、六边形搜索法[7]等,但是这些算法在不同程度上会陷入局部最优。2003年清华大学提出UMH算法是X.264编码器标准运动估计算法之一,该算法能够解决局部最优问题。在X.264编码器中,UMH算法代码位于x264_me_search_ref()函数中,不同的宏块采用不同的阈值,16×16宏块设置的阈值分别是threshold1=2 000,threshold2=500。

UMH搜索算法实现的基本步骤如下:

Step 1:搜索起始点预测。

在x264_mb_predict_mv_16x16()函数中根据参考帧与运动矢量的空间相关性,计算当前宏块的左、中、右3个相邻宏块的运动矢量(mva,mvb,mvc)的中值(mvp)作为运动预测矢量,在加上参考帧的原点mvo=(0,0)的运动矢量,以上的5个点运动矢量(mvo,mva,mvb,mvc,mvp)作为候选点,计算出它们的SAD值,SAD值的最小点标记为最小误差点(MBD),并以该点(mv)作为搜索起始点。

Step 2:小菱形模板搜索。

以Step1中的搜索起始点(mv)为中心进行小菱形模板搜索(小菱形搜索模板如图5所示),如果搜索起点不等于(0,0),还要以(0,0)点为中心进行小菱形搜索,计算出MBD点以及对应的SAD值,如果SAD的值小于threshold1,跳转Step3,否则跳转Step5。

Step 3:中菱形搜索。

以Step2的MBD点为中心,以中菱形模板(中菱形搜索模板如图6所示)进行搜索,得到新的MBD和对应的SAD值,如果SAD的值小于threshold2,则结束搜索,那么当前MBD点就是最优匹配点,否则转Step 4。

Step4:非对称十字模板和正八边形搜索。

以Step3的MBD点位中心,采用非对称十字模板(搜索长度横轴是纵轴的2倍,非对称十字模板搜索如图7所示)进行搜索,可以得到新的MBD点,之后再以该点为中心进行正八边形搜索(正八边形搜索如图8所示),如果MBD点不改变,则结束搜索,否则转Step5。

Step5:非对称十字模板和5×5模板搜索。

以上面的MBD点为中心,采用非对称十字模板搜索,计算出MBD点,以该点为中心进行5×5的逐步搜索(5×5搜索模板如图9所示),如果计算出的MBD值保持不变,转Step7,否则转Step6。

Step6:扩展六边形搜索。

以Step5得到的MBD点为中心,大六边形模板搜索(扩展六边形搜索模板如图10所示),开始搜索半径是4,以后逐步加4进行搜索,直到搜索边界为止,再转Step7。

Step7:以上面的MBD为中心,完成一次六边形搜索的全部过程。

通过分析UMH算法的搜索过程,可以发现UMH算法采用复合式模板搜索,由中心点分级向外扩展搜索,最大限度地避免了搜索点的重复计算。但深入分析后发现UMH算法还是存在以下不足:

(1)采用5×5逐步搜索模板,急剧增加搜索点数,增大运算量。

(2)采用固定窗口,在X.264 编码器中,运动估计中分块有 4×4 到16×16 等7种不同的大小,显然对于不同大小的分块使用同样大小的搜索窗口不合理,对于小分块来讲这样必然会增大运动估计的时间复杂度,而对于大分块降低运动估计的时间复杂度。

针对不足(1),根据对标准视频序列运动矢量

统计,80%的运动矢量集中在5×5像素范围内,但是在中间3×3像素范围内运动矢量就高达70%,虽然5×5模板运动矢量比3×3模板高10%,但是搜索点数却增加了64%,增大运算量,因此本文采用3×3模板,只需修改模板参数为3即可。

针对不足(2),本文采用了一种动态搜索窗口的优化措施。针对不同的当前块每次动态生成新的搜索窗口,可以采用中值预测(MVPu)和上层预测(MVPu)进行动态搜索窗口大小。如图11所示,其中:A:原始所搜窗口大小 ;B:动态搜索窗口大小 ;C:动态搜索窗口中固定窗口大小 ;D:动态搜索窗口中可变窗口大小 。

图11 动态搜索窗口Fig.11 Dynamic search window

动态搜索窗口计算步骤如下:

Step1:计算中值预测值与上层预测值在x,y分量的绝对差值。

(2)

Step2:选取在x,y分量上的绝对差值中的最大值作为动态搜索部分的值。

variable_part=max(mvx,mvy)

(3)

Step3:动态搜索窗口大小就等于固定部分与动态部分之和。

dynamic_search_range=fixed_part+

variable_part

(4)

3.3 基于RTP/RTCP协议的视频数据传输

实时性和传输质量是无线视频网络传输的重点,在ISO模型中,实时传送协议(Real-timeTransportProtocol/Real-timeTransportProtocol,RTP/RTCP)、实时流协议(Real-timeStreamingProtocol,RTSP)等传输协议是保证视频传输质量的关键因素之一,本文选用RTP/RTCP流媒体协议。

RTP是针对音视频等具有实时性的数据提供端对端传送服务的协议,其目的是保证时间信息和实现流同步。RTP一般建立在用户数据包协议UDP上,RTP只能保证数据实时传输,但是这种实时传输不可靠,RTP协议一般要求RTCP协议相互配合来保证传输质量[9],RTP报文封装如图12所示。

在嵌入式开发中,可以通过移植RTP库为应用

程序编写提供RTP接口。具体的实现过程为:RTP会话的初始化,申请会话流结构体,设置服务器IP、端口号、RTP类型、分组负载大小、时钟频率等;RTP分组初始化,分配缓冲区,打开Socket使用UDP传输;IP数据包的发送,把缓冲区的数据RTP分组,并打包加上头部信息、时间戳等信息,最后交给IP发送到网络。

图12 RTP 报文封装Fig.12 RTP message encapsulation

4 实验平台搭建及结果分析

4.1 实验平台搭建

为验证所设计的无线视频传输单元,搭建实验平台。通过无线网卡Lb-Link搭建无线网络环境,在ARM视频采集端设置IP 地址为 192.168.2.1,端口号为 5 000,启动传输单元测试程序。在PC客户端,本文选择了一款免费开源的VLC来测试,VLC 可以作为网络流媒体播放器,支持H.264标准。

4.2 实验结果分析

基于3×3模板和动态搜索窗口的UMH改进算法,选用3种不同的qcif测试序列进行实验:container,mobile,foreman。其中encoder_main.cfg配置文件主要配置如下:FramesToBeEncoded=100 f(编码帧数),FrameRate=30 f/s(编码帧率)。

表1比较了X.264编码器中原有的X264_ME_DIA,X264_ME_HEX,X264_ME_UMH 3种不同版本算法的编码性能。在视频质量方面,采用X264_ME_UMH算法的视频图像质量相对较高,但是在编码速度方面,X264_ME_UMH编码速度则比较缓慢,所需的编码时间要远远高于X264_ME_DIA和X264_ME_HEX消耗的时间,这主要是因为X264_ME_UMH搜索的点数高于X264_ME_DIA和X264_ME_HEX。

表1 X.264中不同算法版本的性能比较Table 1 Performances of different algorithms in X.264 encoder

表2比较了原始X264_ME_UMH算法和基于3×3模板和动态搜索窗口的改进X264_ME_UMH算法,从中可以看出,在编码码率的变化不大的情况下,改进的X264_ME_UMH算法采用在一定程度上牺牲视频图像质量为代价,换来高效的编码速度,实验结果表明,视频质量并没有很大的改变,但是运动估计时间效率提高最大为32.9%,最小为30.3%,编码时间效率提高最大为9.18%,最小为8.87%。

最终实验效果为,播放器可以获得较为清晰和流畅的画面,为解决无线视频传输中视频数据编码中的图像清晰度差、实时性弱等问题提供了新的解决方案。

表2 改进的UMH算法与原始UMH算法比较Table 2 Comparison between optimized UMH algorithm and original UMH algorithm

5 结束语

本文设计并实现了一种基于X.264的嵌入式无线视频传输单元,对嵌入式硬件平台等做了简单的介绍,重点分析了软件系统,包括V4L2视频采集模块程序设计、优化UMH算法的X.264视频编码模块设计以及RTP流媒体传输模块设计。在X.264视频编码期间,为了降低运动估计时间与编码时间,在分析UMH算法的基础上,采用了3×3模板和动态搜索窗口的策略,优化UMH算法的X.264编码器,不仅具有更好的网络亲和性,并且降低算法的时间复杂度,提高编码器的实时性。本系统构建了高实时性、低成本、低功耗的嵌入式无线视频传输平台,对于实时性和视频质量有较高要求的场合,该系统具有一定的应用价值。

[1] ELYOUSFI A, TAMTAOUI A, BOUYAKHF EL H. Fast mode decision algorithm for intra prediction in X.264/AVC video coding[J]. International Journal of Computer Science and Network Security, 2007, 7(1):356-362.

[2] 毛小明,鲍可进.一种基于X.264/AVC的高性能快速运动估计算法[J]. 计算机应用研究,2012,29(4) :1598-1600.

[3] CHEN Zhi-Bo, HE Yun, XU Jiang-feng. Hybridunsymmetrical cross multi-hexagon-grid search strategy for integer pel motion estimation in X.264[J]. Coding Symposium Saint-Malo, 2003. 17-22.

[4] WIEGAND T, SULLIVAN G J, BJONTEGAARD G,et al. Overview of the X.264/AVC video coding standard[J]. IEEE Transaction on Circuit and System Video Technology, 2003, 13(7):560-576.

[5] PO Lai-man, MA Wing-chuang. A novel four-step search algorithm for fast block motion estimation[J]. IEEE. On Circuits and System for video Technology. 1996.4(3):313-317.

[6] ZHU Shan, MA kai-kuang. A new diamond search algorithm for fast block-matchingmotion estimation[J]. IEEE Transactions on image processing. 2000.2(2):287-290.

[7] ZHU Ce, LIN Xiao. Hexagon-based search patten for fast block motion estimation[J]. IEEE. On Circuits and System for video Technology. 2002.12(5):349-255.

[8] CHEN Zhen-xing, SONG Yang, IKENAGA T. A dynamic search range algorithm for variable block size motion estimation in X.264/AVC[J]. IEEE Processing of 2007 6th International Conference on Information, Communications & Signal Processing. 2007.1-4.

[9] 李校林,刘利权,张杰. 基于RTP的H.264视频流实时打包传输的研究[J]. 计算机工程与科学,2012, 34(5):168-171.

[10] 毛剑飞,张杰,蒋莉. 基于改进的X.264的视频监控系统[J]. 计算机系统应用,2014, 23(4):84-90.

[11] 李勇,袁友伟,汪世瑜,徐伟雷. 运动估计UMHexagonS算法的分析与优化[J]. 杭州电子科技大学学报,2013, 33(6):49-52.

[12] 叶文龙,袁友伟,汪世瑜. X.264块匹配运动估计中UMHexagonS算法的优化[J]. 计算机工程与应用,2011,47(25):133-136.

The Embedded Wireless Video Transmission Unit Based on Optimization X.264

ZHAO Chuang, ZHANG Hua, WANG Heng, ZHANG Jing

(KeyLaboratoriesforSpecialEnvironmentRobotTechnologyofSichuanProvince,SouthwestUniversityofScienceandTechnology,Mianyang621010,Sichuan,China)

Aimed at the poor image clarity and weak real-time performance during the video transmission due to the limitation of the conventional video coding technology, a remote wireless video transmission unit based on X.264 standard was designed. With the S3C2440A microprocessor as the core chip and Linux as the operating system and using the video data acquisition interface (V4L2), the camera captures the video signal, which is then X.264 encoded and transmitted to the PC client though the wireless network and RTP streaming media protocol. The 3*3 pattern and dynamic search window has been proposed to solve the lack of the UMH motion estimation algorithm in the X.264 standard. The experimental results show that the improved UMH algorithm can greatly decrease the motion estimation time by 32.9% and improve the encoding time by 9.18% while maintaining the image quality and encoding rate.

Video transmission; Embedded system; V4L2; X.264; RTP; UMH algorithm

2014-10-22

2014四川省科技厅支撑计划项目(2014gz0021);2013四川省科技厅支撑计划项目(2013GZX0152)。

赵创(1988—),男,硕士研究生,主要研究方向为嵌入式技术。E-mail:zhaochuang0527@126.com

TP3

A

1671-8755(2015)01-0060-06

猜你喜欢

实时性嵌入式编码
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
基于SAR-SIFT和快速稀疏编码的合成孔径雷达图像配准
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
TS系列红外传感器在嵌入式控制系统中的应用
Genome and healthcare
搭建基于Qt的嵌入式开发平台
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
倍福 CX8091嵌入式控制器