MPEG-4视频

2024-10-15

MPEG-4视频(共7篇)

MPEG-4视频 篇1

摘要:为了更好地保证水印的鲁棒性和不可感知性, 结合MPEG-4视频压缩原理以及人类视觉模型系统, 提出一种自适应的视频水印算法。根据I帧图像离散余弦变换 (DCT) 后的直流系数 (DC) 以及中低频系数个数, 设计自适应因子, 对不同的图像块采用不同的嵌入强度, 将水印嵌入到DCT变换后的低频系数中。实验证明, 该算法能够很好地与人类视觉系统相适应, 并对常见的攻击有很强的鲁棒性。

关键词:视觉系统模型,离散余弦变换,自适应因子,视频水印算法

近年来, 随着互联网和多媒体信息处理技术的迅猛发展, 网上多媒体信息 (图像、视频、音频、文本等) 的免费获取, 复制, 分发, 传送, 修改等已经变得极为快捷, 方便。然而, 网络给人们带来便利的同时也暴露了许多安全问题。如何防止非法复制, 有效地保护版权已经成为迫切的问题。数字水印技术[1]作为该问题的重要解决方法, 已经从图像领域发展到音频、视频和文本等领域。由于大量数字视频唱片的出现, 使得对视频数字产品版权保护的市场需求日益迫切, 因而视频数字水印技术也成为当前水印研究的热点[2,3]。

视频水印方法主要有2种:空间域方法和变换域方法。与空间域方法相比, 变换域, 尤其是离散余弦变换 (DCT) 域上的水印方法主要有以下优点:在变换域中可有效地利用人类视觉系统的特征;可与估计数据压缩标准 (如MPEG等) 兼容[4];在DCT域实现的水印算法, 计算复杂性往往较低。典型的DCT域的水印方法是文献[5]提出的基于DCT域扩频水印技术, 把满足整体分布的伪随机序列嵌入到有限个幅度较高的DCT系数上, 其主要缺点是恢复水印必须要有原始图像的参与, 并且水印的嵌入没有很好地与人的视觉特征相联系。文献[6]算法中宏块的选择虽然是基于视觉特征的, 但这些宏块被限制于规则的瓦片模式;文献[7]提出以纹理、亮度和相邻帧变化为特征的视频水印嵌入, 但是它只通过简单地统计高低纹理场景以及变动较小场景的数目, 并单独计算亮度特征, 来获得高 (低) 纹理特征, 其水印嵌入采用统一的嵌入强度, 与具体子块特征无关。

为了更好地与人类视觉系统相结合, 在此提出自适应的视频水印算法。根据人类视觉系统模型的对比特性, 结合DCT变换后的直流系数与中低频系数的个数, 设计自适应调节因子, 对不同的图像块采用不同的嵌入强度。为了进一步保证水印的鲁棒性, 在水印嵌入之前, 先利用Hybird映射对水印序列进行了置乱。

1 自适应调节因子

由人类视觉系统模型 (HVS) 的对比特性可知, 纹理越复杂, 人类视觉失真越小, 即视觉失真门限越高[8], 在不考虑背景照度的情况下, 在受纹理屏蔽的影响下, 图像纹理复杂丰富的区域能够增强水印的嵌入强度, 而图像平滑或纹理简单的区域水印的嵌入强度应该降低, 并且背景越亮, 照度阈值越高。

对于MPEG-4视频图像的I帧进行部分解码, 得到I帧图像块的DCT系数, 并用量化表对其系数进行量化。由图像的相关知识可知, 量化后非零的中频系数个数越大, 图像的高频成份越丰富, 纹理越复杂。故本文以量化后的中低频系数的个数和直流系数为参数, 设计了自适应调节因子。

对I帧部分解码后的到的图像进行分块, 使每一块的大小为8×8。对每一个8×8的图像块做离散余弦变换 (DCT) , 并用量化表对其进行量化, 得到图像块的中低频系数的个数s及量化后的直流系数DC。由于在总体分布未知, 或者数据严重偏态, 有若干异常值 (极端值) 等异常情况下, 数据均值, 标准方差都缺乏稳健性, 故本文用三均值和四分位标准差代替均值和标准方差来设计自适应调节因子如下:

α={0.5e-k[DC^/DC]r[s^-s/σ^s]c, s-s^>01-0.5e-k[DC/DC^]r[s-s^/σ^s]c, s-s^0 (1)

式中, s^DC^分别为s, DC的三均值;σ^ss的四分位标准差。

2 水印嵌入算法

2.1 水印序列的预处理

为了增强安全性和鲁棒性, 水印序列嵌入之前要进行预处理, 采用置乱的方法实现水印的加密调制, 消除水印序列之间的相关性。算法中采用Hybird映射对水印序列进行置乱。Hybird映射方法比较其他方法复杂, 但是其安全性高, 不易被攻击。式 (2) 给出了Hybird映射的表述:

xk+1={b (1-u1xk2) , -1<xk01-u2xk, 0<xk<1 (2)

利用式 (2) 得到 (0, 1) 上的伪随机序列{xk}, k=0, 1, 2, …。在本文中, 取u1=1.8, u2=2.0, b=0.85, 此时映射处于混沌状态。然后将伪随机序列{xk}, k=0, 1, 2, …, 代入式 (3) , 对其进行二值化:

xk*={0, |xk|<0.5, k=1, 2, 1, |xk|0.5, k=1, 2, (3)

此时, 二值序列{x*k, k=0, 1, 2, …}保持了混沌序列易于生成, 数量多以及对初始条件敏感等优良特性。

将该混沌序列与原始二值水印序列wk按位异或, 就形成了最终的水印信号w*k。其中Hybird映射的初值u1, u2, b可以作为水印算法的3个密钥k1, k2, k3。

2.2 水印的嵌入算法

为了保证水印的鲁棒性, 同时满足视频水印的不可感知性, 本文选择DCT变换后的低频系数进行水印的嵌入。将上面得到的水印序列按照以下步骤自适应的嵌入到MPEG-4视频码流中:

(1) 对MPEG-4视频码流进行部分解码得到I帧图像的DCT系数矩阵, 对其进行8×8分块, 得到子块图像的DCT变换矩阵I。使用量化矩阵Q′对变换矩阵I的中低频系数和直流系数量化, 按照之字型扫描统计非零的中低频系数, 得到量化后的中低频系数的个数s和直流系数DC, 计算其三均值s^DC^和四分位标准方差σ^S, 利用式 (1) 计算调节因子α

(2) 利用公式Qnew=λ·α生成新的量化矩阵, 其中λ是水印嵌入的强度。

(3) 根据式 (4) , 将水印序列嵌入到DCT变换后的低频系数中。

Ι (x, y) ´={round (Ι (x, y) /Qnew) Qnew, W=0round (Ι (x, y) /Qnew]Qnew+sign (Ι (x, y) ) Qnew/2, W=1 (4)

式中:I′是加过水印后的变换矩阵;round () 是取整运算, 取最接近的整数;sign () 是符号函数。

水印的嵌入位置是在低频位置 (0, 1) 和 (1, 0) 中随机选择一个位置加入水印, 并且这两个位置不参与中低频个数的统计。

(4) 用I′代替原I帧的变换矩阵I, 对其进行反离散余弦变换 (IDCT) , 并将其写入到视频码流中, 即得到嵌入水印后的MPEG-4视频码流。

3 水印提取算法

水印的提取不需要原始视频码流, 所以是盲提取。水印的提取步骤如下:

(1) 对嵌入水印后的视频码流进行部分解码, 得到I帧加水印序列。将I帧加过水印的图像矩阵分成大小为8×8的块, 得到图像子块的变换矩阵I′, 用量化矩阵对变换矩阵I′的中低频系数量化, 然后按照之字型扫描统计非零的中低频系数, 得到中低频系数个数s′, 计算三均值s^′, 四分位差σ^s′。利用式 (1) 计算调节因子α′。

(2) 利用公式Qnew=λ·α′生成新的量化矩阵。

(3) 利用式 (5) 提取加密后的水印:

W={0, abs (Ι (x, y) ´-round (Ι (x, y) ´/Qnew´) Qnew´) <τ1, otherwise (5)

式中:τ为阈值;abs () 为绝对值函数。

(4) 利用假设检验来判定水印是否存在。相关性公式如下:

ρWW=Cov (W, W) /[D (W) D (W) ] (6)

式中:ρWW′, Cov (W, W′) 分别为原始水印W和提取出的水印W′相关系数和协方差;D (W) 与D (W′) 分别为原始水印W和提取水印W′的方差。若ρWW′>T, 则有水印存在;否则无水印。阈值T的选取由实验确定。

对提取出的水印进行整合, 并进行反置乱, 即得到提取出的水印序列。

4 实验结果分析

以靳济芳和钟玉琢等给出的MPEG-4编解码模型为基础[9,10], 用VC++6.0编程实现本文所提出的算法。采用经过MPEG-4编码器编码后的Foreman和Stefan视频序列作为测试视频, 进行水印序列的嵌入, 并采用相应的解码器对视频进行部分解码。其中Foreman, Stefan的帧大小均为255×288, 视频长度分别为100帧和90帧。

实验中, 取c=2, k=2, 对视频Foreman和视频Stefan, 平均嵌入强度分别为α=4.936和α=5.423。对两段视频, 分别采取固定嵌入强度α=5.423, α=4.936以及自适应调节α来进行水印嵌入。

限于篇幅, 仅列出Stefan视频帧。从图1可以看出, 采用自适应调节因子嵌入水印后, 从视觉上看, 视频帧图像在色彩等方面更加接近于原始视频。在Stefan视频中, 由于草地部分色调单一, 故嵌入强度较低, 而图1 (c) 中采用固定强度嵌入水印的, 每一部分嵌入强度相同, 所以视频帧的草地部分较原始图像有了明显变化。而采用自适应嵌入后的视频更接近于原始视频。

本文通过计算峰值信噪比 (PSNR) 来客观的判断不可感知性, PSNR的计算公式如下:

ΡSΝR=10lg (2552/ΜSE) (7)

式中:MSE是均方误差, MSE的值越小, 表明图像质量改变越小。MSE的计算公式如下:

ΜSE=1Μ×Νi=1Μj=1Ν|Ι (i, j) -Ι (i, j) |2 (8)

式中:I是原始视频数据, I′是嵌入水印后的视频数据, M, N分别为该帧图像的高和宽。

分别计算采用固定强度嵌入以及采用自适应调节强度嵌入后的Forman视频与Stefan 视频的PSNR值, 对比如表1所示。

从表1看出, 虽然在某些帧, 采用固定嵌入强度得到的PSNR值并不比采用自适应调节得到的PSNR值差, 但是就平均PSNR值而言, 采用自适应调节因子后, 效果明显提高。

5 结 语

本文在分析人类视觉系统模型的基础上, 提出了基于MPEG-4码流的自适应视频水印算法, 根据量化后的直流系数与中低频系数的个数, 设计自适应调节因子, 对不同的图像块采用不同的嵌入强度。同时考虑了对水印的处理技术, 使用Hybird映射对水印序列进行了预处理。将处理后的水印序列嵌入到MPEG-4视频码流的I帧DCT变换后的低频系数中。从实验结果可以看出, 该算法能够很好的与人类视觉系统相适应, 并对常见的攻击有很强的鲁棒性。

今后的工作重点是结合视频运动的特点, 进一步改进自适应调节因子, 使其更好的符合人类视觉系统特性, 在满足不可感知的前提下, 尽可能地增强水印的嵌入量和嵌入强度。

参考文献

[1]VOYATZIS G, PITAS I.The use of watermarking in theprotection of digital multimedia products[J].Proceedings ofIEEE, 1999, 87 (7) :1197-1207.

[2]ENGGERS J J, GIROD B.Blind watermarking applied toimage authentication[C]//Proceedings of International Con-ference on Acoustics, Speech and Signal Processing 01.SaltLake City:IEEE Computer Press, 2001:1-4.

[3]SWANSON M D, TEWFIK A H.Multimedia data embed-ding and watermarking technologies[J].Proceedings of theIEEE, 1998, 86 (6) :1064-1087.

[4]DAI Yuan-jun, ZHANG Li-he, YANG Yi-xian.A Newmethod of MPEG video watermarking technology[C]//Pro-ceedings of ICCT.[S.l.]:[s.n.], 2003:1845-1847.

[5]COX I J, KILIAN J, LEIGHTON T, et al.Secure spreadspectrum watermarking for multimedia[J].IEEE Trans.Image Processing, 1997, 6 (12) :1673-1687.

[6]DARMSTAEDTER V, DELAIGLE J F, NICHOLSON D, et al.A block based watermarking technique for MPEG-2signals:Optimization and validation on real digital TV dis-tribution links[C]//Proceedings of European Conference onMultimedia Applications, Services and Techniques.Berlin:[s.n.], 1998:190-206.

[7]AGUNG I W, SWEENEY P.Video scene characteristic de-tection to improve digital watermarking transparency[J].IEEE Proceedings Vision, Image and Signal Processing, 2004, 151 (2) :146-152.

[8]JAYAN N, JOHNSTON J, SAFRANEK R.Signal com-pression based on models of human perception[J].Proceed-ing of the IEEE, 1993, 81 (10) :1385-1422.

[9]靳济芳.Visual C++小波变换技术与工程实践[M].北京:人民邮电出版社, 2004.

[10]钟玉琢, 王琪, 贺玉文.基于对象的多媒体数据压缩编码国际标准MPEG-4及其校验模型[M].北京:科学出版社, 2007.

MPEG-4视频 篇2

由于视频监控所产生的数据量非常大,如果直接进行传输或存储,则会对网络带宽和存储空间带来很大的负担。因此,必须采用数据压缩技术,将那些对人眼感知图像不太重要的东西和图像中的冗余成分抛弃,从而缩减了存储、传输和处理的数据量。MPEG-4视频压缩编码标准可根据不同的要求来应用配置现场解码器,开放的编码系统,可以随时加入新的有效的算法模块。

1 运动估计

假设要得像素值bt,那么我们要假设t时刻的运动物体,它的时间间隔τ可以经过用以前得到值bt-τ表示出来,即bt (z)=bt-τ(z-D)

其中z= (x, y) T为位置矢量,D为像素的位移,包括水平方向和垂直方向位移,从而构成矢量。在实际应用中,考虑到计算复杂度和实时实现,多使用块匹配算法。块匹配算法将图像划分为互不重叠的块,例如16×16的块被称为宏块,将每个块视为一个“运动单元”,即认为块内所有象素位移量都相同。也就是说,在k-1帧中寻找与k帧中的某个块最相似的块,该过程称为寻找匹配块。

一般而言,搜索都只在一定范围内进行,这样可以有效节省计算量。假设在τ的有效时间中,运动物体均为水平和垂直的最大位移量dm个象素,则搜索范围的运动估计SR为:SR=(M+2dm) × (N+2dm)

该公式中M和N表示子块的大小,即在水平和垂直方向上的像素数。子块与搜索范围之间的关系如图1所示。

2 运动估计的改进

在基于块匹配的运动估计中,有两个问题是重要的:首先是相似度的匹配原则是判别两个子块;其次是搜索计算量最小的方法。不同的算法可以对这两个问题有不同的解决方案。

2.1 比较块匹配的准则

匹配准则实质上是一种误差度量函数,以此为标准衡量两个子块的相似程度。匹配准则的选取,直接关系到运动位移估值的准确性。在块匹配的运动估计算法中采用不同的匹配准则会获得不尽相同的运动估计结果。本文比较了各种匹配准则下运动估计的准确性,这对现实中选择更为合适的匹配准则具有一定的意义。

(1) 最小绝对误差MAD

式中, (i, j) 为位移矢量,M和N为块的尺寸,当在某个 (i, j) 处MAD达到最小,该点就是要找的最优匹配点。MAD准则不用作乘法运算,实现简单、方便。通常使用SAD (Sum of Absolute Difference)代替MAD。SAD即求绝对误差的和,定义为:

(2) 最小均方误差MSE

块匹配的准则有两个比较简单的判别,求两帧子块亮度的均方差值MSE是其中的一个:

同样MSE值最小时对应的 (i, j) 即为最优匹配点。

(3) 归一化互相关函数NCCF

这里,最优匹配为找NCCF值最大对应的 (i, j) 。

(4) 像素差值分类准则

该准则基于最小风险准则,在搜索中选取含匹配像素最多的子块作为最佳匹配块。具体来讲,将参考块中的每一个像素分类为匹配像素和失匹配像素进行统计。对于选定的阈值T0,进行如下分类:

式中,0表示像素失匹配,1表示像素为匹配的。在整个块内对T值进行求和运算:

在运动估计中搜索使SM (i, j) 最大,也即匹配像素最多的块作为匹配块。

视频有比较多的亮度变化,要使视频运动估计的结果更为准确。在各种匹配准则中,最小均方误差准则(MSE)得到的运动矢量的精度相对较高。

2.2 改进搜索方法

计算宏块之间差值的绝对值的和就能得出相邻两帧中对应位置,即SAD。假设预先定一个阈值Th,将某个宏块对应的SAD值与阈值进行比较,如果小于阈值则可以判定该宏块的运动矢量为零,即该宏块没有运动,表示该宏块不需要后续的运动估计,从而节省了编码器的运算时间。在此过程中,需要特别关注阈值Th的选择。在实际中应根据用户的视觉需求和网络带宽进行一个折中。

钻石搜索法(DS, Diamond Search)也被称为菱形搜索法,如图2所示。考虑到现实中的物体在水平和垂直方向运动的概率比较大,即图像在水平和垂直方向的相关性大于斜线方向,图像的频谱多呈菱形分布,因此搜索点大都位于图像的水平和垂直方向上。DS算法在里层就可以完成绝大多数的搜索,就不需要搜索外层,运算量得到很大的减少,耗时比TSS大大减少,精度较高。钻石搜索法有两种模式,即大钻石搜索法和小钻石搜索法。分别如图3 (a)和图3 (b)所示。在DS算法中,通常采用交替进行LDSP和SDSP搜索。先用LDSP搜索进行粗定位,这是因为LDSP的搜索步长较大、范围广,搜索过程不会陷于局部最小;然后用SDSP进行精确定位,这样搜索不至于较大的起伏,而最优点就在LDSP周围8个点所围的菱形区域中,结束条件为预先设置的门限值要大于某搜索点的MSE值。如果都搜索完这8个点,可是还找不到小于门限值的点,就可以将最小MSE点做为最优点。

现进一步分析LDSP模式下的菱形搜索法,如图4所示,实心黑点表示下一步搜索需要的所有点,灰色点则表示当前已经搜索过的点,两个菱形的黑色、灰色重合点是重复搜索的点。由此可见,LDSP模式的循环结构就是菱形搜索的本质,围绕这中心点的8个点每次均需计算,可是假如每一次都来计算8个点,都必需有3个点或5个点在相邻两次搜索中重复计算,而无论该中心点是前次搜索过程中钻石形模式的边点或是角点。这样增加了算法的复杂度,因此可以进一步改进LDSP模式下菱形搜索法。

改进的基本思想是:若当前极小值点是LDSP下的边点或角点时,如图5 (a)和图5 (b),若为边点则有3个新的待计算点;若为焦点则有5个待计算。若为中心点则有4个待计算点,如图5 (c)所示。改进的菱形搜索在相同步骤下搜索点数减少近50%,提高了运动估计算法的效率。

优化算法实现步骤为:

Step1:首先在大钻石搜索模式(LDSP)下所构成的9个点进行第一次计算,如果转Step5那么最小误差点(MBD)点必需出现在中心,若为角点或边点则转Step2。

Step2:调用大钻石搜索法,如果最小误差点(MBD)点为中心点转Step5;若为角点转Step3,若为边点转Step4。

Step3:最小误差点要在中心点如果以Step2步骤找到,必需对周围5个将要计算的点进行匹配的运算,计算完成后返回Step2。

Step4:最小误差点要在中心点如果以Step3步骤找到,必需对周围3个将要计算的点进行匹配的运算,计算完成后返回Step2。

Step5:在小钻石搜索模式(SDSP)下,以前面步骤找到的最小误差点为中心点,对围绕在其周围的四个点进行匹配运算,找到的最小误差点(MBD)点提供的即为最佳匹配块的运动矢量。

3 本文小结

本文中对MPEG-4视频压缩中运动估计的标准特征进行了阐述。其次,在本文中对MPEG-4视频压缩标准采用的算法做了详细的说明,深入研究了对运动估计等算法进行了深入的研究,还进行了必要的优化。

参考文献

[1]余兆明, 李晓飞等.MPEG标准及其应用, 北京:北京邮电大学出版社, 2002.

[2]MPEG-4-The Media Standard, the landscape of advancedmultimedia coding, http://www.MPEG-4.org.

MPEG-4视频 篇3

1 数字视频录像机的硬件设计

在基于S3C2410与AT2042的数字视频录像机的设计和实现中, 其终端设备以Samsung公司的32位处理器S3C2410为主控处理器, 利用Pentamicro公司的AT2042芯片完成双通道视频编码与解码, 其视频录像功能具有高分辨率和高质量。本文将介绍此终端的系统整体设计, 并详细分析系统软硬件设计, 最后给出测试结果和结论。根据市场的需求, 本系统预计实现下列几项指标:

(1) 实现对视频数据的MPEG-4标准的编解码;

(2) 编解码像素为720X576像素点, 实现25 f/s;

(3) 实现JPEG编码和解码;

(4) 实现USB/SD卡储存。

1.1 基于S3C2410与AT2042的数字视频录像机整体设计

该系统主要依靠AT2042的编解码功能, 系统的硬件框图如图1所示, 它主要由视频编码子系统、主控系统、数据处理子系统和视频解码子系统4大部分构成。

韩国Pentamicro公司生产的AT2042芯片的功能模块如图2所示, AT2042 是一个内置微控制器ARM946E 的2 通道音视频编解码 (A/VCODEC) 芯片, 主要完成对视频和语音数据的编码和解码, 支持多种音视频编解码标准, 可直接与IBM, Motorola, ARM, Xscale 和Axis 等多种CPU接口, 无需其他附加电路。

1.2 视频编解码电路设计

视频编解码电路主要包括视频编解码电路和视频压缩/解压芯片AT2042。其中, AT2042 主要负责对数字视频数据进行硬件压缩和解压缩, 而视频编解码电路则是基带模拟视频信号和AT2042 之间的一个接口电路, 它包括一个视频编码芯片和一个视频解码芯片, 主要负责视频数据的模/数和数/模转换, 以及数字视频信号格式的转换。在压缩编码过程中, 输入的NTSC/PAL/SECAM视频信号先经过视频解码芯片进行前端处理, 产生符合AT2042 视频接口标准的8 b ITU-R BT.656数字视频信号。在外部主CPU 的控制下, 该数字视频数据由压缩/解压芯片AT2042 进行硬件压缩编码, 产生的编码数据流通过芯片内部集成的Mux FIFO 接口输出。网络视频服务器的解压缩编码是压缩编码的逆过程, 需要解压的数据流通过AT2042内部集成的Demux FIFO 接口输入。视频采集接口框图如图3所示:

摄像头采集输出信号为NTSC, PAL或SECAM制式的电视信号, 必须经过视频解码处理才能转化成适合AT2042进行编码的数字信号。TVP5150是TI公司生产的一款电视信号解码专用芯片, 它对输入的模拟信号进行A/D转化, 通过设置相应的寄存器可以使输出信号满足RGB格式或YUV422格式。由于在本系统中AT2042视频接口满足ITU.RBT656标准, 故TVP5150输出配置为8位YUV422格式。如图4所示。

现在的数字电视视频接口还没有实现统一的工业标准, 故在视频输出端设计时, 仍使用现在比较流行的A/V接口或S-video接口。由于上述2种接口传输的为模拟电视信号, 故在AT2042的视频输出端口需要增加一级处理, 即将数字信号转化为模拟电视信号。在后端设计中选用SAA7121, 它是一款专用的电视信号编码芯片, 可以将输入的数字信号经过内部的D/A转化为适于传输的模拟电视信号, 通过配置相应的寄存器可以输出满足S-video接口或复用接口的信号。

1.3 AT2042的主机接口

主控CPU (S3C2410) 和AT2042 是数字视频录像机的核心处理芯片, S3C2410 控制整个数字视频录像机系统的运行, AT2042 除完成对视频信号的硬件压缩编码外, 还可对压缩后的视频数据进行硬件解压缩。AT2042 压缩编码后的视频数据通过芯片内部集成的Mux FIFO接口输出后, 外部主CPU 负责对其进行USB存储器处理, 处理后的视频数据可以存储在物理介质上, 以便在需要时通过键盘操作进行回放。

图5为S3C2410与AT2042接口框图。

AT2042的CPU_SEL[2:0]是主控CPU选择引脚, 经配置这几个引脚的高低电平, 使AT2042可选择主控CPU, CPU_SEL[2:0]为010选择ARM结构芯片;

nCS, nWAIT等为总线控制信号线;

HCLK是AT2042主机接口的工作时钟, 一般要求工作在50 MHz, 当S3C2410 在复位后设置FCLK为200 MHz, HCLK为100 MHz, PCLK为50 MHz。故将S3C2410的PCLK引脚与AT2042的HCLK引脚相连。

通过这种机制, S3C2410可以实现简单的访问AT2042。

AT2042 与CPU的通信机制如图6所示, CPU对AT2042的控制和访问主要通过AT2042的2个寄存器 (status register和command register) 和4个FIFO (Tx FIFO, Rx FIFO, Multiplex FIFO和De-Multiplex FIFO) 完成。

2 数字视频录像机的软件实现

数字视频录像机系统的软件设计包括:Bootload 代码的编写、Linux 操作系统的内核生成和Linux下驱动程序和应用程序的开发、文件系统的生成和配置以及用户应用程序4大块。

数字视频录像机软件开发的整体架构如图7所示。

2.1 系统启动Bootloader程序设计编写

Bootloader是系统启动时执行的第一个程序, 其主要完成对硬件系统的初始化。具体包括:S3C2410的初始化、TVP5150功能配置、SAA7121功能配置、加载AT2042固件、以太网及串口初始化。由于在开机时要显示开机画面, 故除在Bootloader中初始化相应硬件资源外, 还应将开机画面的图片数据, 传送到AT2042 SDRAM中。Bootloader整体流程图如图8所示。

显示开机画面, 其主要通过AT2042的JPEG解码功能来实现。首先配置AT2042的JPEG解码功能, 将要显示图像先以头文件的形式添加到程序中, 当需要显示时再将图像数据发送给AT2042。

2.2 Linux系统的配置及设备驱动程序的编写

本系统使用的是Linux2.4.18内核, 在内核配置中需增加以下几个内容:由于本系统中要实现对视频编码数据的存储, 故要添加内核配置中USB support选项中的USB Mass storage support;在调试时需要通过以太网来烧些程序, 故内核配置时需添加LAN91C111网卡驱动, 方法为在NetWork device support选项下选择SMC91111 support, 同时内核要支持各种文件系统, 需在File system选项下进行相应配置。

系设备驱动程序主要完成以下的功能:

AT2042 设备驱动子模块系统调用是操作系统内核和上层应用程序之间的接口, AT2042 设备驱动子模块是操作系统内核和AT2042 硬件设备之间的接口。操作系统内核向AT2042设备驱动子模块提供内核API 和其他的内核支持。AT2042 设备驱动子模块为上层应用程序屏蔽了AT2042硬件的细节, 这样在应用程序看来, AT2042 硬件设备只是一个设备文件, 应用程序可以像操作普通文件一样对AT2042 硬件设备进行操作。AT2042 设备驱动子模块作为系统内核的一部分, 主要完成对AT2042 的初始化、编解码数据的读写、以及编解码功能参数的设置。包含的功能函数主要有模块入口函数、设备操作函数集合和中断服务程序等。

2.3 数字视频录像机应用软件的设计与实现

(1) 界面显示与菜单功能的设计与实现。

界面和菜单的显示是通过AT2042的OSD (on Screen Display) 功能来实现的, AT2042共有3个显示层面, 分别为底层是背景层、中间是回放层, 顶层是OSD层。

OSD层支持16色的调色板。由于AT2042自身没有相应的ROM存储OSD所要显示的图片及文字数据, 故在利用OSD功能来显示图片或文字时, 首先要将需显示的图片或文字数据加载到AT2042的SDRAM中, 然后调用显示功能将图片或文字显示在OSD层上。

这个功能的实现过程中主要调用以下2个函数:

void at2042_load_font (uns8 *font_data, uns32 font_data_size) 该函数的主要功能是把要显示的数据加载到AT2042的SDRAM中, 同时设置显示位置, 即垂直、水平像素点的位置。

void osd_on_off (uns8 temp) 该函数的功能是打开或关闭OSD模式。

(2) MPEG-4视频编码实现。

该功能主要利用AT2042来实现。首先, 配置相应的编码寄存器, 例如编码模式、编码像素点、编码帧率及设置编码流格式 (PES, PS, TS) 等。本系统中采用MPEG-4模式、720X576、每秒25帧及生成PES流来对视频数据进行编码。

AT2042视频编码的流程如图9所示。

实现这一功能主要通过对以下几个函数的调用:

void set_encoder_parameter (uns16 hsize, uns16 vsize, uns8 rate, uns8 mode) 该函数用来设置编码参数;

void video_encoder_start (uns8 mode) 该函数用来启动AT2042的编码功能;

void video_encoder_stop (uns8 mode) 该函数用来关闭AT2042的编码功能;

void encoding_stream_read (uns8 *data, uns32 data_size) 该函数实现将编码数据从MuxFIFO中读出。

(3) 解码功能实现。实现的具体流程如图10所示。

实现这些功能主要通过对以下几个函数的调用:

void set_decoder_parameter (uns16 hsize, uns16 vsize, uns8 rate, uns8 mode) 该函数用来设置解码参数;

void video_decoder_start (uns8 mode) 该函数用来启动AT2042的解码功能;

void video_decoder_stop (uns8 mode) 该函数用来关闭AT2042的解码功能;

void get_file_length (const char *file_name) 该函数用来获取文件的长度;

void video_replay (const char*file_name, uns8 mode) 该函主要实现对视频文件的播放控制, mode控制播放模式 (暂停、快进、快退) 。

3 测试结果

实验结果进行测试, 可以采用2套方案来完成。

(1) 使用自行设计的硬件平台, 在该平台上完成对视频编解码的测试。

图11为在本系统平台上对编码数据的解码播放截图。

(2)

将编码后的视频文件拷贝到PC机上, 应用Media Player、暴风音影和风雷音影等视频播放软件对编码结果进行测试, 同时可以对比解码播放的效果。

因为本系统中视频文件是以PES流形式保存到储存介质, PES满足ISO13818标准, 所以PC平台上的普通视频播放器都能播放该文件。图12是用风雷音影播放器对编码结果进行解码播放的截图。

由图可以看出, 解码出的视频文件是720X576像素点, 解码播放的速率为25.59 f/s。画面没有出现失真现象, 没有明显的块效应。由表1中的数据可得, 在使用AT2042对静止图像编码时, 可实现接近100∶1的压缩比, 在对动态画面进行编码时, 可以实现40∶1的压缩比。

4 结 语

本文详细介绍基于专用视频编解码芯片AT2042的数字视频录像机系统的硬件设计和软件开发流程。该系统已实现对视频数据的编码和解码, 同时实现了MPEG-4/MPEG-2/MPEG-1 H.263视频标准, 并已作为成型产品推向市场。

参考文献

[1]王学龙.嵌入式Linux系统设计与应用[M].北京:清华大学出版社, 2001.

[2]周立功.ARM嵌入式Linux系统构建与驱动开发范例[M].北京:北京航空航天大学出版社, 2006.

[3]Pentamicro.AT204x_DataSheet_v20 (Eng) [EB/OL].www.pentamicro.com.

[4]李严.基于ARM7TDMI和μClinux的嵌入式MPEG4网络视频终端及服务器[D].浙江:浙江大学, 2006.

[5]王卉, 吴庆洪.MPEG-4嵌入式视频解码系统的研究与实现[J].现代电子技术, 2007, 30 (18) :149-151, 155.

MPEG-4视频 篇4

目前, 高性能通用芯片性价比的提高使得基于软件平台的压缩编码方法具有实用的可能。MPEG-4也已经被融入到越来越多的产品当中。文中主要给出M P E G-4VLBV内容在OpenH323系统中传输的方案, 及其具体实现。与采用H.263视频编码标准时的结果进行了比较, 实验结果印证了M P E G-4的优越性。

1 MPEG-4标准

MPEG-4采用了新一代视频编码技术[3], 它把编码对象从图像帧拓展到具有实际意义的任意形状视频对象, 除采用了第一代视频编码的核心技术, 如变换编码, 运动估计与运动补偿, 量化, 熵编码外, 还提出了一些新的有创见性的关键技术, 并在第一代视频编码技术基础上进行了卓有成效的完善和改进。

1.1 码流的语法层次逻辑结构

MPEG-4将视频码流的语法层次分为5层:视频会话 (VS) 、视频对象 (VO) 、视频对象层 (VOL) 和视频对象平面 (VOP) 。它们都以类的形式定义, 每一类由该类的起始码和结束码界定。若干个VS构成一个完整的视频序列。VO是给定场景中的一些具体对象, 是用户能够存取和操作的实体。VOL是表明VO的空间和时间分辨率的一个类型, 与空间和时间分级性密切相关。VOP是VO在某一时刻的瞬象, 即某一帧VO, MPEG-4对每个VOP独立进行编/解码, 根据采用的编码方法VOP可以分为I、P、B和S四种类型 (图1) 。

1.2 形状编码

形状信息又称为alpha平面, 有两种表示方法, 都采用位图的形式。一个是二值形状信息, 要么为0, 要么为255;另一个是灰度形状信息。与传统的视频编码算法类似, MPEG-4采用的形状编码算法也是基于块的算法, 也分为帧内和帧间两种编码块。帧间块仍然采用基于块的运动预测/补偿。在编码VOP的形状信息以前, 产生一个边界框, 扩展到16x16块的整数倍形状值为零的区域, 然后在16x16的块基础上采用基于环境的算术编码算法CAE (Content-based Arithmetic Encoding) 。

1.3 运动估计与运动补偿

为了在V O P基础上进行运动估计, 在V O P内部块采用块匹配技术, 而边界上采用多边形匹配技术, 并且还采用了重复填充技术。除了一般的运动估计和补偿外, 还有无限制矢量模式和高级预测模式。在这三种模式中, 运动矢量搜索范围是[-2f_codec+3, 2f_code+3-0.5], 这里0<=f_code<=7。无限模式搜索范围不限于边界框, 而高级模式允许一个宏块有多个运动矢量和重叠运动补偿。在所有模式中都必须进行VOP填充。

1.4 纹理编码

帧内VOP和运动补偿后的差值都使用相同的8x8块DCT变化。这里有两种宏块:完全在VOP形状内的和在VOP形状边界上的。对于第一种, 使用与H.263完全相似的技术。在边界上的帧内块首先按上面所讲到的填充方法填充。对于差值块, VOP外的区域填0, 透明块略过不编码。填充后的块编码方法与内部块一样。

形状DCT算法用于跨在VOP边界上的块, 用于代替宏块填充技术, 它只编码在VOP形状里的像素。这样DCT的系数数目与在形状里的像素数目相同, 它的算法大致与普通的D C T相同, 另外一个区别是D C T系数编码时的扫描。而量化表和V L C表是完全相同的。

1.5 MPEG-4编码技术的实现

根据MPEG组织的文档“MPEG Applic ation”中的推荐[4], 并考虑到OPENH323所开发的软电话的实际需要及其应用环境, 我们将采用MPEG-4VLBV核, 它实现高效率和高容错纠错的编码传统的矩形图像, 具有低延迟和低复杂度。结构如图2所示。

编码时采用的有I和P帧, 没有B帧编码方式, 因为在低比特率和网络不可靠的情况下, 出现丢帧时, 用B帧得不偿失, 加长了延时。而包同步和可反向VLC编码提供了强有力的纠错能力。其中包同步用来代替传统宏块组上的重同步, 而反向VLC使得从相反方向解码数据流时仍能得到正确结果。

VOP是基本的编码单位, 参考MPEG-4编码库[5]并结合MPEG-4视频流的语义分析, 根据VOP结构的定义及VOP编码算法, 给出VOP编码的程序处理流程。

(1) 首先判断当前要编码的VOP类型, 如果是P_VOP转 (2) , 否则转 (3) 。

(2) 执行运动估算和运动补偿, 计算VOP内部宏块比率IntraMBRatio。

(3) MAD另外赋值100 (MAD, Mean of A bsolute Difference, 是前一帧与当前帧之间的平均绝对误差, 而且如果 (1) 中为P_VOP, 那么执行 (2) 后, 也将得到MAD值) 。

(4) 判断M A D范围, 如果容忍值未超过, 则转到 (5) 继续进行P_VOP的编码, 否则作为编码模式应转 (6) 为I_VOP模式。

(5) 设定P_VOP的量化器和量化步长;计算当前要编码VOP和重构预测值之间的差分, 即SubImage (error, current, reconstru ct, …) ;把当前要编码VOP语义字段填到程序定义VOP数据结构, 后写入磁盘文件, 即Bitstream Put Vop Header (current, …) ;组合形状, 运动, 纹理差分预测编码, 即:

VopShapeMotText (error, reconstruct, ref-erence, …) 。

然后直接跳转到 (7) 。

(6) 重新计算MAD;把当前要编码VOP语义字段填到程序定义VOP数据结构, 然后写入磁盘文件BitstreamPutVopHeader (curre nt, …) ;内部纹理编码 (包含形状/运动/文本) 即VopCodeShapeTextIntraCom (curr, reference, …) 。

(7) 释放与图像结构相关内存, 即FreeI mage () ;对参考VOP图像反复填充确保Y16和U V为8:

进入下一个起始码, 开始另一个VOP编码, 即Bitstream_NextStartCode () 。

2 H323协议及OpenH323系统

2.1 H323协议

H323协议是一种框架性协议, 主要包含的有视频编解码协议 (H.261, H.263) , 音频编解码协议 (G.711, G.723.1等) , RAS信令, 呼叫信令规程H.225.0, 媒体控制协议H.2 4 5, R T P/R T C P协议等。

H.323协议中视频标准仅支持H.261, H.2 6 3, H.2 6 3+, 这几个协议都没有MPEG-4性能好[6]。在H.323协议中用于视频传输的协议是RTP/RTCP和UDP。RTP协议不要求底层网络具有实时数据传输所需的服务质量 (QoS) 保证, 而且RTP协议本身对数据传输过程中的差错不作处理。但该协议能够提供每个RTP分组所携带的数据内容的相关信息, 因而使得应用程序可以根据RTP分组头中的次序号、时间戳等相关内容, 判断网络性能变化对于实时数据的传输质量的影响程度, 使得终端可以进行有效的调整控制来满足实时应用的要求[7]。

2.2 OpenH323系统

Openh323项目是澳大利亚的Equivalence Pty Ltd公司组织开发的, 这个项目1998年开始, 到了2000年底基本的H323协议框架已经实现, 主要是免费面向所有想从事VOIP和网络视频传输的软件开发商使用, 这个协议库是完全符合H.323协议的, 能和任何符合该协议的软件进行视频和语音的通讯, 例如Microsoft的NetMeeting。

3 系统的实现

OpenH323协议栈的源码是用C++来完成的, 适用于Windows平台和Unix平台。OpenH323协议栈包括了实现H323协议的方方面面, 主要的是H 3 2 3 E n d p o i n t, H 3 2 3 L i s t e n e r, H 3 2 3 T r a n-s p o r t, H 3 2 3 C o n n e c t i o n, H 2 4 5 N e g o t i a t o r, H 3 2 3 C h a n n e l, H 3 2 3 C a p a b i l i t y和H323Codec。其中H323Endpoint是所有基于OpenH323协议栈的基础。

本系统是基于Windows的应用, 在Visu al C++6.0环境下, 利用Pwlib和OpenH323开发的一个支持Mpeg-4标准的基于OpenH323的软电话。

3.1 系统实现的步骤

H.323视频会议系统中默认的视频标准为H.261协议标准, 所以在OpenH323类库中已经直接包含了H.261协议标准的实现。而对其它的视频标准则是提供了开放源程序的连接接口, 只需要另外编写H.263编解码器, 通过OpenH323的开放接口就可以实现H.2 6 3协议标准视频传输。同样, M P E G-4标准视频也可以这样来实现, 不过首先需要编写MPEG-4在OpenH323中的定义。

从OpenH323 1.14版本以后, OpenH323加载视频编解码插件, 既能够在运行时加载, 也可以从一个DLL (对于Windows) 文件加载。MPEG-4的视频编解码技术比起H.263能够形成更小的视频比特流, 而且有更好的视频质量。

3.1.1 编解码插件mpeg4_pwplugin.dll

OpenH323类库中并没有定义MPEG-4的视频类型, 所以RTP协议传输MPEG-4视频内容要在OpenH323中定义一种类型标志来表示MPEG-4视频类型, 以便RTP传输时类型标志能够识别该类型的数据流。这种类型标志在O p e n H 3 2 3类库中是在RTP_DataFrame::PayloadTypes里面定义的。

在H.245协议中进行对话建立时会通知双方交换各自通信能力, 这时也要定义好如何通知对方具有MPEG-4视频能力。这个功能在O p e n H 3 2 3类库中是由类H245_H263VideoCapability来定义实现的。

根据OpenH323编解码插件系统的要求, 将所实现的M P E G-4编解码算法的程序编译成OpenH323的一个视频编解码器插件 (DLL文件) , 其名称根据规定定义为“_pwplugin.dll”, 其中为自定义的该编码器名称, 这里我们定义为mpeg4_pwplugin.dll。所得编解码器插件必须提供以下两个输出函数:

unsigned int PWLibPlugin_GetAPIVe rsion ()

该函数被所有的PWLib插件必需的, 返回这个PWLib Plugin API版本。

PluginCodec_Definition*OpalCodecPl ugin_GetCodecs (unsigned*count, unsigne d version)

该函数返回一个Plugin Codec_Definition结构指针, 该结构描述了被使用的编/解码器的接口和参数。

加载M P E G-4视频编解码器插件mpeg4_pwplugin.dll。

(1) 将视频编解码器插件 (DLL文件) 复制到一个能被OpenH323系统寻找到的文件夹里。例如:默认的通常为”C:PWLIB_PLUGINS” (Windows下) 或其子目录下。

(2) 对VC编译环境进行一些设置后, 编译Pwlib系统, 得到Pwlib库。

(3) 先对VC环境做些必需的设置, 对Open H 3 2 3进行一些修改后, 编译得到OpenH323的库。

(4) 将其编译得到的pwlib和openh323的库函数添加到软电话应用程序中, 重新编译应用程序, 得到可执行文件。

3.2 系统运行效果

使用局域网内的两台计算机互连通信, 采用本文所述M P E G-4编解码插件进行视频通讯, 实时采集QCIF和CIF分辨率的视频进行编码, 在15fps的帧率下, 其传输码率范围为35kbps~64kbps, 峰值信噪比 (PSNR) 高于35dB, 很好的达到了实时传输效果, 画面流畅, 图像主观质量较好。通过软电话程序进行H.263和MPEG-4的视频传输, 比较这2种视频标准在H.323视频会议系统中的效果。从主观图象质量的角度看, 运动小的视频序列两种编码效果相差不很明显, 图象质量都较好;对于运动大的视频序列, 用MPEG-4编码的质量比H.263编码质量要高一些, 尤其是前景对象的边缘部分提高得比较多。

4 结语

该方案实现了在网络上的基于openh323的软电话中利用MPEG-4编解码技术进行视频通信。由于MPEG-4先进的视频压缩算法, 使其具有压缩效率高、容错性能好、扩展能力强、适应范围广等优点。目前, 视频编解码只考虑VLBV视频类, 对象基的视频工具以及诸如FGS (细粒度分级) 等分级工具将是今后研究实现的内容。试验结果显示在OpenH323系统中采用MPEG-4编解码器要比H.263具有更优秀视觉效果和更高的压缩比, 更低的传输码率, 但由于本系统中编解码过程的纯软实现, 因此编解码时间偏长, 相信随着计算机处理速度的飞速发展, MPEG-4编解码技术的成熟, MP EG-4在网络电话的视频通信中的将有无比广阔的前景。

摘要:对在H323协议下采用MPEG-4编解码技术的视频传输的实现进行了研究, 采用OPENH323开源工程, 着重研究了其中的视频通信应用, 分析了MPEG-4视频标准的基本概念和编码技术, 编码实现采用了MPEG-4VLBV, 给出了将MPEG-4编解码技术应用到OpenH323开源工程中进行视频通信的具体方案, 并与采用H.263时情况进行了比较。这个方案可以取得令人满意的主观视频质量。

关键词:MPEG-4,H323协议,OpenH323,视频通讯

参考文献

[1]ITU-T.H323:Packer-based multimedia communicationssystems.Draft v4[S].2000.

[2]Equivalence Pty Ltd.OpenH323和PWLib类库[EB/OL].http://www.openh323.org.1998-2002.

[3]ISO/IEC JTC1/SC29/WG11.Over-view of the MPEG-4standard v18.N4030[S].2001.

[4]MPEG-4Applications.ISO/IEC JTC1SC29WG11N232.

[5]MPEG-4VM Video Encoder&Decoder.Developed by Microsoft.

[6]王正勇, 李永合.MPEG24与H.263视频编码性能比较[J].四川大学学报 (自然科学版) , 2001, 38 (3) .

MPEG-4视频 篇5

1 MPEG-4视频解码算法

MPEG-4标准可以划分为一套子标准,标准的每一部分都有各自最适合的应用场合。MPEG-4 SVP(Simple Visual Profile[2])就是一种特殊的、简单的MPEG-4实现。其专门针对手持式产品中视频传输应用场合制定的。由于本解码器可应用在手持移动设备视频解码的场合,因此选用MPEG-4 SVP作为解码算法。

本文选用ARM7TDMI作为核心处理器进行MPEG-4视频解码器的开发。在实际开发过程中,针对ARM7TD-MI的结构和MPEG-4的算法特点,做了大量优化工作,保证了解码精度,大幅度提高了解码速度。严格来说,ARM7处理能力有限,更适合用于控制类型的应用。由于其没有针对视频解码数据处理而进行优化设计,因而不太适合于视频解码等数据处理类应用。但是由于该芯片具有明显的成本优势,所以经过优化,在充分利用其性能的前提下,还是可以作为手机等嵌入式系统的视频解码应用。

解码过程实际上就是从视频编码码流中恢复出VOP数据的过程。图1描述了一个视频解码过程。解码器主要包含运动解码和纹理解码。I帧中只含有纹理信息,因此只须解码纹理信息即可恢复I帧。而P帧中不仅包含纹理信息,还包含运动信息,所以须解码运动信息,获得运动矢量并进行运动补偿。另外,还须进行纹理解码获得残差值,将这两部分组合起来才能重建P帧[3]。

解码器的实现主要是提供一个简单的接口函数,供解码时调用。该接口函数根据解码的不同需要和不同阶段提供了5个入口。5个接口函数中,有4个供初始化、预处理及后续处理时调用,剩余1个是帧解码的实现函数。图2为帧解码主程序流程图。

解码过程的计算主要集中在如下几个模块:IDCT、运动补偿MC、逆量化、逆扫描、逆预测以及变长解码VLD。表1给出了优化前解码过程的特征信息。从表1中可以看出,上述运算模块在解码过程中占有很大比例。对以上各模块进行优化的效果将直接反映在解码器的实时效率上。

2 解码器优化

2.1 效率更高的IDCT变换

通常,MPEG-4编码过程中有8×8块在DCT变换后AC系数大都接近于零,经过量化后直接变成了零。同时根据帧间预测的相关性:在运动不是非常剧烈的情况下,量化后大部分DCT相关性是零。表2显示了在快速运动和慢速运动序列下所有全零块的百分比。

对于快速运动序列,大约25%的DCT块是全零;对于慢速运动序列,全零块的百分比大约47%[4]。这样,可以把DCT块分为不同的三类:一类是全零块(DC系数和AC系数都是零),一类是只含有DC系数(AC系数是零),一类是含有DC系数和AC系数,如图3所示(这里用4×4的块举例,D代表DC系数,A表示AC系数)。对于不同的IDCT进行不同的处理:对于第一类情况,全零块,跳过反变换;对于第二类情况,只进行反DC变换,通常除以8,即移3位即可;对于非零AC系数块,按照快速的IDCT处理。这样就可以针对不同的情况采用不同的处理办法,提高了解码效率。

2.2 效率更高的运动补偿

2.2.1 运动补偿的扩边

MPEG-4在进行运动补偿时,使用运动向量在参考图像中寻找预测块。如果运动向量变化比较快,则运动向量很可能指向参考图像以外。MPEG-4标准框架中,采用了很多分支判断语句来处理运动向量指向参考图像以外的情况。一方面IF语句的判断会降低程序的效率,造成解码过程速度的下降;另一方面如果运动向量没有指向参考图像以外,IF判断就显得多余。为了提高解码效率,可以采用参考帧扩边的方式来解决。将参考图像的边界扩大部分全部置零,这样就可以减少很多判断语句,提高解码效率。在实际中,运动向量的有效范围很大,但当运动向量使计算一个预测块所需的像素完全处于参考图像以外时,则不论运动向量的水平分量或者垂直分量延伸多远,所得到的预测块都是相同的。而运动补偿既可以基于块(8×8)的,也可以基于宏块(16×16的,因此将扩展的字节数取为16就可以了。同时将运动向量的两个分量分别裁剪到不超过参考图像左边和上边的边界8 B以及下边和右边的边界2 B。扩展后的参考图像见图4。

2.2.2 双线性插值的改进

MEPG-4解码算法中,运动补偿是以宏块为单位进行的。最初的做法基于参考图像采用双线性插值,见图5。

对这一做法进行如下改进:对宏块的运动补偿是根据获得运动矢量进行不同的判断,而不是固定采用双线性插值的算法。运动补偿根据从解码数据中获得的水平运动矢量MV_X和垂直运动矢量MV_Y进行,即根据MV_X和MV_Y最低位为0或1的情况分为:只进行直接复制相应数据;只进行垂直方向插值;只进行水平方向插值;进行双线性插值。具体做法如下:

当MV_X和MV_Y的最低位都为零时,运动矢量指向的16×16的块本身与缓冲区中的像素重合,这时不需要进行任何插值处理,直接复制相应数据。当MV_X最低位为零而MV_Y的最低位不为零时,运动矢量指向的8×8的块的点落在某列两相邻像素的中间,这时只需要进行垂直方向的插值。当MV_X最低位不为零而MV_Y的最低位为零时,运动矢量指向的8×8的块的点落在某行两相邻像素的中间,这时只需要进行水平方向的插值。当MV_X与MV_Y的最低位均不为零时,运动矢量指向的8×8的块的点落在相邻四个像素的中心,这时必须同时进行两个方向的插值。由于相邻帧之间具有很大的时间相关性,所以本帧和上一帧大部分数据是相同的。假设上面4种运动补偿情形各占1/4,当进行水平或垂直插值时,运动补偿所占的运算量仅为原来的双线性插值的1/2,比双线性插值约节省一半的计算量,从而大大节省了运动补偿的时间。

2.2.3 像素的并行处理

解码过程中处理的像素是8位,如果运动补偿是在字节或像素的基础上执行,则字节加载和存储将被使用,它是存储器访问中代价最高的操作。因为ARM7是32位微处理器,存储器可以按字读取数据,因此设计出一种有效的运动补偿方法,即在字数据的基础上进行操作。利用这种方法,便可以用一种非常有效的方式同时对四像素进行运动补偿。下面以水平方向的半像素补偿为例,讲述补偿的过程。

首先读入一个字到寄存器中,从低到高的数据依次对应像素0、像素1、像素2和像素3;然后将读码流指针增加1字节,再读取下一个字到另一寄存器中,从低到高的数据依次对应的为像素1、像素2、像素3和像素4。示意图如图6所示。

对于垂直方向和水平垂直方向的半像素补偿,其原理与水平方向相同。在具体函数实现过程中,由解码数据获得当前数据块的运动矢量,根据获得的运动矢量得到当前数据块在参考帧的具体位置,从而得到运动补偿所需要的参考数据块。参考数据拷贝到片内。运动补偿在片内实行,按照字读取数据并根据情况采用不同的半像素插值,提高了程序的执行效率。

2.3 VLD优化

由于MPEG-4变长编码中的码字长度是不定的,而解码器的输入是连续的比特流,码字之间没有间隔符,所以VLC(Variable Length Coding)码表必须判断码字的长度。在通常情况下,VLD(Variable Length Decoding)解码是通过不断搜索和判断得到码字和码长,故解码的时间因码长而异。对于实时处理来说,若该部分计算量过大,将影响整个系统的处理速度。原始查表方法涉及到多次读取和判断,计算量较大[5]。另外,信源符号内容不同,对应码长也不同,造成查表判断耗费的时间差别很大。可以采用基于分组的办法,根据码字编码位的不同划分为多个码表,将码字按照不同的区域进行划分。这样,不断的搜索判断可以简化为三个步骤:(1)读入定长码字;(2)通过对读入数据大小的判断确定读入的符号应属于哪一个查找表;(3)利用得到的码字在查找表中直接获得其对应的信息。因每个分组包含的符号较少,所以可在取出分组信息后,从剩下的信息位中直接得到符号在表中对应的位置。

经分组后,解码过程简化为(按最大码字长度读入数据,以8位数据为例,设分成码长小于3的小码表和码长大于3的大码表):

(1)对读入数据进行大小判断。因分组时考虑到数据大小判断的简便性,可用移位代替。

(2)数据大小的比较。右移5位,判断是否为0。如果为0,则符号落在码长小码表中;否则,符号落在大码表中。

(3)若符号落在小码表中,以右移5位的读入数据作为相对地址,直接在小码表中找到对应非零系数个数和正/负个数及码长。若符号落在大码表中,则直接以读入的数据为相对地址,在大码表中找到相应的信息。

无法预见的反复读取和判断,经过基于分组的解码优化简化成上述三个可预见的步骤,减少了判断次数,加快了处理时间。

3 实验结果与数据分析

通过优化,MPEG-4的解码性能有了较大的提升。在ADS1.2环境下分别对各模块进行C算法优化和ARM代码优化,结果如表3。按调用一次模块函数所需周期数进行统计。

这些模块是解码过程中经常会调用的函数,因此,这些函数的优化将使解码速度有明显提高。

表4比较了不同序列的15帧QCIF格式视频解码优化前后所需的带宽。这些图像具有不同的复杂度,因而结果也不一样。

解码速度基本取决于图像画面的运动情况和颜色是否丰富。从上面的数据可以看出对于不同的序列,其解码速度也不同。news、salesman和miss_am之所以很快,是因为图像背景静止,只有肩部和头部有运动,因而P帧的编码数据量较少,解码速度较高。另外,如果图像很简单(单调),其能量集中到DC系数(直流分量)上,交流系数会出现多个零,因此变长解码速度就会较高从而节约了解码时间。

注:视频序列为标准视频测试序列。

通过本文所总结的ARM7TDMI上视频解码的优化方法,可以使MPEG4视频解码节约大量的数据处理时间。由实验结果可见,本视频解码器能较好地满足低分辨率、低帧率场合实时解码的要求。

摘要:分析了ARM7处理器的结构特点,针对解码器的优化特点和芯片的硬件结构,采用了算法级、语言级、ARM级联合优化的方法,对标准MPEG-4解码过程进行了优化。通过本文所总结的ARM7TDMI上视频解码的优化方法,可以使MPEG4视频解码节约大量的数据处理时间,能较好地满足低分辨率、低帧率场合实时解码的要求。

关键词:ARM7,MPEG-4,视频解码器

参考文献

[1]杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.

[2]ISO/lEI.MPEC-4video verfication model version18.0.MPEG N3908,2001.

[3]钟玉琢,王琪,贺玉文.基于对象的多媒体数据压缩编码国际标准,MPEG-4及其校验模型.北京:科学出版社,2000.

[4]田纲,胡瑞敏,王中元,等.Trimedia平台MPEG4编码器优化策略.计算机工程与应用,2006(36):78-81.

MPEG-4视频 篇6

离散余弦变换(DCT),是最接近于统计最优变换———卡洛变换(KLT)的正交变换。它作为变换编码算法,在图像/视频编解码中用于减小/消除图像中的空间冗余,具有速度快、算法简单、易于硬件实现的特点。目前,8×8的DCT已经成为众多图像/视频编解码国际标准(如JPEG、H.26X、MPEG1/2/4)中的关键算法之一。与运动估计/补偿模块(ME/MC)相似,在视频处理中,DCT/IDCT也是数据量集中的运算。以符合MPEG4规范的XVID解码器ASP档为例,IDCT所需的计算量约占解码总计算量的25%。针对MPEG-4实时解码需要,设计专用MMA(多媒体加速单元)来代替纯软实现或DSP实现是大幅提高解码速度的有效方法。

根据C.Loeffler提出的LLM算法,针对基于便携式多媒体终端SOC的MPEG-4实时解码应用设计了一种8×8 IDCT的VLSI结构。用ModelSim对编写的RTL代码进行逻辑仿真,使用Synplify综合生成网表,及Xilinx的ISE进行布局布线,并采用专用的FPGA平台验证了系统前端设计的合理性和正确性。

1 DCT/IDCT算法

二维DCT和IDCT公式可写为:

式中,x(m,n)为输入数据;Z(k,l)为输出系数;m,n,k,l取值为0~N-1;α(0)=,当j≠0时,α(j)=1。

二维DCT(IDCT)的运算可分解为两个一维DCT(IDCT)完成。

Z=AXAT,X=ATZA,其中AAT=IN,矩阵A的元素为:

从而Zx,y=1D-DCTy-direction(1D-DCTx-direction),这样二维8×8的DCT/IDCT模块就可以按图1所示的框架分解为串行的行列一维变换实现,降低了设计的复杂度。

2 IDCT硬件结构

目前计算二维8×8 IDCT快速算法有两类:直接法,对二维的数据序列进行整体考虑,如Feig-Winograd提出的算法(94个乘法,454个加法);行列分解法,利用二维IDCT可以分离计算的特性把二维8×8IDCT分解成16个8点的一维IDCT,然后用一维快速IDCT算法进行计算。后者在结构上的对称性更好,并可以重复使用硬件资源。一维IDCT的快速算法也有两类:直接法,即利用IDFT和IDCT的关系,通过FFT来计算;间接法,包括对IDCT变换矩阵分解和递归算法两种方法,典型的有AAN算法(13个乘法,28个加法),LLM算法(11个乘法,28个加法),这也是理论上8点一维DCT最快的算法。在LLM算法基础上,设计了一种适用于MPEG4视频解码器的二维IDCT结构。

本设计采用分时机构,使用一个一维IDCT核完成二维IDCT运算,即每个2-IDCT运算通过行列分解技术由两次1-IDCT核运算完成。首先计算每一行8点1-D IDCT产生中间数据,然后通过转置存储器变换行列数据,再计算转置存储器中每一列的8点1-D IDCT得到变换后的8×8宏块像素数据。整个结构由1-IDCT核、行列选择器和一个行列变换存储器组成,如图2所示。

2.1 1-IDCT核设计

一维8点IDCT的结构如图3所示。MPEG-4标准中,DCT变换前输入的像素值范围为0~255,变换后直流(DC)系数的动态范围为0~2040,任一交流系数的最大动态范围为-1000~1000。对P帧和B帧,像素表示的是差值,范围为-255~255。变换过程中使用到的频率因子均为固定系数,对其左移11位定点化后存储到专用寄存器,这样,IDCT处理核用12位即可表示任一输入系数,其值范围为-2048~2047,相应的输出为9位。需要注意的是,IDCT的失配误差会导致重构图像的加性噪声,造成图像品质下降。为控制IDCT的累计误差,需要采用特定的测试向量对系统进行对比测试,使设计的精度符合IEEE Std 1180-1990定义的误差标准。

鉴于便携式多媒体终端的特定需求及成本因素,设计的MMA占用面积需要特别考虑。本设计采用的加法器和乘法器均用一个指令周期完成,其中加法器为32位,乘法器为16×16位。整个结构采用8级流水设计,如图4所示。流水后每经过8个指令周期即可得到8点IDCT输出,输出延迟为34个指令周期。在这种流水结构下,单个指令周期内最多有2个乘法器和4个加法器并行,这样算法总共需要的乘法器数目即为2,加法器数目即为4,大大减少了芯片面积。

2.2 转置存储器

转置存储器用于实现矩阵的转置运算,它实际为一个64×12bits的RAM。通过设计两种读写模式来实现矩阵的转置运算,设计模式1的读取格式为按(0,1,2,3,4,5,6,7,8…)顺序,这对应从左上角开始进行行扫描;模式2的读取格式为按(0,8,16,24,32,40,48,56,1,9…)顺序。转置存储器的工作过程为:在前64个时钟周期,数据按模式1读出,同时新数据按模式1写入,写过程跟在读过程之后;对于下一个64时钟周期,读写信号按模式2格式。此时读出的数据既为前次写入矩阵经转置运算的结果,转换运算的等待时间是64个时钟周期。

两种模式的寻址地址通过一个6位的循环计数器来实现,对于模式1,循环计数器的计数器直接作为寻址地址,对于模式2,只需交换循环计数器的高3位和低3位数值即可得到(0,8,16,24,32,40,48,56,1,9…)的寻址序列。

3 仿真验证

整个二维IDCT电路采用RTL的Verilog设计输入,使用ModelSim进行功能仿真和验证。综合工具使用Synplify7.0,进行综合优化生成网表。底层的布局布线采用Xilinx的ISE6.3i,得到具有物理特征的后仿真文件。

验证的硬件平台采用RISC-MIPS3000+XilinxVirtex II XC2v800。首先把XVID视频解码器的C语言模型移植到RISC,并基于XC2v800建立IDCT模块的MMA协同运行机制,通过对IDCT模块软、硬件两种实现方案的开关切换进行对比测试,不但验证了系统前端设计的合理性和正确性,也保证了高层C模型与RTL模型之间对算法描述的一致性。本设计总共需要2个补码乘法器、4个加法器和一个16bit×64的RAM,由于采用流水线结构,系统时钟可以达到100MHz。表1为两种标准素材的软件解码速度和采用了MMA的硬件解码速度的比较,可以看到采用MMA硬件加速后解码速度有了较大提升。

4 结语

基于8点的LLM-IDCT算法实现了2-D IDCT处理核,采用流水线技术有效提高了处理速度,有效复用了加法器和乘法器,同时采用了行列分解技术及单RAM机制,降低了芯片面积,系统时钟可以达到100MHz。整个设计在多核平台上进行了实时验证,采用IDCT MMA后解码QCIF格式视频帧率可以达到37f/s,解码速度比软件实现提高20%以上;对QVGA格式可以达到14f/s,比软件实现提高32%以上;对CIF格式可以达到11f/s,比软件实现提高35%以上。

参考文献

[1]E Feig,S Winograd.Fast Algorithms for the Discrete Cosine Transform[J].IEEE Trans.Signal Processing,1992,40(9):2174-2193

[2]林博,高古刚,杨军.一种基于SoC的MPEG-4视频解码加速器[J].电气电子教学学报,2005,12:48-49

[3]Chow Peter S,Cioffi John M,Bingham A.A pratical Discrete Multitone Transceiver Loading Algorithm for Data Transmission over Spectrally Shaped Channels[J].IEEE Transaction Communications,1995,43(2-4):773-775

MPEG-4视频 篇7

1 MPEG-4的标准及其技术概述

针对现有MPEG-4的应用现状, 可将其具体特点总结如下:第一, 交互性。通过对相关内容的操作与对码流的编辑, MPEG-4能有效实现混合编码, 使各类码流在时间域内实现随机存取, 表现出极强的交互性特点。第二, 无论是从主观或是客观角度来讲, MPEG-4的压缩比均优于MPEG-1, 表现出明显的高压缩比特征。第三, 存储规律性。利用MPEG-4编码技术, 能够有效实现对不同类型图像的统一性存储, 虽说在图像存储过程中可能会出现对不同图像的细节进行丰富的程度不一等现象, 或者在存储过程中可能涉及到不同码率的采用, 但这并不影响对图像的统一性存储。

根据MPEG-4的标准视频框架, 可将基于MPEG-4标准的数字视频压缩的具体实现过程归纳如下:首先根据编码控制的有关机制, 确定其编码模式, 随后对有关数据进行处理, 若为帧内编码则进行DCT数据变换, 再交由合成器加工使之形成视频流重构预测帧, 作为下一帧的编码参考帧。如此往复直至所有图像帧处理完毕。

2 基于MPEG-4的运动估计分析

在视频压缩的相关技术中, 对运动估计与补偿进行帧间预测是其关键因素。而这一技术的核心内容在于对运动向量的计算。但在实际应用过程中, 对于图像静止区域及运动区域的实时分解及对有关矢量加以计算等问题, 仍存在一定难度, 这也是现今有关研究人员的工作重点内容。运动估计常用于处理帧间编码内容, 在对两帧图像的对比中获取信息, 进而对运动矢量以及当前帧进行合理预测。一般情况下使用运动矢量对各像素块间的相对位置变动进行描述。运动估计的具体实现步骤为: (1) 划分待处理图像序列中的每一帧, 使其形成多个局部结构; (2) 利用参考帧图像, 并使其与实际图像对比, 以获取每帧图像中的运动矢量。这一方法的运用可在很大程度上降低图像的帧间相关性, 使图像的压缩效率得到提升, 避免出现视频时间相关的现象。

2.1 块匹配基础上的运动估计是立足于算法中的匹配规则, 在参考帧与当前帧的不同模块间进行搜索与匹配, 从而得出估计值。

若假定当前帧在分割后形成了m×n的像素块, 每一像素块各不相同, 在X与Y两个方向上的搜索宽度分别设置为Wx与Wy;并假设划分后的同一区域块内各像素具有相同位移。在此条件下, 若设搜索区域范围为 (m+2Wx) × (n+2Wy) , 此时即可在这一搜索范围内获取目标子块的最佳匹配, 并最终经比对计算后得出运动矢量的估计值 (Mx, My) 。而在这一算法的具体应用过程中, 通常采用m=n=8或16, Wx=Wy=w。

2.2 另一种应用较为广泛的算法为自适应运动估计算法, 是在传统算法基础上改进与加工而来本文按照这一算法进行视频压缩, 并将压缩结果与其它算法进行仿真比较, 结果如图1所示。通过读图1可知, 自适应运动估计算法与全搜索算法 (FS) 的输出码率以及PSNR具有相似性, 且搜索效率更高;而相较于另两种算法而言, 在相同图像质量要求的条件下, 自适应算法编写每一帧的时间也有明显缩短, 具有较高的现实应用意义。

3 纹理编码技术的实现

纹理编码的对象具有多样化特征, 既有帧内编码模式的I-VOP, 也可对帧间编码模式B-VOP或P-VOP进行编码处理。纹理编码的主要编码方法仍以8×8像素块DCT编码方法为主, 在帧内编码时, 全部位于VOP内的像素块可进行经典DCT编码;均不位于VOP内像素块则不编码;部分位于VOP内的像素块, 对于超出VOP范围的像素块, 应先利用图像填充技术对VOP外的参考值进行准确获取, 随后再将其与VOP内像素块一起进行DCT编码处理。

需注意的是, 在帧内编码过程中, 还要求对经DCT处理后的DC与AC因子进行有效性预测;而帧间编码时, 出于编码B-VOP或P-VOP运动补偿后预测误差的目的, 一般编码人员灰浆超过VOP范围的像素值设置为128, 以实现编码目标。

结束语

综上所述, MPEG-4现已在多个视频处理的有关操作中受到重视并得到广泛应用, 该标准中还涉及到小波变换、形状多变VOP编码等多种实用性算法。上述算法在MPEG-4标准中的应用也促使MPEG-4更为完善, 其性能也得到了进一步提升, 在现有的应用中也已取得不错效果。目前, 编码人员应加大对减少编码计算量的研究, 通过对现有技术的改进, 以及对具体应用过程中的某些问题进行分析, 并在此基础上提出系统性的改进方案, 有利于推动MPEG-4在更广泛视频处理领域中得到应用。考虑到MPEG-4标准的多方面优点, 该编码技术将在多种类型的视频通信领域中得到应用, 具有较为广阔的发展空间。

摘要:信息化技术的日益普及, 使得数字视频技术成为移动通信、网络及家电信息化发展等领域的核心研究内容。数字视频压缩编码技术很好地将多种高效的图像编码技术进行有机结合, 为图像编码技术的发展与完善提供了具体方向。MPEG-4是数字视频领域的常见标准, 并凭借其优越性得到广泛运用。本文首先对MPEG-4的有关标准与技术进行概述, 随后分别分析了在该标准上建立运动估计和纹理编码的有关知识, 旨在为数字视频压缩编码人员提供参考。

关键词:数字视频,压缩算法,MPEG-4,运动估计,纹理编码

参考文献

[1]陈妍妍.基于MPEG-4视频压缩技术的自适应运动估计搜索算法研究[D].成都:电子科技大学, 2013.

上一篇:驰名商标的网上保护论文下一篇:实验日志管理