H.264压缩算法

2024-05-23

H.264压缩算法(共7篇)

H.264压缩算法 篇1

近年来,随着数字音乐、微电影、DVD等数字化作品的出现、因特网的快速传播以及各种视频编辑工具的多功能化,使得数字作品的版权保护成为急需解决的问题。数字水印技术作为视频版权保护的一种方式受到了极大的关注,并成为了科学研究的热点[1-2]。视频文件因其较大的冗余,通常以压缩的形式来存储和传输,而H. 264 作为新的压缩编码标准具有更好的压缩性能以及更快速的编码效率。因此,以H. 264 为标准的视频水印的研究受到了学者们的青睐[3-4]。

目前,基于H. 264 的压缩域视频水印的研究主要分为两类: 1) 在运动矢量中嵌入水印,这类算法大多是在P帧的运动矢量中嵌入,适合视频内容的完整性认证的目的,属于脆弱型水印,但是这类算法嵌入水印的容量很小。2) 在量化的DCT( Discrete Cosine Transform) 系数中嵌入水印,这类水印又分为两类: ( 1) 嵌入水印的系数参与编码端像素的重建过程,这类算法在压缩的过程中嵌入水印可以减小误差漂移,但是需要解码和重编码; ( 2) 在压缩后的码流中嵌入水印,这类算法只需对压缩码流进行部分解码,不需要完全解码,从而大大的降低了运算速度,但该类算法会引起误差漂移,且对视频质量的影响较大。

为了同时达到版权保护和内容认证的目的,文献[5]提出一种基于H. 264 的混合视频水印方案,将脆弱型水印嵌入运动矢量中,将鲁棒型水印嵌入量化DCT系数中。该方案通过实验证明对角线位置的系数比其他位置的系数更加稳定,因此将鲁棒性水印嵌入在对角线位置的一个高频系数中。文献[6]提出一种基于H. 264 的CAVLC( Context-Adaptive Variable Length Coding) 域的盲视频水印算法,该方案在宏块中选择一个4 × 4 亮度子块,然后将水印信息嵌入I帧除拖尾系数以外的最后一个非零量化AC系数中。文献[7]提出一种基于H. 264 的鲁棒型视频水印,该方案首先选择一个4 × 4 子块,然后将水印信息嵌入到对角线区域的一个中频系数中。文献[8]提出一种基于VLC ( Variable Length Coding) 域的H. 264 / AVC( Advanced Video Coding) 视频流内容级认证水印算法,该方案通过统计宏块中4 个8 × 8 子块中拖尾系数的个数,并筛选出拖尾系数最多的两个8 × 8 块,然后根据阈值调制两组8 × 8 块的拖尾系数的关系以达到嵌入水印的目的。文献[9]提出一种基于脆弱水印的H. 264 视频完整性认证方案,该方案选择在某个4 × 4 块的Z扫描序号为11~15 的系数根据奇偶性嵌入水印。为了保证码流的稳定性和水印的有效性,只是在非零的高频系数中嵌入水印。文献[10]提出一种基于纹理特征的H. 264 /AVC顽健视频水印算法,该方案利用人眼的视觉特性及Weber定律对当前宏块的16 个4 × 4 块进行纹理块判断,根据纹理块分类来决定水印信息的强度,采用能量差的方式对固定位置的量化AC系数进行微调以达到水印嵌入的目的。以上算法存在如下问题: 将水印嵌入一个或者多个确定位置的系数中或者是具有某个特征的系数中。这类算法安全性较低,表现在一是很容易在D/A变换、视频格式转换、空间分辨率的切换等常见的无恶意攻击中丢失水印,二是很容易被攻击者进行篡改而导致提取的水印无法识别。

基于H. 264 压缩域视频水印的已有研究大多是考虑水印的鲁棒性和透明性,却很少考虑到水印的安全性[11-14]。数字视频水印一般需要在鲁棒性、透明性和安全性之间达到一定的平衡。关于鲁棒性视频水印一般是选择在固定的位置或具有某个特征的位置嵌入水印,很容易被攻击者进行篡改而导致水印的安全性较差。针对这个问题,本文提出了一种H. 264压缩域安全型视频水印。为保证水印方案的鲁棒性,本文选择纹理复杂的4 × 4 预测模式( Intra_4 × 4) 的宏块,并根据Canny算子选出Intra_4 × 4 宏块中纹理更加复杂的嵌入宏块。为了保证算法的安全性,本文根据混沌序列对宏块内的4 × 4 子块进行分组,这样攻击者在不能确定分组的情况下,无法通过对视频信号进行大量修改,且不影响视频质量的前提下,去除水印或者是使提取的水印达到无法识别的目的。

1 安全型视频水印算法

近年来,结合H. 264 压缩编码标准的鲁棒性视频水印算法,大都选择将水印嵌入I帧亮度块的Intra_4 × 4 宏块中。H. 264 的帧内亮度块的编码技术主要采用了Intra_4 × 4 预测模式和Intra_16 × 16 预测模式,文献[10]提出H. 264 在编码视频帧时,对于纹理比较复杂的宏块大部分都选择Intra_4 ×4 预测模式进行编码。因此本文选取Intra_4 × 4 预测模式的宏块作为待嵌入域。

1. 1 嵌入宏块的选取

已有研究根据人类视觉系统HVS ( Human Vision System) 特性证明人眼对于纹理复杂宏块的敏感度比纹理简单宏块的敏感度低。本文采用Canny算子选取Intra_4 × 4 中纹理更加复杂的宏块。其中Canny算子判断视频帧中宏块纹理复杂度的基本原理如下:

1) 对视频帧进行一阶和二阶求导,然而导数的计算对噪声比较敏感。所以先用高斯滤波器来对视频帧进行滤波。

高斯滤波函数如下

经高斯滤波后的视频帧如下

式中: f( x,y) 为原始视频帧; h( x,y,Δ) 为高斯滤波函数; g( x,y) 为滤波后视频帧; x、y是像素在图像中的位置; Δ 是滤波函数的参数。

2) 求g( x,y) 的梯度

g( x,y) 的梯度大小如下

g( x,y) 的梯度方向如下

式中: Gx( x,y) 是g( x,y) 在x方向的导数; Gy( x,y) 是g( x,y)在y方向的导数; ø( x,y) 为梯度的幅值; θ 为梯度的方向。

3) 根据梯度方向抑制梯度幅值的非极大值点。

4) 采用双阈值法抑制视频帧中的虚假边缘。通过阈值t1和t2来抑制图像的非极大值,从而得到梯度值小于阈值的图像。使用阈值很高的图像得到的假边缘少,但此时的图像边缘有不连接的情况,再用阈值小的图像来弥补,从而得到完整的边缘图像,然后根据图像的边缘特征判断宏块的纹理复杂度。

1. 2 安全型算法基本原理

为了提高鲁棒性视频水印的安全性,本文采用混沌序列对子块的分组进行置乱以增加攻击者对水印信息进行篡改的难度。根据H. 264 编解码标准以及JM8. 6 对宏块中16 个4 × 4子块的处理顺序来对子块进行标记,如图1 所示。

本文采用Logistic映射的混沌序列对子块进行分组,其定义如下

式中: u是控制参数,u∈[0,4]; xk是混沌值,xk∈[0,1]。混沌序列对初值x0非常敏感,也就是说,在非常近似的初值条件下,混沌序列在进行一定次数的运算之后所产生的序列也是截然不同的,从而保证了水印算法的安全性。为了获得1~16之间的整数序列T,本文需要对混沌序列进行求模运算,公式如下

式中: a,b是参数; T是求模之后的混沌值,T∈[1,16]。

相对于JPEG和MPEG-2 编码标准,H. 264 采用了先进的帧内预测编码技术,有效的减小了视频文件的空间冗余,从而达到了一个很好的压缩率。在H. 264 的编码过程中,将预测值与原始值相减得到的差值在经过DCT变换、量化和熵编码等操作后,大部分的差值都变成了0。文献[15]提出将水印信息嵌入在非零系数中可以有效的降低比特率的增加,为了保证稳定的视频比特流,本文选择在非零的量化系数中嵌入水印。本文根据H. 264 编解码的特性对量化后的4 × 4 块DCT系数进行标记,如图2 所示,并在5~9 和10~15 中分别自适应的选择一个非零系数作为水印的嵌入位置。

本文采用混沌序列对子块分组进行置乱,将满足条件的前8个子块子块分成2 组,每组包含4 个子块,混沌分组步骤如下:

1) 利用Logistic混沌对初值敏感的特性,生成一个长度为16 的一维序列,记为H,H∈[1,16]。

2) 按照图1 的顺序对宏块中的16 个4 × 4 子块进行标记,结合视频帧的边缘特征和宏块的编码模式,产生一个16位的0、1 序列,记为R。

3) 将1) 得到的序列H和2) 得到的序列R进行相与运算得到序列G,并将序列G作为秘钥。

4) 根据序列G将宏块中的16 个4 × 4 子块分成2 组,每组由4 个4 × 4 子块组成。

1. 3 水印的嵌入算法

本文的算法在H. 264 的编码过程中,根据待嵌入的水印信息和分组子块能量差之间的阈值关系来嵌入水印,水印的具体嵌入过程如图3 所示。

水印的嵌入步骤如下:

1) 将大小为M × N的二维有意义的水印图像转换为一维的0、1 序列,记为W。

2) 根据宏块分组原则得到的序列G将宏块分成2 部分,分别记为G1和G2,每个部分包含4 个4 × 4 子块。

3) 计算每组子块的能量,4 × 4 子块的能量Ei计算如下

式中: x1,x2分别是当前4 × 4 子块中所选择的2 个量化系数;Ei代表分组后第i个子块的能量; i代表分组后子宏块标记顺序。

4)根据能量差嵌入水印,公式如下

式中: Tr是嵌入阈值; Eg1是第一组的能量; Eg2是第二组的能量; W是水印信息。

5) 当w = 1,而Eg1- Eg2< Tr时,需要增加Eg1或者减小Eg2的值来满足式( 10) 。先使G1组中4 个子块的系数值都增加1,若不满足式( 10) ,则使G2组中的4 个子块的系数值减小1,如此循环,直至满足式( 10) 。

6) 当w = 0,而Eg1- Eg2≥Tr时,需要增加Eg2或者减小Eg1的值来满足式( 10)。先使G2组中4个子块的系数值都增加1,若不满足式( 10) ,则使G1中的4 个子块的系数值减小1,如此循环,直至满足式( 10) 。

1. 4 水印的提取算法

本文的水印信息提取算法操作简洁、迅速,只需要解码出量化DCT系数就可以完成水印信息的提取,不需要对视频序列进行全部的解码,也不需要原始视频的参与。水印的提取过程如图4 所示。具体提取步骤如下:

1) 先对压缩过的视频序列进行熵解码,重排序,取出量化的DCT系数。

2) 根据秘钥G对宏块的子块进行选取。

3)计算每组的能量,并求出两组的能量差,记为Ed。

4)如果Ed≥0,则w=1;如果Ed<0,则w=0。

2 实验结果及分析

本文的水印嵌入和提取以及攻击实验是结合Open CV在H. 264 编解码标准的参考软件JM8. 6 的平台上进行的。本文的测试序列有Forman,City,Habour,Ice,Mobile,Soccer,参考软件JM8. 6 的参数配置以及所使用的视频类型如表1 所示。

2. 1 透明性实验

图5 是Forman和Habour视频序列的第一帧图像在水印嵌入前后的效果图,将原始的和嵌入水印之后的图像进行比较可以发现,嵌入水印后对视频造成的影响并不被人眼所感知,满足水印透明性的要求。主要是因为水印信息嵌入在Intra_4 × 4 预测模式中纹理复杂的宏块,通过对中高频系数进行微调以达到嵌入目的,而人眼对中高频的误差不敏感,这在一定程度上保证了水印的透明性。

图6 对Forman,City,Habour,Ice,Mobile,Soccer这6 种视频序列做了相应的测试,通过比较视频在嵌入水印前后的PSNR发现: 嵌入水印后,视频的PSNR有所减小,也就是说视频的质量实际上是有所下降,只是从主观上不易被人眼所察觉。图6 中的6 种视频测试序列,在嵌入水印后PSNR平均下降了0. 53 d B,从客观上保证了视频的质量。

2. 2 抗重编码实验

为了分析本文算法对重编码的抵抗能力,表2 选择了5种相同格式( CIF) 、相同大小( 176 × 144) 的测试视频Forman,City,Habour,Ice,Mobile,Soccer,在同一量化步长( QP = 28 ) 条件下对已嵌入水印的视频序列进行重编码处理,重编码后提取的水印图像如表2 所示。

通过比较表2 中6 种视频序列在遭受重编码的攻击下提取的水印图像,虽然有一些错误比特,但在没有原始水印图像的比对下还是可以清晰辨认,从而证明了水印算法具有抗重编码攻击能力。

2. 3 攻击性实验

本文通过对Forman视频序列进行测试,并比较文献[12]和文献[14]与本文算法的水印性能,比较结果如表3所示。

已有的基于H. 264 压缩域的鲁棒性实验一般是将水印嵌在量化后的DCT的一个系数上,本文通过混沌置乱对子块进行分组并将水印信息嵌入到多个系数中,这样大大地增加了水印的鲁棒性和安全性。

表3 通过 ρ 值来比较水印算法的性能,ρ 的计算公式如下

式中: Ns表示嵌入与提取水印图像中水印比特相同的个数;Na表示嵌入水印的总个数; ρ 表示提取水印的正确率,ρ 值越接近1,水印的鲁棒性越强,抗攻击能力越强。

由表3 可知,在相同测试条件下,本文嵌入水印后的PSNR相对于文献[14]来说增加了0. 07 d B,同时码率也增加了0. 27 kbit/s,但本文算法抗攻击的能力强于文献[14]。本文的算法与文献[12]相比,嵌入水印后PSNR减小了0. 04 d B,码率减小了0. 61 kbit / s,同时本文在遭受重编码、高斯低通、高斯噪声等攻击时提取出水印的性能优于也比文献[12]。由表3 可知,本文的算法抗循环滤波攻击的能力不如文献[14]和文献[12],但抗其他常见视频水印攻击的能力优于文献[14]和文献[12]。

3 结语

本文提出了一种H. 264 压缩域安全型视频水印算法,通过分析H. 264 的编解码特性,并结合视频帧的边缘特征,在4 × 4子块的两个特定区域分别选择一个量化DCT系数来嵌入水印信息。与已有的视频水印算法不同,本文采用混沌序列的无规则性对子块进行分组,增强了算法的安全性,并且水印算法在提取的过程中不需要原始视频的参与,实现了盲提取,降低了算法的复杂度。实验结果证明,算法对重编码、高斯噪声和低通滤波等常见的水印攻击具有抵抗力,并适用于版权保护系统、法庭取证等安全性要求比较高的视频应用。然而,进一步的研究任务是在保证视频质量的前提下,如何减小水印嵌入所引起的误差漂移现象。

摘要:针对已有的视频水印算法安全性较差的问题,结合H.264的编解码特性,提出一种H.264压缩域安全型视频水印算法。算法首先对宏块中的16个子块进行标记,然后利用Logistic混沌序列、帧内预测模式和边缘特征选出前8个子块并将其分成两组,最后利用子块间能量差来嵌入水印。算法利用混沌序列对子块分组进行置乱增加了攻击者对水印信息进行篡改的难度,从而提高了算法的安全性。仿真实验证明该算法具有高安全性,另外具有较好的鲁棒性和透明性。

关键词:H.264,视频水印,边缘特征,Logistic混沌序列,能量差

H.264压缩算法 篇2

目前,对于视频序列中运动目标的检测与跟踪算法有两个方面:其一,基于非压缩域,即把连续的视频序列分解成一系列图像帧进行研究,如果用非压缩域方法提取压缩流中的运动目标,需要先将视频流解压缩,从而针对各帧图像进行相应处理,既费时又不利于图像实时处理;其二,基于压缩域,针对视频流不完全解码,利用压缩流中一些能反应运动特征的因素直接进行处理,这样即节省了计算时间,有利于实时处理。而且在压缩流中蕴含着丰富的运动信息,提取也相当方便。

近年来对压缩域的运动目标检测算法尚处于研究发展阶段,针对运动矢量(MV)[1]和离散余弦变换(Discrete Cosine Transform,DCT)系数[2,3]。运动矢量代表了两帧之间的相关性,反映了宏块的运动大小及运动方向。因此,它是最能反映运动目标运动特征的因素。由于离散余弦变换系数被广泛应用于图像压缩中,而且其中的直流(DC)系数反映了图像的平均能量,交流(AC)系数反映了像素之间的差异的频率和方向信息。因此,其对DCT压缩图像的检索也提供了方法。

然而,H.264标准采用了一些新的编码工具以及不同的视频格式。在H.264标准中,帧内编码参考已编码块的邻近像素被引入空间域。这样,宏块的DCT系数包含的是空间预测的残差信息[4]。另一方面,不同于以往的MPEG标准,H.264标准中,一个宏块可以划分成7种不同模式的尺寸。在每个宏块中可包含1,4,8或16个运动矢量。这使得在H.264的压缩域进行运动目标检测是一项富有挑战性的工作[5]。

针对H.264压缩域码流的特点,除利用了运动矢量外,将宏块分割类型考虑进去,提出一种简单、易于实现的运动目标检测算法,适用于智能监控,视频处理等领域。

1 中值滤波

由于H.264标准对宏块的分割采用了7种不同的模式。有必要将不同尺寸的宏块化为大小统一的4×4像素,然后采用中值滤波法滤除背景噪声

mvc=mediΝ×Ν{mvi},i=0,1,,Ν×Ν-1(1)

其中,mvc是中值滤波的输出结果;mvi是滤波窗口中的运动矢量;med()是中值滤波函数;N×N是滤波窗口大小。

2 运动目标提取

对于静止背景的视频序列中,存在着大量纹理较简单的平滑区域,结合H.264的编码特性,这些区域大都以16×16像素大小进行分割,而运动目标的纹理相对较复杂,分割也较小。因此,宏块分割类型(mb_type)可以有效的反映一些运动信息,并且它可以和运动矢量进行同步提取,对算法的复杂度不会有影响。结合H.264编码特性,通过比较观察,可以发现,在P帧中运动目标内部的平坦区域,如颜色相同的衣物部分一般都采用帧内16×16的分割模式,而背景上由于设置了跳转(Skip)宏块,平坦区域大都采用跳转宏块类型。因此,帧内16×16宏块可以被认为是运动宏块。

对经过宏块分割类型预提取的运动宏块,提出自适应阈值运动矢量检测方法。当然,由于检测单位小,在背景上具有相对复杂纹理的区域或者经中值滤波后未被滤除的运动矢量也将被检测出来。针对这一点,进一步对检测出的运动矢量进行分析。发现运动目标的运动矢量相对集中且模值较大,而背景上的运动矢量分散且模值较小。由此,设定自适应门限,再次对检测出的运动矢量进行搜索,最终提取出运动目标。

实验中,只对P帧的宏块进行分析,检测过程如下:

(1)以归一化的4×4子块为单位,求运动矢量的模值

其中,mv_sum为当前宏块的运动矢量模值;mvxx方向上的运动矢量;mvyy方向上的运动矢量。

同时根据mb_type判断宏块分割类型,去除宏块分区数目为1的宏块

(2)将搜索窗口设置为3×3个子块;

(3)判断宏块类型,若为帧内16×16宏块,标记其为运动块,否则,下转步骤(4);

(4)在搜索窗口中,计算8邻域子块与中间子块的运动矢量模差的绝对值,并取最大值的80%作为该搜索窗口的阈值,同时,统计搜索窗口中矢量模差小于该阈值的子块数和矢量模不为0的子块数,进行判断

其中,mb_4×4sub为当前4×4子块;1为当前子块为运动子块;0为但前子块为背景子块;W为矢量模差小于阈值的子块;A矢量模不为0的子块;

(5)上转步骤(3),直到当前帧的所有子块检测完毕;

(6)运用先开后闭运算对结果进行形态学滤波;

(7)运用投影法对运动目标精确定位。

3 实验结果

文中所选测试序列均为使用JM8.6版本的H.264编码软件压缩后的视频流文件。标准测试序列Hall-monitor的第29帧的测试结果,Hall-monitor为352×288像素/每帧,序列长为300帧。图1为Hall-monitor序列的检测结果,第1行为第29帧检测结果,第2行为第53帧检测结果。

图1(a)为经自适应阈值选取法检测出的运动目标,从图中可以看出运动目标已基本检测出来,但背景上依然存在少许运动矢量块。图1(b)为最终检测结果,可以看出运动目标的定位是准确的。

为了更有效地评估所提算法的性能,引入Precision和Recall两个客观评价指标

式(5)中Precision表示检测的精确度;MBr表示正确检测块的数目;MBw表示错误检测块的数目。精确度反映运动目标检测的准确程度,精确度越高,检测出的运动目标越准确,反之亦然。式(6)中Recall表示分割率,MBl表示检测中丢失的运动块。分割率反映检测区域包含运动目标的程度,分割率越高,检测区域中包含对象的程度越高,反之亦然。图2(a)为Precision指标,从图中可以看出目标检测的精确度是较高,而且折线起伏较小,说明该算法检测较为稳定。图2(b)为Recall指标,从图中可以看出折线局部呈稳定状态,由于第55帧之后人物开始想远离原理摄像头的方向行走,导致目标边缘的一些块被漏掉,后半段起伏较大。

4 结束语

针对H.264压缩域,结合宏块分割类型,提出一种自适应阈值的运动目标检测方法,经过形态学滤波和投影法的精确定位,检测效果较好,准确率较高,且易于实现。适用于智能监控,视频分析等领域。

摘要:基于H.264压缩域的运动目标检测算法。首先,从压缩码流中提取原始运动矢量场,采用中值滤波法滤除运动场中由噪声引起的运动矢量;再利用从压缩码流中提取的宏块分割类型初步排除一些分块较大的伪运动块;然后采用自适应阈值选取法定位出运动区域;最后,通过已定位的运动区域的特征进一步精确识别出运动目标。算法充分利用了H.264码流中的运动矢量信息,简单易于实现,适用于智能监控,视频分析等领域。试验结果表明,该算法检测效果较好,且不需要对压缩码流进行全部解码。

关键词:运动目标检测,H.264,压缩域

参考文献

[1]Zeng Wei,Du Jun,Gao Wen,et al.Robust Moving Ob-ject Segmentation on H.264/AVC Compressed Video Using the Block-based MRF Model[J].Real-time Imaging,2005,11(4):290-299.

[2]Wang Dajinn,Chen Thouho,Liau Hungshiuan,et al.A DCT-based Video Object Segmentation Algorithm for Rainy Situation Using Change Detection[C].Piscataway,USA:IEEE International Conference on Innovative Computing,In-formation and Control,IEEE,2006:261-264.

[3]Yu Xiaodong,Duan Lingyu,Tian Qi.Robust Moving Vid-eo Object Segmentation In The MPEG Compressed Domain[C].Piscataway,USA:IEEE International Conference on Image Processing,IEEE,2003:933-936.

[4]毕厚杰.新一代视频压缩编码标准——H.264/AVC[M].北京:人民邮电出版社,2005.

H.264压缩算法 篇3

近年来, CCD成像技术发展迅速, 高帧频高清晰面帧CCD已经成为主要的数字相机的图像传感器。然而, 面帧CCD也存在一定的问题, 如数据量极其庞大等, 这无疑使得相机数传系统面临着更大的压力。因此, 适当压缩面帧CCD视频十分有必要。目前, 国际的视频编码标准已经实现了JPEG向H.264编码标准的转变。

H.264具有明显的抗误码率强、低比特率等优点, 它是一种最新型的视频压缩算法, 在国际上享有盛誉。H.264的应用范围非常广泛, 适合在各种视频压缩场合上使用。此外, DSP技术发展势头迅猛, DSP处理器出现了一种专门的多媒体处理器, 并对各种视频进行专门的处理。近年来, 最新频专用处理器TMS320DM642 (最高主频高达600MHz) , 这就使得视频压缩算法的实现性需求得到最大程度的满足。

二、设计思路

CCD摄像机的摄像头输出模拟视频, 在TVP5150模拟视频输入接口有效实现模数转换后, 将YUV格式数字视频信号有效输出, 这个输出信号直接与S3C6410Camera接口相交接。

三、S3C6410方案

3.1 S3C6410处理器简介

ARM作为微处理器设计技术发展的典型代表, 使得嵌入式设备实现多媒体处理具备了一个较好的硬件平台。特别是近年来新推向市场的ARM11系列的微处理器, 它在音频和视频处理上有了更为丰富、灵活的多媒体处理指令。而ARM11架构中低功耗、低成本、高性能的微处理器三星S3C6410, 内部实现了多个具有强大功能加速器的集成。包括运动处理图像、显示控制以及缩放图片等。它内部已经集成的格式编解码器具有支持VCl解码、MPEG4、H.263、H.264编解码等功能。在需要进行视频处理的时候, 通过S3C6410处理器的采用便无需进行频编解码算法的开发, 计设人员便有足够的精力投入到应用软件开发层面上, 这就在一定程度上保证了开发效率的提高。

S3C6410是在ARM11架构的基础上设计出来的精简型指令集处理器, 它在多媒体的便携设备具有重要功用。由于其内部实现了一个多格式的频编解码器集成, 这就是使得其为视频编解码的操作项目带去了极大的便利, 也为摄像机的改进与设计提供了重要的灵感。该编解码器可以支持H.264或MPEG4视频编解码, 实现720*480分辨率每秒30帧视频编码的操作。此外, 对摄像头的输入接口进行预留, 在摄像机主控芯片中得到比较好的应用。它硬件的外设主要包括TFT24bit_真彩色LCD控制器、Camera接口、系统管理单元、32通道DMA、4通道UART、通用I/O口、4通道定时器、2S总线、USB Host、2C总线、高速USB OTG、高速MMC卡接口及其内部PLL的时钟发生器等。

3.2 S3C6410处理输入视频的设计思路

数字视频输入后被送至S3C6410处理器, S3C6410多格式的视频编解码器MFC对MPEG4进行视频压缩, 就能将音频信号转换成mp4的视频文件。

四、H.264在DSP平台上实现和优化

跟H.263比起来, H.264的性能更为理想。H.264是目前性能最好, 但也是最为复杂的视频编码标准, 它的编码效率较高。H.264最大优点在于其在保证视频质量的前提下, 能够有效获得较高压缩比。H.264编码在分层上主要分为网络提取层 (NAL) 及视频编码层 (VCL) 。VCL可以对视频数据进行编码及解码, 它包括了编码变换、运动补偿及熵编码等。NAL用来提供视频压缩码流传输规范, 主要包括多字节视频数据、单字节头信息、逻辑通道及时间信息、还有视频序列的结束信号等。而头信息又可以分为存储标识与标识两种类型。头信息主要应用于图像数据的类型识别。H.264在编码框架上仍然采用传统的混合型, 并且进行很多其它细节的改进。

摘要:对高速CCD视频信号进行专门、深入的研究, 可以使得相应的电路设计更加科学、高效。本文, 笔者在H.264视频编码算法的基础上设计了一种高速CCD视频压缩系统, 为了保证压缩算法处于高速运行状态, 系统的软硬件管理工作可以通过DSP/BIOS资源的使用来实现。此外, EDMA高速搬运数据策略的采用可以有效促进数据的高速交互, 保证数据实时传输的顺利完成。

关键词:H.264编码算法,高速CCD视频压缩系统,设计

参考文献

[1]李青华, 于峰崎.基于TMS320DM642的X264视频编码器的优化[J].电视技术, 2010, 34 (8) :39-42.

[2]徐华根, 唐慧明, 杨黎波.新型多媒体处理器DM642及其应用[J].电视技术, 2005, 29 (1) :36-38.

H.264压缩算法 篇4

视频运动对象分割被广泛应用于视频编码、视频检索和智能视频监控等。基于运动的对象分割方法主要有三种:第一种是基于变换检测的方法,此方法易受到光照的影响;第二种是同时进行运动估计和运动分割的方法[1],此方法将运动估计和运动分割并行执行,提高了分割质量但运算量较大;第三种是从压缩域提取运动矢量场的方法,最早在MPEG压缩域上提出[2]。近年来H.264视频编码标准以其优良的压缩效率和编码灵活性得到了广泛应用,从H.264未完全解码的视频流中直接提取运动矢量场进行对象分割,作为一类可以提高分割效率的方法得到了广泛的研究[3,4,5,6]。

笔者提出一种基于块特征改进的H.264压缩域分割方法。利用从H.264压缩域提取的稀疏矢量场,首先通过矢量中值滤波和基于块的前向矢量积累等预处理得到更稠密显著的运动场,定义块特征,再采用K均值和EM混合分层聚类方法将对象提取出来。实验结果表明,本方法相比文献[6]的聚类方法,进一步提高了分割效率,且对不同应用场景具有更好的稳健性,实现满足实时要求的较精确分割。

1 运动场预处理

1.1 矢量中值滤波

把H.264压缩视频中的运动矢量场归一化为4×4的块,用矢量中值滤波能够消除孤立矢量噪声并且平滑相邻块之间运动矢量的差异。

使用滑动窗方法进行中值滤波,首先定义N×N窗函数内各元素之间的差异度di为

式中:vi和vj是N×N窗内的运动矢量;L表示欧几里德距离。将{di}升序排列映射到{vi}。最后根据式(2),以排序后的vout作为最后的输出结果。

式中:,v是平均矢量,ρ是预设的阈值。

1.2 基于块的前向矢量累积

文献[5]采用后向运动累积方式,能增强对象运动及摄像机全局运动之类可靠的运动信息,又抑制了单帧运动矢量场通常存在的噪声,其实质是对当前块所在位置及后两帧同一位置上出现的矢量进行累积。本文采用的基于块的前向运动累积方法是针对同一块当前帧及其前两帧的运动矢量进行累积。该方法可以有效解决当前处理帧运动目标内存在静止块不易后续处理的情况,并且通过积累得到了更加显著的矢量场,同时增强了矢量中值滤波无法消除的大块光影噪声矢量,使宏块特征可有效区分两者的差异并消除光影噪声矢量,宏块特征在第2.1节讨论。

为了获得累积运动场,首先采用前向估计的方法重建预测运动场,如图1所示。

利用当前t时刻和t-1时刻的运动场MFt和MFt-1来重建预测运动场PMFt-1。以4×4块为基本处理单元,如图中A块表示的4×4块为例,根据t时刻A块的运动矢量,确定出t-1时刻A块对应的位置。A位置如图1中MFt-1所示,由A所在位置,根据式(3)计算出A块的预测运动矢量。

式中:wi对应MFt-1位置上覆盖i块(如图,i=1,2,3,4)的面积百分比;vi为i块在t-1时刻的运动矢量。

每个块的运动预测矢量都由以上方式得到,就得到了PMFt-1。同理根据MFt-1和MFt-2重建出PMFt-2。最后由式(4)得到最后的累积运动场AMFt。

2 对象分割

2.1 宏块特征定义

把积累后的运动矢量场组织成16×16的宏块形式,以宏块强度,宏块内矢量差异度作为积累后运动场的宏块特征。宏块强度用I表示,宏块内矢量差异度用D表示。

式中:x与y是宏块内4×4块运动矢量的水平和垂直运动分量;q函数以一定阈值将求得的矢量强度归一化。

式中:MB为当前宏块;dif函数计算宏块内不同矢量的个数。

由于H.264编码时运动估计的特性[7],积累后的运动场呈现以下特点:

1)背景的宏块强度为0。运动目标及剧烈光影噪声的宏块强度趋于1,而一般噪声趋于0。

2)运动对象宏块内矢量差异度较大,而背景及噪声的宏块内矢量差异度趋于0。

2.2 宏块层聚类

K均值聚类算法核心思想是找出K个聚类中心,使得每一个数据点和与其最近的聚类中心的平方距离和最小化。它的算法复杂度低,聚类效率高。

本文采用混合多层的聚类方法,首先使用K均值聚类以I和D为特征进行宏块层聚类,经过几次迭代,实现对象初步提取。

算法步骤:

1)初始化宏块级聚类中心;

2)根据每一个宏块数据特征找到离它最近的聚类中心,并将其分配到该中心标明的类;

3)计算新形成类的聚类中心:计算新形成的类中每一个宏块数据特征的平均值作为新的聚类中心,然后重复2),直到聚类中心不发生变化继续4);

4)完成聚类。

2.3 块层聚类

宏块层聚类后,将聚为运动对象类的宏块重新组织成4×4块形式,提取其中每一个4×4块的运动矢量作为块层的特征。接着使用EM聚类来进行块层运动对象分割。EM聚类算法在E步骤和M步骤之间交替直到收敛。

2.3.1 E步骤

定义j个运动模型作为初始聚类中心uj,由式(7)计算每个4×4块运动矢量v(B)到聚类中心uj的距离rj(B),即uj和v(B)的差的平方

再由rj(B)得到运动矢量v(B)属于第j个运动模型uj的后验概率Pj(B)。

式中:n是给出运动模型的个数,σ2逼真度系数。

2.3.2 M步骤

利用最小二乘估计使下列的误差函数最小来更新聚类中心,即运动模型参数ui。

从而得到更新的运动模型参数为

算法步骤:

1)初始化聚类中心(运动模型)u1,u2,…,uN;

2)计算每个运动矢量属于每个运动模型的概率P(jB);

3)按照式(10)更新运动参数;

4)判断更新后的运动参数是否与原来一样,不一样回到2),一样则终止迭代。

最后根据下式将运动矢量分配给每个相应的模型

式中:T为判定运动矢量是否属于第j个矢量模型的阈值。

3 实验结果及分析

选取典型的pairs和hall作为实验测试序列,2个序列均为352×288的CIF格式。实验使用JM8.6版本的H.264编码器对序列进行编码。编码器设置为:Baseline Profile,IPPP。运动估计搜索范围是[-32,32],量化参数为30。EM聚类中T取值在0.7~0.9之间,σ2取值在0.01~0.09之间,实验中根据序列不同略微调整。图2是hall第93帧的分割实验。

图2b是该帧宏块层分割的结果,可以看出对352×288的测试序列,宏块层只需要对22×18个宏块的二维特征数据进行聚类,结果属于运动对象的只有23个宏块,即368(23×16)个4×4块继续进行块层的EM聚类。文献[6]采用对矢量中值滤波后的4×4非零矢量块直接进行EM聚类,由于hall存在剧烈光影噪声,图2c显示了矢量中值滤波后所有非零矢量块,共计1 069块。可见本文采用分层聚类方法需要的数据量仅为文献[6]方法需要数据量的1/3,显著提高了聚类效率。

图3是pair第36帧的分割实验,图3c显示的是该帧矢量中值滤波后的所有非零矢量块,男士左侧身体暂时静止,女士抛的小球运动剧烈,运动估计没有找到匹配块而采用了帧内预测的方式,故块的矢量都为零,文献[6]的方法无法处理此种情况。本文通过基于块的前向运动累积有效地消除了这种情况的影响,图3b和3d分别是宏块层和块层的分割结果。

通过以上比较分析,在文献[6]满足实时处理的前提下,本文改进的分割算法进一步提高了分割效率,并且对有实时要求的不同应用场景有更好的稳健性。

4 结论

笔者提出一种改进的H.264压缩域运动对象分割方法。该方法首先通过对运动矢量场进行矢量中值滤波,基于块的前向运动累积等处理,然后提取块特征采用改进的K均值与EM混合分层聚类方法将运动对象提取出来。实验结果表明,笔者提出的改进的分层混合聚类算法在原有聚类算法的基础上针对不同静止场景获得了更高处理效率和更好的稳健性,且分割质量较好。

摘要:针对H.264压缩域,提出一种改进的运动对象分割方法。首先提取运动矢量场,对该矢量场进行矢量中值滤波,然后基于块进行前向矢量累积获得更加显著的矢量场,最后采用改进的K均值和EM的混合分层聚类方法,基于宏块层、块层两次聚类将运动对象分割出来。实验表明,该方法通过分层聚类,进一步提高了分割效率,能实现满足实时要求的较精确分割。

关键词:H.264,运动对象分割,压缩域,块特征,分层聚类

参考文献

[1]SHEN H F,ZHANG L P,HUANG B,et al.A MAP approach for jointm otion estimation,segmentation,and super resolution[J].IEEE Trans.I mage Processing,2007,16(2):479-490.

[2]VENKATESH B R,RAMAKTLSHNAN K R,SFINIVASAN S H.Videoo bject segmentation:A compressed domain approach[J].IEEE Trans.C ircuits System for Video Technology,2004,14(4):462-474.

[3]ZENG W,DU J,GAO W,et a1.Robust moving object segmentationon H.264/AVC compressed video using the block-based MRF model[J].Real-Time Imaging,2005,11(4):290-299.

[4]LIU Zhi,LU Yu,ZHANG Zhaoyang.Real time spatiotemporalsegmentation of video objects in the H.264compressed domain[J].VisualC ommunication and Image Representation,2007,18(3):275-290.

[5]陆宇,张兆杨,刘志,等.基于运动特征的H.264压缩域对象分割[J].光电子·激光,2009(5):668-671.

[6]刘方青,石旭利,张兆扬.基于EM聚类的H.264压缩域视频对象实时分割算法[J].中国图象图形学报,2007,10(10):1819-1822.

H.264压缩算法 篇5

H.264/AVC标准是一种高性能的视频编解码技术,相比以前的标准,具有更高的压缩率、高质量图像、容错功能、并有很强的网络适应性。

随着Android技术的迅猛发展和日趋成熟,其开放性、便携性、良好的兼容性、无缝结合网络通信等特点将使Android操作系统在未来工业领域中有广泛的应用。

1 系统概述

基于Android平台的视频服务器监控系统由监控前端、监控终端和网络3部分组成。监控前端是一个嵌入式Android系统,通过S3C6410的USB摄像头采集视频数据,并传送给Android应用层的编解码模块,应用层通过调用JNI接口链接Android底层封装的动态库,实现基于H.264标准视频压缩,将压缩数据打包发送到IP网络上,监控终端通过网络接收数据包,最后解码进行实时播放。基于Android平台的H.264视频压缩技术的总体框架图,如图1所示。

2 系统的硬件设计

基于Android视频服务器系统包括视频信息采集模块、视频信息编解码模块、视频数据传输和显示模块组成。视频信息采集和编码模块是整个监控系统的前端,主要由USB摄像头和Android底层的系统库实现;视频数据传输模块是整个监控系统的中继,负责监控前端和监控终端视频数据的交互工作;监控终端主要由LCD显示模块和电源模块组成,LCD显示模块实时查看视频,电源模块为系统提供运行所需的能量。

该技术设计采用Samsung公司的ARM11 S3C6410嵌入式处理器为核心,其主频为533 MHz/667 MHz,S3C6410是基于16/32-bitRISC内核的低成本、低功耗、高性能微处理器解决方案,内部集成多个功能强大的硬件加速器,结合外部极佳的接口设备,能够满足Android程序开发的需求。其外接存储设备包括256 M的DDR-SDRAM、2 MB的NOR Flash、2 GB的NAND Flash。外围接口包括串行口、JTAG调试接口和USB接口,其中USB接口连接摄像头负责视频数据的采集,LCD进行实时显示。视频采集设备硬件结构如图2所示。

3 软件设计概述

Android的系统构架分为应用层、应用框架层、系统运行库和Linux内核层,Android应用程序的开发通过应用框架与Android底层进行交互。技术实现设计采用模块化设计方案,主要包括底层驱动移植模块、视频采集模块、视频压缩传输模块和视频显示模块。

基于Android的视频服务器系统主要包括监控前端、中间网络和监控终端。监控前端的USB摄像头采集视频数据,Android应用层调用封装的JNI库进行标准的H.264压缩,经过网络打包发送给监控终端,终端通过解码实时查看视频。其中流媒体服务器主要由3层结构组成:服务器、网络服务接口和驱动模块,如图3所示。

3.1 操作系统结构

Android作为终端操作系统,其软件层次自下而上分为:基于Linux内核的操作系统层,各种库和Android 运行环境,应用程序框架和应用程序。结构图如图4所示。


(1)应用程序。

应用程序包括Email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有应用程序均使用Java语言编写。

(2)应用程序框架。

应用程序架构设计简化了组件的重用;任一个应用程序都可以发布功能块并且其它应用程序都可以使用其所发布的功能块。

(3)系统运行库。

当使用Android应用框架时,Android系统会通过一些C/C++库来支持使用的各个组件,使其能更好地服务。其中包括Bionic系统C库,多媒体库,关系数据库SQLite,Web浏览器引擎Webkit等。

(4)Linux内核。

Android 的核心系统依赖于 Linux 2.6内核,它同时也是硬件和软件之间的抽象层。此外Android对其做了部分修改,主要涉及两部分。Binder(IPC):提供有效的进程间通信,实现了自己的功能;电源管理:主要为省电,作为手持终端设备低耗电是追求目标。

3.2 底层驱动移植模块设计

Android系统本身是一个庞大的系统,移植需要考虑Android系统的硬件抽象层(HAL)和Linux中的相关设备驱动程序。移植的目的就是为了改动较小的内容,支撑较为庞大的上层系统。该系统驱动的移植主要为满足上层应用层的USB摄像头视频采集需求。

Android系统驱动移植首先要熟悉硬件抽象层的接口,其次要集成和复用已有的驱动程序,主要的工作量在硬件抽象层的实现中。移植的主要工作有两方面:Linux驱动、Android系统硬件抽象层。

USB摄像头驱动程序介于视频采集应用程序与Linux内核中USB核心的中间层。其一,USB摄像头驱动向USB核心注册本身的信息,并调用USB核心提供的API函数为上层服务;其二,应用程序通过调用USB摄像头驱动的一套接口函数进行视频采集和调整摄像头参数等操作,如图5所示。

3.3 视频采集模块设计

基于Android系统的H.264压缩技术的视频采集部分包括Android视频流的提取以及Android界面设计两部分。Android可以在拍照视频预览时截取视频流的数据。每获得一帧调用相应的接口函数。其中在Android的上层界面中定义了一个SurfaceView类,主要用于显示采集到的图像。Android通过USB摄像头采集格式为YUV的视频数据,通过SurfaceView类接口传输到应用层通过图像绘制进行显示。

应用程序界面设计具体步骤:打开Android项目里的res\layout目录,用xml语言来编辑设计程序界面。首先确定界面的布局,嵌套ViewGroup的LinearLayout和RelativeLayou进行布局,调整android:layout_width、android:layout_height、android:background、android:padding等参数值,达到满意的整体布局效果。然后在ViewGroup布局中添加View控件:textview、button根据实际需要调整各控件的android:id、android:layout_height、android:layout_width等参数值,最终完成对Android应用程序UI的布局。

3.4 H.264视频压缩模块设计

H.264是由ITU-T的VCEG和ISO/IEC的MPEG联合组建的联合视频组提出的一个新数字视频编码标准。它由VCL层和NAL层组成,VCL层主要负责编解码,主要包括运动补偿、变换编码、熵编码等;NAL层主要为VCL提供与网络无关的统一接口,负责将视频数据封装打包后传递给网络。

H.264标准视频压缩算法包括5个环节:帧间帧内预测编码、正反变换编码、量化反量化编码、环路滤波和熵编码。算法流程如图6所示。

技术实现是在Android操作系统上封装编译生成Android底层Library的JNI动态链接库,进而实现H.264标准编解码。具体实现步骤:选择合适的编码器,系统采用X264的编码器。X264省去了部分复杂增益,编码速度非常快,可以对CIF格式图像实时编码。H.264压缩画面以及分辨率:支持CIF/QCIF;图像分辨率:352×288;压缩格式H.264、MPEG-4压缩格式;压缩帧率:1~25帧可调;压缩码率:64 kbit·s-1~2 Mbit·s-1;码流控制方式:变码流、动码流、混合码流。H.264的优势主要体现在下面几个方面:(1)精确匹配解码,避免错误累积;(2)更简单的规范实施;(3)强大的容错能力;(4)高效压缩,比其他视频压缩能力高50%以上;(5)时延级差,以适应更多应用环境等。

3.5 主程序流程设计

基于Android视频服务器系统终端要接受来自监控前端的视频数据,必须采用Socket网络通信技术。

在进行Socket通信前必须对Socket初始化包括:创建Socket、绑定Socket和端口号、开始监听端口等步骤。创建Socket服务线程。当监听产生后,主进程负责不断循环地监听接收到的请求并建立新的客户连接Socket,创建针对此Socket的通信进程。

3.6 显示模块设计

Android平台的视频服务器监控系统终端显示需要对视频数据进行解码,通过LCD液晶显示屏实时观看。解码过程是编码的反变换,其中包括获取视频流,视频流信息的配置,视频流的帧解压,以及图像处理过程。该系统选择4.3寸(10.92 cm)LCD显示屏在进行显示端实时查看视频图像。

4 结束语

基于Android系统的视频客户控制界面,无需专用监控软件、使用方便、成本低。系统通过Arm11 CPU直接进行视频处理和传输,在提供高性能的同时,也允许在性能和功耗间做权衡满足某些特殊的应用需求。鉴于Android视频服务器的高性能和前沿性,基于Android平台的视频服务器可以在安全性要求高的各种场合得到应用,同时结合实际的应用再可以进行功能扩展,可应用到众多的有线或无线视频监控领域。

摘要:提出了基于Android平台的H.264视频压缩技术设计方案,该方案终端设计是基于S3C6410处理器的硬件和Android 2.3版本的软件平台,通过终端USB摄像头的驱动移植、视频图像的H.264标准压缩以及Socket网络编程,实现网络视频监控的实时显示。

H.264压缩算法 篇6

关键词:H.264/AVC,MPEG-4,编码

0 引言

在当前的数字广播电视行业中,包含了多种先进技术,例如高清晰度电视、IPTV和移动视频等。H.264/AVC视频编解码器是启动这些技术的关键,它具有较高的压缩效率,这样可以满足较窄的带宽需求。扩展MPEG-2标准以与H.264相融合,以作为MPEG-2传送流(TS)中附加的一种基本流(ES)类型,已为广播电视业主和网络运营商所接受,并受到了他们的欢迎。与MPEG-2视频压缩相比较,H.264 的压缩率大约是MPEG-2的2倍,不过,尽管H.264的增益得到了增加,但由此带来的处理复杂性也增加了2倍。这不仅给设备制造商开发H.264技术带来了挑战,同时也给广播电视业主和网络运营商应用。

1 H.264视频编码技术

H.264,或称 MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编码器压缩标准。

H.264是ITU-T以H.26x系列为名称命名的标准之一,同时AVC是ISO/IEC MPEG一方的称呼。这个标准通常被称之为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明确的说明它两方面的开发者。该标准最早来自于ITU-T的称之为H.26L的项目的开发。H.26L这个名称虽然不太常见,但是一直被使用着。

有时候该标准也被称之为“JVT编解码器”,这是由于该标准是由JVT组织并开发的(作为两个机构合作开发同一个标准的事情并非空前,之前的视频编码标准MPEG-2也是由MPEG和ITU-T两方合作开发的,因此MPEG-2在ITU-T的命名规范中被称之为H.262)。

H.264/AVC项目最初的目标是希望新的编解码器能够在比以前的视频标准(比如MPEG-2或者H.263)低很多的位元率下(比如说,一半或者更少)提供很好的视频质量;同时,并不增加很多复杂的编码工具,使得硬件难以实现。另外一个目标是可适应性,即该编解码器能够在一个很广的范围内使用(比如说,即包含高码率也包含低码率,以及不同的视频分辨率),并且能在各种网络和系统上(比如组播、DVD存储、RTP/IP包网络、ITU-T多媒体电话系统)工作。

2 H.264特征

H.264是在MPEG-4技术的基础之上建立起来的,其编解码流程主要包括5个部分:帧间和帧内预测(Estimation)、变换 (Transform)和反变换、量化(Quantization)和反量化、环路滤波(Loop Filter)、熵编码(Entropy Coding)。

H.264/MPEG-4 AVC(H.264)是1995年自MPEG-2视频压缩标准发布以后的最新、最有前途的视频压缩标准。H.264是由ITU-T和ISO/IEC的联合 开发组共同开发的最新国际视频编码标准。通过该标准,在同等图象质量下的压缩效率比以前的标准提高了2倍以上,因此,H.264被普遍认为是最有影响力的 行业标准。它即保留了以往压缩技术的优点和精华又具有其他压缩技术无法比拟的许多优点。

(1) 低码流(Low Bit Rate):

和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3。

显然,H.264压缩技术的采用将大大节省用户的下载时间和数据流量收费。

(2) 高质量的图像:

H.264能提供连续、流畅的高质量图像(DVD质量)。

(3) 容错能力强:

H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具。

(4) 网络适应性强:

H.264提供了网络抽取层(Network Abstraction Layer), 使得H.264的文件能容易地在不同网络上传输(例如互联网,CDMA,GPRS,WCDMA,CDMA2000等)。

3 H.264的核心竞争力

H.264最具价值的部分无疑是更高的数据压缩比。压缩技术的基本原理就是将视频文件中的非重要信息过滤,以便让数据能够更快地在网络中传输。在同等的图像质量条件下,H.264的数据压缩比能比当前DVD系统中使用的MPEG-2高2倍~3倍,比MPEG-4高1.5倍~2倍。正因为如此,经过H.264压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。

在MPEG-4需要6 Mbps的传输速率匹配时,H.264只需要3 Mbps~4 Mbps的传输速率。我们用交通运输来做更加形象的比喻:同样是用一辆卡车运输一个大箱子,假如MPEG-4能把箱子减重一半,那么H.264能把箱子减重为原来的1/4,在卡车载重量不变的情况下,H.264比MPEG-2让卡车的载货量增加了二倍。H.264获得优越性能的代价是计算复杂度的大幅增加,例如分层设计、多帧参论、多模式运动估计、改进的帧内预测等,这些都显著提高了预测精度,从而获得比其他标准好得多的压缩性能。

不断提高的硬件处理能力和不断优化的软件算法是H.264 得以风行的生存基础。早在十年前,主频为几十兆的CPU就达到了顶级,而如今普通的台式机,CPU的主频已经高达几千兆。按照摩尔定律的说法,芯片单位面积的容量每18个月翻一番,因此H.264所增加的运算复杂度相对于性能提升效果而言微不足道。更何况新的计算方法层出不穷,也相对缓解H.264对处理速度的饥渴需求[2]。

4 H.264与MPEG-4的比较

(1) 在极低码率(32 Kbps~128 Kbps)的情况下,H.264与MPEG-4相比具有性能倍增效应,即:

相同码率的H.26L媒体流和MPEG-4媒体流相比,H.26L拥有大约3个分贝的增益(画质水平倍增)。32 Kbps的H.26L媒体流,其信躁比与128 K的MPEG-4媒体流相近。即在同样的画面质量下,H.264的码率仅仅为MPEG-4的四分之一。

(2) H.26L在中低码率下与MPEG-4比较:

在中低码率(32 Kbps~128 Kbps)的情况下,H.26L与MPEG-4相比具有性能倍增效应。

H.264标准推出仅一年,大部分宣传支持H.264的终端厂商主要都是支持H.264的基本档次。因为H.264编解码复杂度的增加,对终端厂商的视频处理能力提出了挑战。现有的平台,要么就根本无法做H.264的编解码,要么就不能支持高码率下的编解码。而视维视频会议产品最大支持640*480,视频标准采用最新的高码率编解码技术,图像清晰流畅。在带宽节约39%的基础上视频质量的信噪比要比同类产品高出40%,是目前视频质量最好的编码技术。

5 结束语

H.264代表着视频压缩技术的一个重大飞跃。在众多行业的支持下,以及为满足个人消费者和专业用户需求的应用(例如,QuickTime、Flash、YouTube、iPod和Play-Station3)的推动下,H.264可望取代当今市场中使用的其它压缩标准和方法。随着这种格式更加广泛地应用于各种视频监控设备,系统设计商和集成商将需要确保他们所选择的产品和厂商能够支持这一全新的开放标准。

参考文献

[1]ITU-T.Video Codec for Audiovisual Services at pX64Kbits.DraftITU-TRecommendation H.261[S].Jan,1993.

[2]ITU-T.Video Coding for Low Bit Rate Communication.Draft ITU-TRecommendation H.263[S].Mar,1996.

[3]ITU-T.DraftcallforproposalforH.26Lvideo coding[S].1998.

H.264压缩算法 篇7

运动目标检测是机器视觉应用领域中一个重要研究内容, 广泛应用在军事、医学、公共安全等领域。由于视频的多样性和不确定性, 使得准确地分割出运动目标有一定的难度。运动目标分割主要分为像素域和压缩域两类, 像素域包含了很多种有效信息, 准确分割出运动目标, 通常采用帧间差分法[1]、背景差分法[2,3,4]和光流法[5]来检测运动目标, 但是由于其计算量大, 分割速度较慢, 所以近几年研究重心转向压缩域。

1 基本算法

首先利用压缩域信息, 得到运动矢量场, 再经过滤波、归一化和运动矢量场累积, 得到原始视频中相对可靠的运动区域。然后采用局部二值模式LBP (Local Binery Pattern) [6,7,8]来描述视频的纹理信息, 最后再对预分割后的运动区域进行准确分割, 本文算法流程如图1所示。

2 压缩域分割

首先需要从压缩域中提取运动矢量场信息, 再对此运动矢量场进行滤波, 消除噪声, 然后进行空间检测和矫正。

2.1 运动信息的获取

运动矢量MV信息用在视频压缩编码中的目的是减少帧间宏块的残差, 增大视频的压缩率。H.264压缩域的码流中有七种分块方式, 分别为16×16、16×8、8×16、8×8、8×4、4×8、4×4的块尺寸大小。在搜索匹配块时, 七种分块方式都要进行搜索匹配, 然后选择最佳尺寸作为当前块的大小。然后与大小相等的匹配块进行代价计算, 代价最小的则为其最佳匹配块, 最佳匹配块与当前宏块的相对位移则记为运动矢量。

运动信息包括宏块尺寸和运动矢量信息, 一帧视频中的宏块尺寸有可能是上述宏块尺寸中的一种或几种, 为了方便我们处理, 可以将大于4×4的宏块映射到几个4×4宏块上, 每个子块的运动矢量都是一致的。以运动矢量为MV的一个尺寸为16×16的宏块为例, 可以分为16个4×4的子块, 这16个子块的运动矢量是相同的, 均为MV。同理, 尺寸大小为16×8、8×16、8×8、8×4、4×8的宏块分别可以分为8、8、4、2、2个4×4子块。经过上述处理, 每一帧中的运动矢量对应的都是4×4大小。使后续处理更加方便。

从H.264压缩码流中提取的非零运动矢量有可能是以下几种情况。例如前文提到的运动的背景, 虽然是运动的物体, 但是属于背景范畴, 其运动矢量一定不为零;由于视频获取和传输的过程中一定会存在噪声, 而噪声会改变原有的运动矢量, 所以运动矢量不为零不一定就代表此宏块属于运动的区域;还有一类就是真正的运动目标的运动矢量。我们要对获取的运动矢量进行处理才能得到可靠的运动目标区域。本文利用改良后的JM17.2可以直接获取H.264压缩码流的初始运动矢量信息。

2.2 运动矢量场处理

根据前面内容, 在得到了运动矢量信息并映射到大小为4×4的宏块上之后, 需要对运动矢量场进行滤波、矫正和累积, 以便得到可靠的运动矢量场。

(1) 运动矢量场滤波

由于运动矢量场中存在随机噪声, 而随机噪声产生的运动矢量会位于零值附近, 所以可以通过设定一个阈值, 滤除其中的随机噪声。图2 (a) 所示为视频序列Container序列的某一帧, (b) 为Waving trees某一帧。以Container为例, 图3所示为图2 (a) 的稀疏运动矢量场。根据前文所述方法, 对初始运动矢量场进行滤波归一化等处理, 得到如图4所示的相对可靠的运动矢量场。

(2) 运动矢量场累积

根据后向累积的方法, 可以使原始稀疏运动矢量场累积, 得到更加可靠的运动目标区域。图5 (a) 、 (b) 分别为图2 (a) 、 (b) 的叠加后的运动矢量场。本实验中累积连续3帧的运动矢量场。

2.3 运动对象区域标记

根据累积后的运动矢量场和式 (1) 、式 (2) 将宏块进行二值化, 得到运动对象区域, 如图6所示。图6 (a) 、 (b) 分别为图2 (a) 、 (b) 运动区域的掩膜。

利用压缩域运动矢量信息目的在于结合像素域信息对运动目标准确分割, 如果原视频中有大量区域是背景, 那么, 在码流解码时就加以判断可靠的运动矢量为零的区域, 可以大大降低后续处理的计算量, 也提高了背景建模的可靠性。图7 (a) 、 (b) 所示分别为Container和Waving trees某一帧中零运动矢量所占比例。由图7可知, 每一帧中都有大量的零运动矢量, 零运动矢量的多少决定了提高的效率。

3 像素域分割

局部二值模式LBP是一种有效的纹理描述算子, 具有灰度不变性和旋转不变性。

在视频解码后的像素域, 利用LBP算子描述每一帧图像中的纹理信息, 根据时间相关性进行背景建模, 由LBP算子的灰度不变性可知, 此方法可以很好地克服光照和阴影带来的影响。算法的基本流程如图8所示, 主要分为3部分:背景建模、背景更新和运动目标分割。

3.1 背景模型的建立

对每一个像素点都建立一个背景模型, 由于LBP算子可以很好地描述图像的纹理, 利用LBP特征进行背景建模和更新。每一个像素点的背景模型的建立和更新都是独立进行的。

在一段视频中, 每一个像素点在某一时刻的特征向量都可以看做是一个过程, 对每一个像素的半径为R的圆上取P个点, 计算出其LBP值, 取代中心点的值, 此LBP值代表了半径为R的圆内的纹理, 对每一个像素点都用相同的方法计算出其LBP值。

本文中利用式 (3) 和式 (4) [9]来计算视频每一帧的LBP算子的值:

式中, LBPP, R (xc, yc) 代表位置 (xc, yc) 处的LBP算子的值, 计算方法为:以位置 (xc, yc) 处的像素点为圆心, 取半径为R的圆上的P个点, 这P个点的灰度值记为g0, g1, …, gp, 分别与中心点 (xc, yc) 处的灰度值g0进行比较, 若gp-gc大于0, 则记为1, 否则记为0, 根据文献[10], 可以将其改进为计算gp-gc+α的值。若gp和gc的值为29和30, s (gp-gc) 值为0, 若gp和gc的值为30和30, s (gp-gc) 的值就为1, 以gp-gc+α取代gp-gc可以降低像素值对结果的影响, α的值越大, 像素值对结果的影响越小。但是合适的α的值才可以准确地描述LBP值。根据实验, 这里的值取3。

由于对每一个像素点都进行LBP算子的计算, 所以LBP算子的数量与原始视频像素点个数一致。对每一个像素点都取半径为Rregion的圆形邻域, 对邻域内的LBP值进行直方图统计, 这个直方图更能准确地描述图像的纹理信息。

背景建模中, 每个像素点的背景模型由K个模型组成, 每一个模型都是一个LBP直方图, 即每个像素点的背景模型由一维向量组组成, 每个模型都有一个权重, 对应于第K个模型, 其权重为0到1之间的一个数, 记为ωk, 所有的权重之和为1。R、P、Rregion和K的值都是根据实验自己设定的。

3.2 背景模型的更新

对于新一帧中的像素点, 首先进行LBP值计算, 然后统计其LBP直方图将直方图与现有的K个背景模型进行相似度计算。

相似度计算的常用的方法有直方图相交法和χ2概率统计法。假设对直方图S和M进行相似度计算, 其公式如下:

设定阈值Tp, 如果与K个背景模型的匹配度都小于Tp, 则认为其与背景模型均不匹配, 建立一个新的背景模型, 特征值为并赋予一个较小的初始权重为ωinit。如果与K个背景模型至少有一个匹配, 则将匹配度最高的背景模型进行更新。更新方式见式 (7) 。而所有的权重按照式 (8) 进行更新。

其中, αb和αw也是由使用者自己设定的学习效率, 最匹配的背景模型的权重更新时Mk为1, 其他的Mk为0。αb和αw决定了背景的学习速率, 值越大, 学习的速度越快。

并不是K个背景模型都是必须的, 由式 (8) 可知, 权重越大, 代表此直方图是背景模型的可能性越大。将K个背景模型按照权重降序排列, 我们可以根据式 (9) 选取前B个直方图作为背景模型。同样, TB也是使用者自己设定的阈值。

3.3 前景检测分割

前景分割是在更新背景模型之前。直方图h→与B个背景模型进行比较, 如果至少有一个匹配度大于Tp, 则记为背景点, 否则此像素点记为前景。为了得到更加准确的运动目标, 可以对标记出来的掩膜进行形态学处理。

3.4 参数选择

R、P指的是选取某个像素点的邻域范围和采样点数, 像素点之间的相关性随着距离的增加而减小, 很多纹理信息可以在较小的邻域范围内获得, 所以R的值一般取一个较小的值。如果P取值较大, 本邻域的纹理信息丢失越少, 但是会造成直方图过长, 还会大大增加计算量, 但是P取值过小会丢失很多纹理信息。Rregion是统计直方图时的半径, 如果需要检测的运动目标较小, 则此半径取得值偏小一点。直方图相似度阈值Tp可以在实验的时候很容易获得。大约范围为0.6和0.7之间。

K的个数也是由场景的特征决定的, 如果场景较为复杂, 则模型数增多, 一般取2~5之间。K的值越多, 处理的过程耗时越多, 数据量也越大。TB的选取方法与K类似。αb和αw决定了模型的学习效率, 值越大, 当前帧中被认为是背景的像素点在背景模型中的比例越大, 学习越快。

4 实验结果及分析

实验数据是在Matlab下仿真得出, 对3个视频序列进行测试, Waving trees、Moved Object、Camouflage。

实验环境为:

硬件:Intel (R) Core (TM) 2 Duo CPU;内存2G;硬盘7200RPM;操作系统Windows XP;

软件:MATLAB 7.0, VS2008, JM17.2。

实验压缩视频流来自于JM17.2编码器, 编码档次选择基本档次, 编码格式为IPPP…, 量化数为28, 搜索范围为 (-32, 32) , 视频格式为QCIF, 176×144, 运动矢量场处理时连续累积三帧。像素域基于LBP纹理分割方法参数选择如表1所示。

图9所示为测试序列的实验结果, 分别为当前帧序列, 原文算法实验分割效果图、本文实验分割效果图。这三个视频的背景中都有运动的物体或阴影, Waving trees中有摇晃的树叶, Moved Object是室内场景, 房间内的灯光使得人在运动时会有阴影, Camouflage中电脑的屏幕是一直闪烁的状态, 由实验分割效果图可以看出, 基于LBP纹理的运动目标分割方法对于背景中有运动的物体或阴影的情况都有着很好的分割效果。由本文算法效果图可见, 本文实验效果图与原文算法实验分割效果图差别不大, 可以很好地从复杂背景中分割出前景运动目标, 阴影等并没有造成不必要的影响。

图10所示为3个测试序列的错检 (FP) 和漏报 (FN) 数据统计。黑色为原文算法结果, 白色为本文算法结果。由图可见, 错检和漏报率与原文算法相差不大, 与分割效果图分析结果相同。

本文算法与传统的基于像素域的LBP算法分割方法的分割时间比较如表2所示, 表中所示为平均每一帧分割所消耗的时间。从分割效果上看, 虽然本文分割效果与原文献方法分割精确度差不多, 但是分割时间得到大大提高。

5 结语

本文结合了H.264压缩域运动矢量信息, 首先将视频进行预分割, 降低像素域需要处理的数据量, 然后再根据解码后的纹理信息对运动目标进行准确地分割。算法分为压缩域和像素域分割两部分。压缩域中, 对获取的稀疏运动矢量场进行滤波矫正, 将相邻三帧的运动矢量场进行累积, 得到比较可靠的运动矢量场。像素域中, 根据局部二值模式 (LBP) 算子来描述每一帧图像的纹理信息, 通过对纹理信息的描述来进行背景建模和前景分割。实验数据证明, 在不影响分割精度的情况下, 本文算法大大地提高了分割效率。

摘要:H.264压缩域运动目标分割算法分割速度较快, 像素域分割较为准确。提出一种结合压缩域运动信息和像素域纹理信息的分割方法。在压缩域得到运动矢量场, 经过滤波、归一化和运动矢量场累加, 得到相对可靠的运动区域, 然后采用局部二值模式描述纹理信息, 最后再进行精确分割。实验结果表明, 在保证分割准确度的情况下, 大大提高了分割速度。

关键词:运动目标分割,运动矢量场,局部二值模式

参考文献

[1]Ilea D E, Whelan P F.Image segmentation based on the integration of colour-texture descriptors:A review[J].Pattern Recognition, 2011, 44 (10) :2479-2501.

[2]Mohamed S S, Tahir N M, Adnan R.Background modeling and background subtraction performance for object detection[C]//Proc of the6th International Colloquium on Signal Processing and Its Applications, 2010:236-241.

[3]Ruben H E, Michael P, Thomas S.Splitting Gaussians in Mixture Models[C]//Proc of IEEE International Conference on Advanced Video and Signal Based Surveillance.Berlin, Germany, 2012:300-305.

[4]Gorur P, Amrutur B.Speeded up Gaussian Mixture Model algorithm for background subtraction[C]//Proc of IEEE International Conference on Advanced Video and Signal Based Surveillance.Bangalore, India, 2011:386-391.

[5]Radgui A, Demonceaux C, Mouaddib E.Optical flow estimation from multichannel spherical image decomposition[J].Computer Vision and Image Understanding, 2011, 115 (9) :1263-1272.

[6]Kim W, Kim C.Background subtraction for dynamic texture scenes using fuzzy color histograms[J].IEEE Signal processing letters, 2012, 19 (3) :127-130.

[7]Zhang Baochang, Gao Yongsheng.Kernel similarity modeling of texture pattern flow for motion detection in complex background[J].IEEE Transactions on circuits and systems for video technology, 2011, 21 (1) :29-38.

[8]Marks T K, Hershey J R, Movellan J R.Tracking motion, deformation, and texture using conditionally Gaussian processes[J].IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010, 32 (2) :348-363.

[9]Marko Heikkila, Matti Pietikainen.A Texture-Based Method for Modeling the Background and Detecting Moving Objects[J].IEEE Trans.on Pattern Analysis and Machine Intelligence, 2006, 28 (4) :657-662.

上一篇:技工学校如何发展下一篇:摄影与刺绣的美丽相遇