数字视频技术4(1)教材_第1页
数字视频技术4(1)教材_第2页
数字视频技术4(1)教材_第3页
数字视频技术4(1)教材_第4页
数字视频技术4(1)教材_第5页
已阅读5页,还剩303页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字视频技术第四章视频编码国际标准2012年4月4.1视频数据压缩编码4.2视频编解码标准简介4.5MPEG-1视频编码和解码主要内容4.3视频数据编码方法4.4音频数据压缩编码原理重点了解4.6MPEG-2视频编码和解码重点§4.4视频数据压缩编码视频压缩必要性按照ITU601的建议,传输1秒钟的PAL制式信号的原始数据量为

720*576*8*2*25=169Mbit=21MB/S

1GB硬盘存:1GB/21MB=49s

的节目结论:要使数字电视信号适合于实际存储和传输,必须压缩数据量,降低传输数据码率。前提:压缩后图象质量要满足视觉要求。4.1.1基本原理数据压缩可降低信息的数据量,以压缩编码的形式存储和传输,既节约存储空间,又提高通信信道的传输效率。视频数据相关性很强,有很大冗余度。信息冗余的种类有空间冗余、时间冗余、视觉冗余等。数字视频压缩的可能性空间冗余同一帧图像,相邻像素间的相似性(亮度、色度)所形成的冗余。先去除冗余数据再进行编码,则使每个像素的平均比特数下降,就是通常所说的帧内编码。时间冗余

视频图像序列中的某帧图像的某一取样点的亮度和色度信息,与其在时间轴上相邻两帧的相应位置上的取样点存在极强的相关性。利用这种相邻两帧之间的相关性,可以采用一定的编码方法,消除时间冗余。数字视频压缩的可能性t+1t时域冗余空域冗余DCT符号冗余

符号冗余也称编码表示冗余。

图像和声音信号可看做是一个随机信号序列,在时间和空间上均具有统计特性。不同的信号出现的概率不同,若用相同的比特数来表示,则会存在冗余。采用可变长编码技术,对出现概率大的符号用短码字表示,对出现概率小的符号用长码字表示,则可去除符号冗余,从而节约码字,这就是熵编码的思想。数字视频压缩的可能性视觉冗余

视觉冗余度是相对于人眼的视觉特性而言的。

人类的视觉系统对于图像的注意是非均匀和非线性的,并不是对图像中的任何变化都能感知。压缩视觉冗余的核心思想是去掉那些相对人眼而言是看不到的或可有可无的图像数据。对视觉冗余的压缩通常反映在各种具体的压缩编码过程中。人眼对颜色的空间分辨力低于对亮度信号的分辨力。人眼对画面静止部分的空间分辨力高于对运动部分的空间分辨力。人眼对亮度的感觉存在视觉阈值,随着图像内容的变化而变化。对屏幕的中心区失真敏感,对屏幕四周的失真不敏感。数字视频压缩的可能性视频压缩方法的分类从信息论角度出发,按解码后的重建图像和压缩编码前的原始图像是否完全相同,可将图像压缩编码方法分为:无损压缩和有损压缩。无损压缩,又称冗余度压缩编码、无失真编码或熵编码。

最常用的无损压缩编码方法有霍夫曼(Huffman)编码、算术编码和游程编码(Run-LengthEncoding,RLE)等。有损压缩,也称为信息量压缩编码、失真度编码或熵压缩编码。有损压缩编码方法利用了人类视觉的感知特性,允许压缩过程中损失一部分信息.常见的有损压缩编码方法有:预测编码、变换编码、子带编码、基于模型的编码等。

帧内压缩和帧间压缩帧内压缩即空间压缩,仅考虑本帧的数据,而不考虑相邻帧之间的冗余信息,即消除空间冗余,一般采用有损压缩。压缩比较低。帧间压缩也称时间压缩,是基于视频或动画相邻两帧间的相关性进行压缩的。就是消除时间冗余,一般采用无损压缩方式。在编码过程中,常常混合使用多种压缩技术,达到最佳压缩效果。视频压缩方法的分类其他分类方法:按图像的不同属性可分为单色、彩色、多谱色图像编码从图像的灰度层次上可分为多灰度编码、二值图像编码按图像的运动状态分为静止图像序列的压缩编码、运动图像序列的压缩编码4.2视频编解码标准简介目前国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,另一个是“国际标准化组织(ISO)”。

ITU-T制定的标准有H.261、H.263、H.263+等,H.26X系列侧重网络传输,注重数据传输的实时性,而且只是视频编码。

ISO下属的MPEG(MovingPictureExpertsGroup-运动图象专家组)开发制定的标准有MPEG-1、MPEG-2、MPEG-4等,主要针对活动图像和音频编码。而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(AdvancedVideoCoding,AVC),而且它将成为MPEG-4标准的第10部分。4.2视频编解码标准简介

JPEG是由ISO和IEC组成的JointPhotographicExpertsGroup(联合图像专家组)的缩写,主要致力于制定连续色调、多级灰度、静态图像的数字图像压缩编码标准。常用的基于离散余弦变换(DCT)的编码方法,是JPEG算法的核心内容。

JPEG采用的是帧内压缩方式,图像清晰、稳定,适于视频编辑,而且可以灵活设置每路的视频清晰度和压缩帧数。其压缩后的格式可以读取单一画面,因此可以任意剪接,特别适用与安防取证的用途。视频编码标准发展历程ISO/IECMPEGMPEG-1,MPEG-2,MPEG-4,MPEG-4AVC/H.264,MPEGHVCITU-TVCEGH.261,H.262(MPEG-2),H.263,H.264,VCEGH.NGC中国

AVSAVS-P2,AVS-S下一代标准?方向、技术?

年代

MPEG-1

1993

2001

1997

2005

MPEG-4AVC/H.2641989

MPEG-2MPEG-42013AVS下一代标准20092017视频编码标准发展历程H.261和H.263标准1988年CCIT(现ITU-T)制定了电视/会议电视的H.261建议草案(数码率=p*64kbit/s,p=1,….,30)。H.261标准适用于电视电话和电视会议,因此推荐的图象编码算法必须是实时处理的,并要求最小延迟时间和严格的唇音同步。当p取1或2时,速率只能达到64-128kbit/s,由于速率较低只能传清晰度不高的图象(主要是肩上人头像),适合于面对面的电视电话会议;当p>6,速率>384kbit/s时,速率较高,可以传输清晰度尚好的图象,适用于电视会议。H.261是第一个实用的数字视频编码标准,它使用了混合编码框架,包括了基于运动补偿的帧间预测,基于离散余弦变换的空域变换编码,量化,zig-zag扫描和熵编码。H.261编码时基本的操作单位称为宏块。H.261使用YCbCr颜色空间,并采用4:2:0色度抽样,每个宏块包括16x16的亮度抽样值和两个相应的8x8的色度抽样值。H.263是H.261的后继标准,是一个较为成熟的标准,它是帧间预测和变换编码的混合算法,压缩比较高,常用于超低速率的图象传输,能适应误码率高的信道,具备容错能力。H.263+是在H.263的基础上以增加编码的可选项的形式改进的,但编码效率更高,适用范围更大,增加了一些改进编码的方法,也提高了抗误码的能力。主要应用方向仍是低码流的视频业务,用于PSTN以及无线接入的高误码率的通信环境。H.261和H.263标准MPEG-4

MPEG-4的着眼点在于解决低带宽上音视频的传输问题,在164KHZ的带宽上,MPEG-4平均可传5-7帧/秒。采用MPEG-4压缩技术的网络型产品可使用带宽较低的网络,如PSTN,ISDN,ADSL等,大大节省了网络费用。

MPEG-4的最高分辨率可达720×576,接近DVD画面效果,基于图像压缩的模式决定了它对运动物体可以保证有良好的清晰度。MPEG-4所有的这些优点,使它成为当前网络产品生产厂商开发的重要趋势之一。MPEG-2、MPEG-4、MPEG-4AVC(简称AVC,也称JVT、H.264)、AVS是目前音视频产业可以选择的信源编码标准,MPEG-2是第一代信源标准,其余三个为第二代标准;前三个标准是由MPEG专家组完成的,第四个是我国自主制定的;从主要技术指标——编码效率比较:MPEG-4是MPEG-2的1.4倍;AVS和AVC相当,都是MPEG-2两倍以上。

3.4

视频编码方法1950差分预测编码调制隔行编码B帧P帧场景自适应编码块运动估计DCT宏块混合编码哈夫曼编码变换编码运动矢量预测视频对象基于对象的可分级编码容错一般的B帧高级的去块效率虑波基于位平面的可伸缩编码高精度运动补偿基于上下文的算术编码2014多视编码分布式编码1999~1985专利可免费使用专利可免费使用§4.3视频数据编码方法4.3.1熵编码4.3.2预测编码4.3.3变换编码主要内容熵编码的基本原理就是去除信源在空间和时间上的相关性,去除图像信源像素值的概率分布不均匀性,使编码码字的平均码长接近信源的熵而不产生失真。4.3.1熵编码信息论中,熵是用于度量信息量的一个概念,指的是具体数据所含的平均信息量,定义为在不丢失信息的前提下描述该信息内容所需的最小比特数。信息数据压缩在理论上压缩的最大极限是信息熵。建立在随机过程的统计特性基础上,根据信息出现概率的分布特性而进行,是无损压缩编码。4.3.1熵编码对信源X的各个符号的自信息量取统计平均,可得到每个符号的平均信息量为:信源X的信息熵H(X)

,单位为比特(bit),含义是信源X发出任意一个符号的平均信息量。4.3.1熵编码§4.3视频数据编码方法4.3.1熵编码4.3.2预测编码4.3.3变换编码主要内容霍夫曼编码算术编码游程编码

霍夫曼编码霍夫曼编码是一种可变字长编码。基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同。它在变长编码中是最佳的。

霍夫曼编码具体步骤统计每个符号出现的概率。把概率按从小到大的顺序从左到右地进行排列。选出最小的两个值,把他们概率之和作为分支点的概率。重复步骤3,直到最后得到概率之和为1的根。对形成的二叉树的每个分枝赋值,左边标“0”,右边标“1”。把从最上面的根到最下面的叶子经过的“0”、“1”序列串连起来,就得到各个符号对应的霍夫曼编码。霍夫曼树的构建霍夫曼编码实际上构造了一个码树,码树从最上层的端点开始构造,直到树根结束。这里举个例子说明如何生成霍夫曼树。假设对由a1、a2、a3、a4、a5、a6、a7、a8八个信源符号组成的源信息字符串:“a1

a1a2

a2a3

a3

a3a4

a4

a4

a4a5

a5

a5a6

a6

a6a7

a7a8”进行霍夫曼编码。首先应对信息中各数字出现的次数进行统计如下:

码值

a1a2a3a4a5a6a7a8次数

22343331概率0.10.10.150.20.150.150.10.05熵H=-0.1*log2(0.1)-0.1*log2(0.1)-0.15*log2(0.15)-0.2*log2(0.2)-0.15*log2(0.15)-0.15*log2(0.15)-0.1*log2(0.1)-0.05*log2(0.05)=2.9087(bit)先将所有符号排成一行,构成8个最底层节点。首先将这些节点中最小两个概率值相加:0.05+0.1=0.15,得到新的

节点这时拥有的概率值为0.2,0.1,0.1,0.15,0.15,0.15,0.15。再将两个最小的概率值相加得到新的节点......直到得到根节点概率为1.0为止。相加时,对于概率值相等的多个节点,可以任意选取。除根节点外,设节点左边分支为0,右边分支为1(也可以反过来)。这样,生成的霍夫曼树如下图所示:对于各值(码值)的代码(码字)就是从根节点出发到底层节点所经历的分支序列。如a4的代码(码字)为00,a6的码字为111......通常a4和a6等称为码值,00和111等称为码字。所有码值和码字对应关系如下表所示:霍夫曼表将所有码值和码字的关系整理成一张表,为了整字节输出码字,表中还含有各码字的长度。这种表就称为霍夫曼表。本例霍夫曼表如表所示:

进行压缩编码时,只要将码值用码字代替即可。所以源符a1

a1a2

a2a3

a3

a3a4

a4

a4

a4a5

a5

a5a6

a6

a6a7

a7a8编码为:0100100110111011011010000000011011011010000100001001。平均码长B=0.1*3+0.1*3+0.15*3+0.2*2+0.15*3+0.15*3+0.1*4+0.05*4=2.95(b)熵H=

2.9087编码效率N=H/B=2.9087/2.95=98.6%霍夫曼编码作业:设有离散无记忆信源,符号a1,a2,a3,a4,a5,a6,a7的出现概率分别为0.21,0.19,0.18,0.17,0.14,0.09,0.02,写出其霍夫曼编码过程。(要求:左0右1,左1右0)。4.3.1.1霍夫曼编码注意:霍夫曼编码的算法是确定的,但编出的码并非是唯一的。在对二叉树的分枝赋值时,赋“0”、“1”可以是任意的。若有两个或两个以上符号概率相等,其次序可以是任意的,会得到不同的霍夫曼码,符号的码字长度将受到影响,但不会影响到霍夫曼码的平均码长和编码效率。由于霍夫曼编码的依据是信源符号的概率分布,故其编码效率取决于信源的统计特性,对不同的信源的编码效率是不同的。解码时

,必须参照霍夫曼编码表才能正确译码。在信源的存储与传输过程中必须首先存储或传输这一霍夫曼编码表,在实际计算压缩效果时

,必须考虑霍夫曼编码表占有的比特数。在某些应用场合,信源概率服从于某一分布或存在一定规律

(这主要由大量的统计得到

),这样就可以在发送端和接收端固定霍夫曼编码表

,在传输数据时就省去了传输霍夫曼编码表

,这种方法称为霍夫曼编码表缺省使用。4.3.1.2算术编码算术编码是一种利用信源概率分布特性,能够趋近熵极限的编码方法。算数编码的两个过程:概率模型建立过程和扫描编码过程。基本原理:根据信源可能发出的不同符号序列的概率,把[0,1)区间划分为互不重叠的子区间,子区间的宽度恰好是各符号序列的概率。这个区间随着信源符号序列中每一个信源符号的加入逐步减小,每次减小的程度取决于当前加入的信源符号的先验概率。

用算术编码方法是将被编码的一个消息或一个符号串(序列)表示成0和1之间的一个间隔,即对一串符号直接编码成[0,1)区间上的一个浮点小数,在传输任何符号串(消息)之前,设符号串的完整范围为[0,1)。当一个符号被处理时,这一范围就依据分配给这一符号的那一范围变窄,间隔变小,当符号串序列越长,则编码表示它的间隔越小,同时表示这一间隔所需的位数就越多,直到完成对所有符号串的编码。算术编码的过程,实际上就是依据信息源符号串的发生概率对码区间分割的过程。1

编码过程

假如要对有10个符号的信息源发出的字符串“statetree”进行编码,符号串具有如下的概率分布如图所示。

按每个符号出现的概率对[0,1)区间进行划分,显然每个符号都有一对应的子区间,这里所用的10个字符被分配的范围如图所示。

按对‘statestree”’的算术编码过程为:

(1)初始化时,被分割的范围range(

)=high(

)-low(

)=[0,1)=1-0=1,下一个范围的低、高端分别由下式计算:

low(s)=low(

)+range(

)×low(s)

high(s)=low(

)+range(

)×high(s)

其中等号右边的low为上一个被编码字符的范围低值;rangelow和rangehigh分别为本次被编符号已给定出现的概率范围的low和high。

(2)对消息第1字符s编码:s的rangelow=0.60,s的rangehigh=0.70,因此下一个区间的low和high为:

low(s)=low(

)+range(

)×low(s)=0+1×0.6=0.6

high(s)=low(

)+range(

)×high(s)

=0+1×0.7=0.7

range(s)=high(s)-low(s)=0.7-0.6=0.1

S将区间[0,1)

[0.6,0.7)

注意:字符“

”表示“分割为”字符。

(3)对第2个字符t编码,使用的新生成范围为[0.6,0.7),因为t的rangelow=0.70,rangehigh=1.00,因此下一个low,high分别为:

low(st)=low(s)+range(s)×low(t)=0.6+0.1×0.7=0.67

high(st)=low(s)+range(s)×high(t)=0.6+0.1×1.0=0.70

range(st)=high(st)-low(st)=0.7-0.67=0.03

t将区间[0.6,0.7)

[0.67,0.70)

(4)对第3个字符

a编码,在新生成的[0.67,0.70)中进行分割。因为

a的rangelow=0.10,rangehigh=0.2,因此下一个low,high分别为:

low(sta)=low(st)+range(st)×low(a)=0.67+0.03×0.1=0.673

high(sta)=low(st)+range(st)×high(a)=0.67+0.03×0.2=0.676

range(sta)=high(sta)-low(sta)=0.676-0.673=0.003

a将区间[0.67,0.7)

[0.673,0.676)

(5)对第4个字符t编码,在新生成的[0.673,0.676)上进行分割。因为

t的rangelow=0.70,rangehigh=1.00,因此下一个low,high分别为:

low(stat)=low(sta)+range(sta)×low(t)=0.673+0.003×0.7=0.6751

high(stat)=low(sta)+range(sta)×high(t)=0.673+0.003×1.0=0.676

range(stat)=high(stat)-low(stat)=0.676-0.6751=0.0009t将区间[0.673,0.676)

[0.6751,0.676)

同理得到下面各字符e,,t,r,e,e

编码所得到的范围分别为:

[0.67528,0.67555),[0.67528,0.675307),[0.6752989,0.675307),[0.67530295,0.67530376),[0.675303112,0.675303355)[0.6753031606,0.6753032335)。

将编码后的区间范围综合如图3-9所示:

我们用0.6753031606代表字符串“statetree”,从而达到高效编码的目的,这就是算术编码的基本思想。

上述算术编码区间分割过程可用图表示。2

解码过程

通过编码,最后一个子区间的的下界值0.6753031606就是字符串“statetree”的惟一编码。然后在解码时,通过判断哪一个字符能拥有我们已编码的消息落在的空间来找出消息中的第一个字符。由于0.6753031606落在[0.6,0.7]之间,因此马上就可解得第1个符号是S。

在解出S后,由于我们知道S的范围的上界和下界,利用编码的逆作用,首先除掉S的下界值0.6,得0.075303606,然后用s的范围range=0.1去除所得到的0.0753031606,得到0.753031606,接着找出0.753031606所落在的区间[0.7,1.0)。就可解得第2个符号是t。

去掉t

的下界值0.67,得0.0053031606,然后用t的range=0.03除0.0053031606,得到0.17677202,找出0.17677202所属范围的字符a,

如此继续解码操作,就可以获得字符串“statetree”的准确译码。分析以上所述的解码操作过程,我们得到其解码公式为

注意:Number为字符串的编码。

练习:设信源符号a,b,c,d对应的概率分别为0.5,0.25,0.125,0.125,求信源序列S=abda对应的算术编码各个信源符号对应的区间端点值如表所示

(2)初始时设low(

)=0,high(

)=1,range(

)=1(3)输入信源序列abda的第1个符号a,由递推公式计算

low(a)=low(

)+range(

)×low(a)=0+1×0=0.0

high(a)=low(

)+range(

)×high(a)=0+1×0.5=0.500range(a)==high(a)–

low(a)=0.500(4)输入信源序列abda的第2个符号b:low(ab)=low(a)+range(a)×low(b)=0.00+0.5×0.5=0.250high(ab)=low(a)+range(a)×high(b)=0.00+0.5×0.75=0.375range(ab)==high(ab)–

low(ab)=0.125(4)输入信源序列abda的第3个符号d:

low(abd)=low(ab)+range(ab)×low(d)

=0.25+0.875×0.125=0.359375

high(abd)

=low(ab)+range(ab)×high(d)

=0.25+0.125×1=0.375range(abd)==high(abd)–

low(abd)=0.015625(4)输入信源序列abda的第4个符号a:

low(abda)=low(abd)+range(abd)×low(a)=0.359375

high(abda)

=low(abd)+range(abd)×high(a)=0.3671875(5)可取0.359375作为信源序列S=abda的编码

信源序列S=abda对应的小区间的左、右端点值表

信源序列S=abda对应区间的划分过程图5.译码——编码的逆过程根据接收到的码字译出对应的信源序列[译码步骤](1)判断码字落在哪个符号区间,译出第1个符号(2)将码字减去刚译出符号的左端点值,得差值并以刚译出符号对应的区间长度去除差值再判断此值落在哪个符号区间,译出第2个符号(3)重复步骤(2),直至全部信源序列被译完为止[译码举例]0.359375→信源序列S=abda

(1)0.359375∈[0,0.5),译出第1个符号为a(2)用符号a对应区间长度0.5去除码字0.359375与符号a的左端点值(0)的差,即(0.359375–0)/0.5=0.71875,0.71875∈[0.5,0.75),译出第2个符号为b(3)用符号b对应区间长度0.25去除码字0.71875与符号b的左端点值(0.5)的差得0.875,0.875∈[0.875,1),译出第3个符号为d(3)用符号d对应区间长度0.125去除码字0.875与符号d的左端点值(0.875)的差得0,0∈[0,0.5),译出第4个符号为a因而,码字0.359375对应的序列为abda,译码正确[END]0.607421875

low(Sur)=low(S)+range(S)×low(ur)high(Sur)=low(S)+range(S)×high(ur)一、概述

霍夫曼编码主要是针对无记忆信源。当信源有记忆时上述编码效率不高。游程编码对相关信源编码更有效。游程编码的思想方法:

二元相关序列→游程编码→多元非相关序列→霍夫曼编码二、游程编码⒈游程游程:数字序列中连续出现相同符号的一段。二元序列的游程:只有“0”和“1”两种符号。连“0”这一段称为“0”游程,它的长度称为游程长度L(0);连“1”这一段称为“1”游程,它的游程长度用L(1)表示。4.3.1.3游程编码游程长度序列/游程序列:用交替出现的“0”游程和“1”游程长度表示任意二元序列。规定二元序列总是从“0”开始。游程变换:是一种一一对应的变换,也是可逆变换。例如:二元序列:000101110010001…,可变换成游程序列:31132131…对于随机序列,游程长度是随机的,其取值可为1,2,3,…,直至无穷。⒉编码方法:首先求出“0”游程长度和“1”游程长度的概率分布,即以游程长度为元素,构造一个新的信源;将“0”游程和“1”游程看作二个信源,分别进行编码。对新的信源(游程序列)进行霍夫曼编码由于对“0”游程和“1”游程分别进行编码,故有二张码字表,其码字可以重复。⒊小结:游程变换减弱了原序列符号间的相关性。游程变换将二元序列变换成了多元序列;这样就适合于用其他方法,如哈夫曼编码,进一步压缩信源,提高通信效率。由其方案可知游程变换后编码并不适合于多进制序列。4.3熵编码以上三种编码方法——霍夫曼编码、算术编码、游程编码均为无损压缩编码,是基于视频信号的统计特性的编码方法,可以完全恢复原始图像,压缩率较低。有损编码则是根据人眼和人耳的特性进行压缩编码,会丢失一些图像或音频信息,不能完全恢复原始图像,会造成一定失真,但压缩率高。§4.3视频数据编码方法4.3.1熵编码4.3.2预测编码4.3.3变换编码主要内容DPCM编码

运动补偿预测编码预测编码的基本原理

利用图像在空间和时间上的连续性,用邻近的M个值预测当前值,对当前值与预测值之差进行量化编码(一维、二维、三维预测)由于信号在时间和空间上存在很强的相关特性,预测误差信号与原信号相比,幅度减小很多,但原信号所包含的信息仍保持完整。这就有效地去除了多余信息。可采用较少的量化比特数来进行预测误差的量化,可以实现压缩频带、提高传输效率的目的。

DPCM编码1.差值编码(DPCM)

(1)视频信号的空间(帧内)相关性的统计分析

①视频图像的组成:“像块”、“轮廓”和“细节”“像块”--是图像中成片相同像素组成的块,它的空间相关性最强。“轮廓”---是像块间的分界,它的相关性较差。

“细节”---是图像中变化最频繁的细节描述,相关性最小。②统计结果:“像块”要占约90%以上;“轮廓”和“细节”只占不到10%。

注:在视频信号中低频部分占绝大多数,而高频部分则所占比例较小。

(2)时间(帧间)相关性的分析

①在静止画面中,其帧间相同位置的样值则100%的相同。

②在非静止画面中,相邻帧的不同部分也只是运动物体,只占较小的比例。(3)差值编码原理①在发送端:处理或传输的不是图像中当前样值本身,而是该样值与前一个(相邻)样值的差值,则这些差值绝大多数是很小的或为零,可以用短码来表示,而对那些出现几率较少的较大差值,用长码来表示,则可使总体码数下降。②在接收端:将已得到的前一样值与刚收到的差值相加,就可还原出所要的当前样值。③差值编码:采用对相邻样值差值进行变字长编码的方式称为差值编码,又称为差分脉码调制(DPCM)。(4)预测编码发送端:从另一个角度看,我们可以把前一个样值看成是当前样值的预测值,并与当前样值相减,得到一个差值(预测误差)。该差值可以看成是当前要传送的样值对于预测值的修正值,并对该差值编码、传送。接收端:可以将已得到的预测值(前一个样值的输出值),加上这一解码后的修正值,就得到了一个正确的当前样值。因此差值编码也可以称为预测编码。

(5)差值编码的实现差值编码原理图发送端发出的预测误差应为:

(3-1)

经过量化器Q量化后,。其中ε(n)是量化误差或称量化噪声。接收端输出的信号为:

(3-2)

结论:发送端输出的是当前样值与前一样值(预测值)的差值(预测误差)。接收端将该预测误差与前一输出样值(预测值)相加,又还原为当前样值。

(1)可行性讨论:差值编码可以实现图像信号的压缩、传输与还原。(2)存在的问题:在还原的Vo(n)中,除了含有Vo(n-1)和差值ΔVi(n)外,还附加了一个量化噪声ε(n),且在前一个输出样值Vo(n-1)中,还含有与再前一个样值差值的量化噪声ε(n-1),因为由(3-2)式可得出

(3-3)将式(3-3)带入式(3-2)得

(3-2)由此可得出:

(3-4)

在式(3-4)中n与m均为整数。结论:在还原的Vo(n)中,含有前面历次差值的量化噪声(噪声积累)。

(3)方案的改进在发送端:输入信号减去的是上次输出的样值Vo(n-1),则在减去预测值的同时也减去了量化噪声ε(n)

ΔVi(n)=Vi(n)-Vo(n-1)经量化后ΔV’i(n)应为:

ΔV’i(n)=Vi(n)-Vo(n-1)+ε(n)

(3-5)上式中的ε(n)为本次量化的量化噪声。(3-1)在接收端:输出的还原信号Vo(n)应为:

Vo(n)=ΔV’i(n)+Vo(n-1)(3-6)将式(3-5)带入式(3-6)得:Vo(n)=Vi(n)-Vo(n-1)+Vo(n-1)+ε(n)最后有:

Vo(n)=Vi(n)+ε(n)(3-7)从上式中可以看出:最终还原的信号中,前一次的量化噪声被抵销了,而只含有当前的输入样值Vi(n)和本次量化的量化噪声ε(n),不存在量化噪声的积累。ΔV’i(n)=Vi(n)-Vo(n-1)+ε(n)(3-5)改进后的差值编码原理图2.预测编码(1)二维或三维预测:以上介绍的是一维预测编码,然而它对于图像的水平线有较好的效果,但对垂直线效果较差。因此人们一般采用二维(帧内)或三维(帧间)预测。(2)预测方法如图所示:设Xn为实际样值,X^n为其预测值。A:本行前一样值B:上一行前一样值C:上一行该点样值D:前一帧该点样值预测值X^n应为:

X^n=F(A,B,C,D)

三维预测(3)线性预测上式应为:X^n=KaA+KbB+KcC+KdD

其中Ka、Kb、Kc、Kd分别为A、B、C、D的权重或系数。一般有:

Ka+Kb+Kc+Kd=1

讨论:①当Kb=Kc=Kd=0,Ka=1时,为一维差值预测,即前面讨论的情况。

②当Ka+Kb+Kc=1,Kd=0时,为二维预测,即帧内预测。

③当Kd≠0为三维预测,即帧间预测。(4)预测编码的对象是:实际样值Xn和预测样值X^n的差值ΔXn。

即:ΔXn=Xn-X^nΔXn为预测误差,预测越准,其值越小,在多数情况下为零。零出现的几率最大,可以用短码表示,而较大的差值用长码表示,从而可以降低码率,达到压缩的目的。关于运动矢量、运动估值及运动补偿帧间预测的依据:图像序列在时间轴方向的相关性;

物体的背景或物体的一部分相对不变或变化缓慢;人类的视觉特性:人类的视觉对静止图像有较高的空间分辨率,但是可以减少传输帧数来降低时间轴分辨率,未传输的帧可以通过计算补出来;对运动图像分辨率低,可以对这一部分图像降低清晰度;

运动补偿预测编码为什么进行运动补偿预测?

对于活动图像编码,帧间预测是主要的手段;基本帧间预测方法对于存在大量静止区域或缓变区域的图像,预测效果不错;对于活动的物体,预测效果不理想;对于一些发生运动的图像进行预测编码,采用运动补偿预测的方法。1、运动补偿预测的基本原理自然场景的视频图像只有其中的部分区域在运动,同一场景相邻的两帧图像之间差异也不会太大,编码器无需将视频序列中每帧图像的所有信息都进行编码后传输给解码器端,只要将当前帧中目标的运动信息告知解码器端,解码器可根据运动信息和前一帧图像内容来更新当前帧图像,获得当前帧的真实数据;(可有效降低编码所需数据量)从序列图像中提取有关物体运动的信息的过程——运动估计(如何快速、有效的获得足够精度的运动矢量);把前一帧相应的运动部分信息根据运动矢量补偿过来的过程——运动补偿(MotionCompensation,MC)。运动估计——将活动图像分为若干局部结构,检测出每个局部结构在前一帧图像中的位置,从而可以估计出这个结构的位移,用运动矢量表示;运动补偿——由位移的估值建立局部结构在不同帧的空间位置对应关系,用前一帧图像中的对应部分对当前帧中的局部结构进行预测。2、运动估计与运动补偿预测编码步骤:

分割图像为若干局部结构——划分静止和运动区域;最简单方法分块;运动估计——对每一个运动物体进行位移估计;运动补偿——由位移估计建立同一运动物体在不同帧空间位置对应关系,建立预测关系;对于运动补偿后的位移帧差信号、运动矢量进行编码传输。

abc当前帧后一帧运动矢量MV前一帧对当前子块进行运动估计,就是找在前一帧图像中哪一个子块和当前子块最相似,估计它的位移矢量。运动矢量运动估计(MotionEstimation,ME)是去除时间冗余最基础有效的方法,也是各类视频编码算法所普遍采用的一项核心技术;

运动估计的优劣直接决定编码效率和重构视频质量:运动估计越准确,补偿的残差图像越小,编码效率越高,在相同码率下的解码视频就具有更好的图像质量;运动估计的计算复杂度占到编码器的50%以上,为保证视频编/解码的实时性,运动估计应当具有尽可能低的计算复杂度;如何提高运动估计算法的性能,使运动估计更快速、精确和简洁受到广泛关注。3、运动估计的分类全局运动估计基于块的运动估计基于像素点的运动估计基于区域的运动估计基于网格的运动估计时域运动估计频域运动估计(DFT、DCT、DWT)a

全局运动估计c

基于块的运动估计b

基于像素点的运动估计d基于区域的运动估计a

基于块的运动估计使用规则块模型,各块运动参数独立规定,除非邻近块的运动参数被约束得非常平滑,一般估计的运动场不连续或混乱的。b

基于网格的运动估计使用不规则网格覆盖当前帧,寻找每一个节点的运动,使得当前帧中每一个元素内的图案与参考帧中相应的变形元素很好匹配,每一个运动区域内各点的运动矢量由该区域节点的运动矢量内插得到。4.

块匹配运动估计(1)基本思想将视频序列的每一帧都划分为许多大小相同、互不重叠的子块(并做假设:子块内所有像素具有运动一致性,并且只做平移运动,不包含旋转、伸缩);然后对每个子块到参考帧某一给定特定搜索范围(匹配窗)内根据一定的匹配准则找出与当前块最相似的块,即预测块(匹配块);预测块与当前块的相对位移即为运动矢量(MotionVector,MV),预测块和当前块之间的差值称为残差图像;视频压缩的时候,只需保存运动矢量和残差数据就可以完全恢复出当前块;预测越准确,残差中的数值越小,编码后所占用的比特数越少;利用运动矢量在参考帧上进行运动补偿,补偿残差经DCT变换、量化、编码后与运动矢量共同编码传送。(2)提高搜索效率的主要技术运动估计算法研究的目标——提高预测精度,加快估计速度,降低编码比特率;提高算法效率采用的方法:初始搜索点的选择;匹配准则;运动搜索策略。1)初始搜索点的选择

直接选择参考帧对应的(0,0)位置

方法简单,易陷入局部最优点(初始步长太大,原点不是最优点,有可能使快速搜索跳出原点周围可能性较大的区域而去搜索远距离的点,导致搜索方向不确定,可能陷入局部最优);选择预测的起点——利用相关性预测初始搜索点,减少搜索次数

基于SAD值的起点预测方法——求出当前块与相邻块间的SAD值,选取SAD最小的块的运动矢量作为预测值。预测精度高,计算量大;利用相邻块和相邻帧对应块的运动矢量来预测当前块的搜索起点,为简化系统多采用同帧块的空间相关性来预测运动;基于相邻运动矢量相等的起点预测方法,保证精度基础上利用运动矢量相关性大大减少计算量。2)匹配准则平均绝对误差均方误差归一化互相关函数常见的运动估计匹配准则有三种:MAD、MSE和NCCF,由于MAD没有乘除操作,不需做乘法运算,实现简单方便,所以使用较多。通常使用求和绝对误差(SAD)代替MAD

。式中为第K帧位于的像素值,分别为水平和垂直方向的偏移量,取值范围为像块与搜索区的关系示意图3)运动搜索策略即如何进行搜索,以保证运动估计的准确性和搜索速度;存在计算复杂度和搜索精度的矛盾,往往采取折中。(3)

经典运动估计算法全搜索法

三步搜索法新三步搜索法

四步搜索法

基于块的梯度下降搜索法

菱形搜索法六边形搜索法运动矢量场自适应搜索算法

UMHexagonS算法渐进消除算法1)全搜索法全搜索法(FullSearchAlgorithm,FSA)也称穷尽搜索法——对匹配窗内所有候选位置计算SAD(i,j)值,找出最小的,其对应的偏移量即为所求运动矢量;精度最高,必为全局最优点;计算复杂,难以实时处理;必须研究相应的运动估计快速算法。2)运动估计快速算法分层的和多分辨率的快速块匹配方法固定搜索模式的快速块匹配方法(重点)基于时空相关性和视觉特性的快速块匹配方法(重点)降低匹配准则复杂度的快速块匹配方法①分层的和多分辨率的快速块匹配方法

用低分辨率块的运动矢量预测较高分辨率块的运动矢量,或者用同一分辨率下大尺寸块的运动矢量预测其内部子块的运动矢量,并在后续搜索中做进一步修正。缺点:构造多层/多分辨率图像有较大的计算复杂度,且内存需求较大。多分辨率快速块匹配——由低分辨率到高分辨率②降低匹配准则复杂度的快速块匹配方法

不会减少搜索点数,而是着眼于匹配准则计算复杂度的降低,因而常常用于全搜索法的快速实现。

主要有两种方式:连续消除法像素子采样法③固定搜索模式的快速块匹配方法该方法假设匹配误差随着离全局误差最小点的距离增加而单调增加;一般从原点开始,采用固定的搜索模板和搜索策略得到最佳匹配块;著名的算法有:三步法、梯度下降法、四步法、菱形法、六边形法等。A、三步搜索法(ThreeStepSearch,TSS)搜索范围为±7;搜索模板半径依次减半;第一步步长过大对小运动检测效果不好;搜索范围大于7时,搜索步骤不止三步;

搜索次数9+8+8=25。B、四步搜索法(FourStepSearch,FSS)基于现实中序列图像一个特征,即运动矢量都是中心分布的,从而在5×5搜索窗上构造了9个检测点的搜索模板;首先用5×5搜索窗;每一步将搜索窗的中心移向最小块误差点处;后两步搜索窗大小依赖于最小块误差点的位置;计算复杂度低,搜索幅度较平滑,不会出现方向上误导。反复使用5×5方形模板进行搜索。模板中心处SAD值最小时再用3×3模板搜索一次确定最佳匹配位置;搜索次数9+3+5+8=25;搜索速度不一定快于三步法,但计算复杂度低于三步法;搜索幅度比较平滑,不会出现方向上的误导,在摄像机镜头伸缩、有快速运动物体的图像序列中广泛应用。C、基于块的梯度下降搜索法(Block-BasedGradientDescentSearch,BBGDS)利用运动矢量中心分布特性,用3×3搜索窗;视频帧内相邻像素间具有渐变性,每一步的最小块误差点分布具有一定的方向性,即梯度下降方向;使用梯度下降方向来决定下一步的搜索方向;特点:使用中心匹配块而不是匹配点,降低了陷入局部最优的可能性;引入梯度下降概念,用梯度下降方向指导搜索方向,减少不必要的搜索,大大降低算法复杂性。反复使用3×3模板进行搜索。模板中心处SAD值最小时结束。对大运动检测效果不好D、菱形搜索法(DiamondSearch,DS)

搜索窗口太小易陷入局部最优,搜索窗口太大易产生错误的搜索路径;统计表明,视频图像进行运动估计最优点通常在零矢量周围;基于上述事实,采用两种模板:9个检测点的大菱形模板;5个检测点的小菱形模板;先用大模板计算当最小块误差点出现在中心处时,换为小模板,此时5个点中最小块误差点即为最优匹配点;

搜索方式与四步法类似,只是搜索模板换为两个菱形模板;搜索次数9+5+4+4=22;目前快速匹配算法中性能最优异的算法之一,1999年10月被MPEG-4采用并收入验证模型。菱形搜索法性能分析:

选用了大小两种形状的搜索模版,先用大模板搜索,步长大搜索范围广,进行粗定位,避免搜索窗口太小时,陷入局部最优;粗定位后,再用小模板准确定位,保证匹配精度;搜索时各步之间相关性强,模板移动只需要在几个新的检测点处进行匹配计算,提高了搜索速度。MPEG-1图像P帧编码原理§4.3视频数据编码方法4.3.1熵编码4.3.2预测编码4.3.3变换编码主要内容

离散余弦变换(DCT)

二维DCT数据压缩编码过程视频图像的频率特征:低频信号的幅值大,高频信号幅值小。图像信号的能量主要集中于信号的低频分量,而高频分量的能量较小。相关性分析:对于变化复杂的图像来说位置空间的相关性并不明显,但将信号变换到频率的直角坐标域中,则幅值大的低频分量集中在一个角落,而幅值小的高频分量则分布在其他位置,表现出了较强的频率相关性。因此就可能获得一种效率更高的编码方法,以便于进行压缩编码,DCT编码就是这样一种纯数学变换的编码方式。

.离散余弦变换(DCT)

1、

变换的基本原理正交变换的矩阵表示正交变换是一类重要的线性变换。利用矩阵可以方便地表示线性变换。

设:表示图象矩阵,为变换图象矩阵的变换系数,表示变换矩阵,为A的转置,(以像块为例)则利用两次矩阵乘法完成二维线性变换法:

=发送端以F形式发送,接收端在收到后,利用相应的逆变换,把F变换成,变换矩阵乘A的逆矩阵和的逆矩阵其中为单位矩阵。2、DCT变换的方法①分块:将每个分量图像分成许多8×8=64个样点组成的像块,并对其采样,得到在空域中的8×8的样值矩阵。②变换:利用FDCT公式,将空域中的8×8样值矩阵,正向变换(FDCT)为频域中的8×8DCT系数矩阵。++=ΣΣ==16)12(cos16)12(cos),()()(41),(7070ppvyuxyxfvCuCvuFyx

FDCT变换二维DCT的矩阵表示式

正变换FDCT:

正交变换矩阵,是的转置矩阵根据矩阵的正交性,有反变换IDCT:

即[DCT]的转置矩阵等于它的逆矩阵。8*8的DCT矩阵

对比两个数值矩阵观察相关性f=170132185147190215220185130190175195223199163180220202173197170154160170211185190166140172190193150180140164198180177141172135190163140165132160140160200145135170199190129

f(x,y),F(u,v)矩阵F=136.2340-48.8294-39.24589.8608-22.631011.6491-63.7071-5.381662.2669-77.255416.1615-12.825535.054023.9713-5.6764-41.69917.5839-7.406975.576026.7426-26.4953-12.8395-10.5650-43.593518.621918.167323.2682-26.082817.795821.602510.09396.4744-9.1274-32.19130.341412.5642-10.6278-7.27107.0297-8.1319-9.276810.067812.2530-9.920210.1096-12.997410.025310.542210.7947

2.3326-29.5610-20.2712-7.353512.19529.65590.2945-8.391312.2379-8.4750-6.515315.882613.3316-2.18192.2038F(0,0)称为直流(DC)系数其他为交流(AC)系数变换后的64个DCT频率系数与DCT前的64个像素块相对应,都是64个点,说明这个过程只是一个没有压缩作用的无损变换过程。单独一个图像的全部

DCT

系数块的频谱几乎都集中在最左上角的系数块中。DCT输出的频率系数矩阵最左上角的直流(DC)系数幅度最大

DC

系数为出发点向下、向右的其它DCT

系数,离

DC分量越远,频率越高,幅度值越小,图中最右下角为2.2038,即图像信息的大部分集中于直流系数及其附近的低频频谱上,离

DC系数越来越远的高频频谱几乎不含图像信息,甚至于只含杂波。DCT

本身没有压缩作用,却为以后压缩时的"取"、"舍"奠定了必不可少的基础。IDCT变换(逆变换):DCT系数并不能重构图像,因此在接收端需要利用IDCT公式将频域中的8×8

DCT系数矩阵变换为空域中的8×8样值矩阵,使图像得以还原。逆向DCT变换(IDCT):++=16)12(cos16)12(cos),(41),(ppvyuxvuF)()(vCuCyxfΣΣ==7070vu亮度信号DCT变换原图象亮度信号余弦变换将大部分信息滤掉重构亮度信号图像

二维DCT数据压缩编码过程1、图像压缩编解码过程方框图

2.DCT系数量化

(1)量化的原因:

DCT之后其系数矩阵中相关性不够明显,为进一步降低DCT系数矩阵中非零系数的幅值,增加零系数的个数,使相关性表现的更明显,需要进一步量化。(2)量化的依据①对失真的要求:量化是图像质量下降的重要原因,DCT系数量化是基于限失真编码理论进行的,容许有失真,但应在视觉容许的容限内。②视觉要求:

a.对亮度信号与色度信号的分辨能力不同;

b.对低频图像信号和高频图像信号的分辨能力不同。结论:可以采用不同的量化方案。(3)量化的方法

区域滤波法:是采用式对DCT系数矩阵中的每一个值逐一量化。注:

a.F(u,v)为DCT系数矩阵中位于(u,v)的DCT系数;

S(u,v)为量化表中位于(u,v)点的量化步长,(不同位置可以采用不同的量化步长);

Q(u,v)为对应于(u,v)位置的量化值。

b.round()为取整函数。

c.

Q(u,v)矩阵,为量化后的DCT系数矩阵,表现了较强的相关性。d.逆量化Q-1:接收端,一定要使用与发送端相同的量化表进行逆量化,方可使图像还原。

亮度量化步长表

1611101623305161121213192658605513131623305769561317222951878062182237566810910377233555638110311392396378871031211201017292959811210010399特点:

1.量化步长值不同:左上角量化步长值较小,右下角量化步长值较大

2.量化后,右下角的高频分量的系数变为零,保留了低频分量1611101623305161121213192658605513131623305769561317222951878062182237566810910377233555638110311392396378871031211201017292959811210010399对不同的分量信号采用不同的量化表(不同分量信号的区别)

色度量化步长表

17182337999999991821266699999999232656999999999937669999999999999999999999999999999999999999999999999999999999999999999999999999采用Zig-Zag(或称“Z”字形)扫描,可保证低频分量先出现,高频分量后出现。扫描之后,分别用不同的方法对直流分量和交流分量编码。DC直流系数AC01交流系数扫描开始交流系数扫描结束AC07AC70AC77

3.Zig-Zag扫描:一种将二维数组转变为一维数组的Z字形扫描方法。

Zig-Zag扫描序列:系数矩阵Q,进行Zig-Zag扫描所得到的数据序列。

Z扫描的特点:

①可以增加连续0系数的个数,也就是增加0的游程长度。②在数据序列中,非零系数主要都集中于数据序列的首部,在数据序列的尾部,则都是连零(EOB)数据。这样对传输中的数据压缩十分有利。

4、变换系数熵编码直流分量(DC):

相邻图像子块的直流分量(图像子块的平均样值)也存在着相关性,所以对DC的量化系数用DPCM编码较合适,即对当前块和前一块的DC系数的差值进行编码。

交流分量(AC):把数值为0的连续长度(即0的游长)和非0值结合起来构成一个事件(Run,Level),然后再对事件(Run,Level)进行熵编码。例:设8×8图像亮度数据矩阵如下,请进行压缩编码。解:(1)亮度数据矩阵的DCT变换系数为:==.(2)亮度量化矩阵S(u,v):1611101623305161121213192658605513131623305769561317222951878062182237566810910377233555638110311392396378871031211201017292959811210010399量化公式:量化结果:(3)Zig-Zag扫描输出路径及扫描输出后的值每一数据块最后一个量值结束,应该用数据块结束符号:EOB作为结束,EOB编码为1010MPEG-1P帧图像编码原理

1、音频信号压缩编码的必要性数字音频的质量取决于:采样频率和量化位数这两个参数,为了保真在时间变化方向上取样点尽量密,取样频率要高;在幅度取值上尽量细,量化比特率要高

,直接的结果就是存储容量及传输信道容量要求的压力。音频信号的传输率=取样频率*样本的量化比特数*通道数取样频率=44.1KHz样本值的量化比特数=16

普通立体声的信号通道数=2数字信号传输码流大约1.4Mbit/s

4.4音频数据压缩编码原理一、音频压缩编码的基本原理

数字音频的出现,是为了满足复制、存储、传输的需求,音频信号的数据量对于进行传输或存储形成巨大的压力。音频信号的压缩是在保证一定声音质量的条件下,尽可能以最小的数据率来表达和传送声音信息。信号压缩过程是对采样、量化后的原始数字音频信号流运用适当的数字信号处理技术进行信号数据的处理,去除音频信号中人们感信息影响可以忽略的成分,仅仅对有用的那部分音频信号进行编码,从而降低了参与编码的数据量。

2、音频信号压缩编码的可能性数字音频信号中包含的对人们感受信息影响可以忽略的成分称为冗余,包括时域冗余、频域冗余和听觉冗余。

(1)时域冗余时域冗余的表现形式:

①幅度分布的非均匀性信号的量化比特分布是针对信号的整个动态范围而设定的,对于小幅度信号而言,大量的比特数据位被闲置。②样值间的相关性声音信号是一个连续表达过程,通过采样之后,相邻的信号具有极强的相似性,信号差值与信号本身相比,数据量要小的多。

③信号周期的相关性声音信息在整个可闻域的范围内,每个瞬间只有部分频率成分在起作用,即特征频率,这些特征频率会以一定的周期反复出现,周期之间具有相关关系。④静音声音信息中的停顿间歇,无论是采样还是量化都会形成冗余,找出停顿间歇并将其样值数据去除,可以减少数据量。(2)频域冗余频域冗余的表现形式:①长时功率谱密度的非均匀性任何一种声音信息,在相当长的时间间隔内,功率分布在低频部分大于高频部分,功率

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论