多媒体数据压缩
更新时间:2023-12-19 23:30:01 阅读量: 教育文库 文档下载
第三章 多媒体数据压缩
数字化了的视频和音频信号的数据量是非常大的,一幅具有中等分辨率(640象素×480象素),彩色(24bit/象素)数字图象的数据量约 7.37Mbit/帧,帧速率为25帧/秒,那么这种视频信号的传送速率大约为184Mbit/秒。对于音频信号,假如采样率为44.1KHz,每个采样点以16bit量化,存储10分钟二通道立体声的录音,大约需要100MB的存储空间。由此可见,高效实时地压缩视频和音频的数据量是多媒体通信中不可回避的关键技术问题。
虽然为了传输和存储的目的需要进行数据压缩,但是数据压缩是否有可能呢? 回答是肯定的。数据压缩之所以可实现,是因为原始信源数据(视频图象和音频信号)存在着很大的冗余度,比如电视图象帧内邻近象素之间空域相关性及前后帧之间的时域相关性都很大,因而可以进行数据压缩减少或消除冗余。另一方面,在多媒体应用领域中,人是主要接收者,眼睛是图象信息的接收端,耳朵是声音信息的接收端。这样就有可能利用人的视觉对于图象边缘急剧变化不敏感, 对图象的亮度信息敏感和对色彩的分辨力弱的特点,以及听觉的生理特性实现数据压缩。数据压缩技术亦称数据编码技术,从1948年Oliver 提出PCM编码理论开始,迄今已有50余年的历史。随着数字通信技术和计算机科学的发展和,编码技术日臻成熟,应用范围愈加广泛。随着多媒体通信的进一步发展,对编码技术提出了更高的要求。
按照编码压缩方法是否产生失真,可以把现有的编码压缩方法分成无失真编码和有失真编码两大类。顾名思义,前者是指解压缩以后的还原图像与原始图像完全一致;后者是指解压缩之后的还原图像与原始图像存在一定的误差。当然这种误差应该在一定范围之内,并能满足具体应用的要求。
无失真编码方法主要有熵编码、算术编码、游程编码等;有失真编码主要有预测编码、变换编码、矢量量化编码、频带分割编码方法、基于模型的编码方法等。 本章着重介绍多媒体数据压缩的基本原理以及目前常用国际标准编码压缩方法。
3.1 信源编码的基本概念
图象数据压缩的目的是在满足一定的图象质量(或称失真度)的条件下,用尽可能少的比特数来表示原始图象,以提高图象传输的效率和减少图象存储量,这在信息论中称为信源编码。信源编码可分两大类:一类是无失真编码,另一类是有失真编码。下面介绍信源编码中的一些基本概念。
3.1.1 无失真编码定理
理论分析证明,在无干扰的条件下,存在一种无失真的编码方法,使编码的平均长度L与信源的熵H(s)任意的接近,即L=H(s)+?,其中?为任意小的正数;但以H(s)为其下限,即L?H(s)。这就是香农(Shannon)无干扰编码定理。
301
香农无干扰编码定理说明,对于无失真图象编码,原始图象数据的压缩存在一个下限,即平均码组长度不能小于原始图象的熵,而理论上的最佳编码的平均码长只能无限接近原始图象的熵。这样,就可以将原始图象数据的冗余度r定义为:
r?原始图象平均码长?1
原始图象的熵 ?L?1 (3-1) H(s)H(s)1? (3-2) L1?r编码效率?可定义为 ??
冗余度接近于零或编码效率接近于1的码便称为高效码。若原始数据的平均比特率
为n,编码后的平均比特率为nd ,则压缩比C定义为
C?nnd (3-3) 根据香农无干扰编码定理,无失真编码最大可能的数据压缩比为
CM?nH(s)???nH(s) (3-4) 为了进一步弄清熵与相关性和冗余度的关系,我们讨论一下离散的独立信源的
熵和马尔可夫(Markov)信源的熵。
3.1.2 独立信源
所谓独立信源,又称为无记忆信源, 即信源中符号si的出现与信源其它符号出现与否无关,也就是说,信源中各个符号出现的概率是独立的。
设信源包括s1,s2,?,sq等q个符号,各个符号出现的概率分别对应
p(s1),p(s2),?,p(sq),则此信源的熵为
H(s)???p(s)logp(s) (3-5)
i2ii?1qL对于自然二进制码,q?2,其中L等于二进制码组的长度。如果信源中各符号出
现概率相等,即p(si)?1/q,则该信源熵为 Hm(s)??11 log?2qi?1qq 302
?1?L ?qi?1q ?L 比特 (3-6) 由以上分析可以看出,当信源中各符号出现概率不相等时,其熵小于Hm(s)。也就是说信源中各符号出现概率相等时,其熵为最大的Hm(s)。这时该信源冗余度
r?LHm(s)?1?0,不可能压缩。只有信源中的符号出现概率不相等时,这时信源
的熵H(s)?Hm(s)?L,其冗余度r?LHm(s)?1?0,才有可能压缩。这时,可以把出现概率大的符号用较短的码字表示,把出现概率小的符号用较长的码字表示,从而使平均码长L缩短,达到数据压缩的目的。
一幅图象也相当于一个信源,图象象素的灰度级别是有限的,通常 256个等级,
相当该图象信源有 256个符号,各灰度等级出现的概率可以统计出来,即可以算出该图象的直方图,因此可以很容易地计算出该幅图象的熵,进而分析该图象可能压缩的程度。
实际的信源,不可能是纯粹独立的信源。也就是说,信源中各符号的出现可能是互相之间有关系的。例如马尔可夫信源,是指某位符号si出现的概率与其前面出现的符号有关,如果只与前面出现的一位符号有关,则称一阶马尔可夫信源,如果与前面出现的二位符号有关,则称二阶马尔可夫信源。马尔可夫信源,又称为有限记忆信源。下面我们讨论一阶马尔可夫信源。
3.1.3 一阶马尔可夫信源
一阶马尔可夫信源的熵可由下式计算
H(s)?H1?H0 (3-7) 其中H0 是把该马尔可夫信源看成独立信源时的熵,H0???p(s)logii?1q2p(si)。
H1为考虑符号s1与其前面符号si1联合出现概率p(si1,si)后的条件熵,即
H1????p(si1?1i?1qqi1,si)log2p(si1,si) (3-8)
若相邻符号之间的相关性越大,则条件熵H1越小,熵H1越接近H0,完全相关时,
H1 = H0 ,这时H(s)?0。完全无关时,H1 = 2H0 ,H(s)?H0,这时马尔可
夫信源变成独立信源。由此可见,相邻符号的相关性使得信源的熵减小,有可能进
303
行编码压缩。
3.2 熵编码
在多媒体数据压缩中,经常用到熵编码,熵编码的原理是根据符号出现概率的大小分配不同长短的码字,即对于出现概率较高的符号分配短码字,对出现概率较低的符号分配较长的码字。这样分配以后,可使平均码长减小,从而达到压缩的目的,这种熵编码,也称为哈夫曼(Huffman)编码。
假设pi 是符号si 出现的概率, ?i 是对 si的编码码长,则这种编码方式的平均码长为 L??p?ii?1qi (3-9)
我们通过实例来说明这种编码方法。
设信源符号包括S?{s1,s2,s3,s4,s5,s6}, 其出现概率分别为p1?0.4,p2?0.3,
p3?01.,p4?0.06,p5?0.06,p6?0.04。求其哈夫曼码。
哈夫曼编码方法是先将信源符号按出现概率的大小排成一列,然后把最末两个符号的概率加起来,合成一个概率。再把这个概率与其余符号的概率按大小重新排列,再把最末两个概率加起来,合成一个概率。如此进行下去,直到最后剩下两个概率为止。
以上步骤完成之后,从最后两个概率开始逐步向前进行编码,每一步只须对二个分支各赋予一个二进制码,如对概率大的赋予码元0 ,对概率小的赋予码元1。这样,本例哈夫曼编码过程如图3.1所示。
信源符号出现频率0.40.30.10.10.060.04第一步0.40.30.10.10.1第二步0.40.30.20.1第三步0.40.30.3第四步0.600.41哈夫曼码10001101000101001011S1S2S3S4S5S601}01}01}01}图3.1 哈夫曼编码过程
最后一列是形成各个符号对应的哈夫曼码。形成哈夫曼码的规则是:依次记录该符
号本身概率所赋予的码元(0或1),及其在各步概率合并后赋予的码元(0或1),顺序排列起来再反序。例如s6,本身概率0.04,所赋码元为1,第一步合并概率0.1, 所赋码元 为1,第二步合并概率0.2,所赋码元为0,第三步合并概率0.3,赋码元为1,第四步合并概率0.6,所赋码元为0,则依次编码为11010,反序后01011即为s6的哈夫曼码。同样方法可求出各符号对应的码字如图3.1中最右列所示。
304
上述6个符号的平均码长 L??p?ii?16i
?0.4?1?0.3?2?0.1?3?0.1?4?0.06?5?0.04?5 ?2.2 比特 该信源的熵 H(s)???p(s)logp(s)
i2ii?16 ?2.14 比特 编码效率 ?? 冗余度 r?H(s)?0.975 LL?1?0.02 5 H(s) 假设对该信源用自然二进制编码的话,那么每个符号需用码长为3比特,因而该哈夫曼编码的压缩比为 C?n3??1.36 nd2.2 根据无失真编码定理,该信源最大可能的数据压缩比为 CM?n3??1.4 H(s)2.14由此可见上述哈夫曼编码的压缩比很接近理论压缩比。
3.3 预测编码
预测编码是一种简单而且十分有效的数据压缩方法, 广泛应用于声音,图象等类数据的压缩。所谓预测,就是根据已经出现的数据样本对将要出现的下一个数据的大小作出估计。由于声音、图象等类数据具有严格平滑连续性,相邻采样点间数值变化往往不大,因此借助前面的若干个数据样本往往可以较准确地预测出当前样本的数值,预测的误差一般都很小,如果我们不是直接对原始数据进行编码,而是先做预测,然后仅对较小的预测误差进行编码,这样就可以减少码长,达到压缩效果,这就是预测编码的基本思想。
一个基本的预测编码系统示于图3.2。原始数据送入编码单元,与预测器输出的估值相减,得到预测误差值,经编码器编码(如哈夫曼编码)后形成码流进行传输和存储。解码是首先恢复出预测误差值,再和用与编码器相同的预测器估计出的预测值相加,从而恢复出原始数据。
305
预测误差原始数据预测值编码器码流预测器预测误差恢复数据解码器码流预测器图3.2 基本预测编码/解码系统
例如有一组数200,201,203,202,204,204,假设我们用前一个数据来预测后一个数据,预测编码的工作过程示于图3.3。预测误差,即原始数据真值与预测值之差分别为1,2,-1,2,0,...。
原始数据200201203202204204 ...预测值初值200201203202204 ...预测误差恢复误差 1 . . 1 2 . . 2-1 . .-1 2 . . 2 0 ... . . 0 ...恢复数据200201203202204204 ...图3.3 预测编码原理示意图
如果采用二进制对原始数据编码,每个数据都需8比特。预测编码不是对原始数据编码,而是对预测误差编码。由于预测误差动态范围大大缩小,因此只用3比特就可以了,这就减少了码长,达到了压缩的目的。
预测编码系统性能的好坏,预测器的设计是关键,预测器设计得越好,预测误差就越小,甚至会有很多0值出现,从而有利于数据的有效压缩,目前常用的预测器是具有图3.4所示结构的线性预测器。这种预测器通过计算n时刻以前若干时刻
?(n),其公式为 的线性加权和来预测n时刻的值x?(n)? x
?ak?1mkx(n?k) (3-10)
306
预测器x(n)预测值am......a2a1 X(n-k)X(n-2)X(n-1)图3.4 线性预测器的结构
其中,ak为样本x(n?k)的预测系数,m为预测阶数,即用x(n)前m个样本进行预测。
n时刻的样本真值与预测值的差,称为n时刻的预测误差d(n),为
?(n) d(n)?x(n)?x ?x(n)??ax(n?k) (3-11)
kk?1m为了获得好的预测效果,要求预测器是最佳预测器,那么,最佳线性预测就是选取ak使预测误差d(n)的均方差最小。假设x(n)是广义平稳的,且均值为零,则预测误差的方差为
令
m??d ??2E{x(n?i)[x(n)??akx(n?k)]2}?0 (3-13)
?aik?12?d?E{d(n)}?E{[x(n)??akx(n?k)]2} (3-12)
22k?1m. , i?1,2,..m可得
R(i)?. , (3-14) ?aR(k?i)?0 i?1,2,..mkk?1m其中,R(i)为样本数据x(n)的自相关函数。
假设x(n)是各态历经的,且数据样本数N充分大,则x(n)的自相关函数可用下式计算
307
1 R(i)?R(?i)?N将方程写成矩阵形式为
?x(n)x(n?i) (3-15)
n?1N?R(0)?R(1) ?????R(m?1)R(1)R(0)?R(m?2)?R(m?1)??a1??R(m?2)??a2???????????????R(0)??am??R(1)??R(2)??? (3-16) ?????R(m)??解上面方程,便可求出最佳线性预测器的系数ak。
对于二维图象数据f(m,n),其线性预测值为
?(m,n)? f预测差值为
??a(k,l)?zk,lf(m?k,n?l) (3-17)
?(m,n) d(m,n)?f(m,n)?f ?f(m,n)???a(k,l)?zk,lf(m?k,n?l) (3-18)
其中z为对象素f(m,n)进行预测的邻近区域。例如图3.5中对f0点预测时,可供考虑的邻域次序为f1f2f3...f11。
f11f7f5f8f3f1f6f2f0f9f4f12f10图3.5 预测区域示意图
假设f(m,n)是二维平稳随机过程,均值为零,d(m,n)的方差为 令
?d2?E{d2(m,n)} (3-19)
2??d?0, 可得
?ai,j R(i,j)???a(k,l)?zk,l R(k?i,l?j)?0, (i,j)?z (3-20)
由方程组3-20便可求出二维线性最佳预测器的各个系数ak,l。
上述最佳线性预测是假定原始图象为平稳随机过程,实际图象虽然在总体上一
般可看作是平稳的,但在局部上一般是不平稳的。另外,非线性预测器可能比线性
308
预测器更接近实际情况,因此,采用非线性自适应预测可获得最佳预测效果。
3.4 变换编码
上述编码方法都是在空间域直接对图象和声音数据进行编码。本节介绍的变换编码不是直接对原始数据编码,而是首先将原始数据进行某种变换,得到一组变换系数,然后对这些系数进行量化、编码、传输,理论上和实践上都证明变换编码是一种非常有效的编码方法。
为了达到数据压缩的目的,希望变换后的变换系数之间冗余度减小,例如变换系数中只有少数系数具有较大数值,而大部分系数具有较小数值,那么我们可舍弃数值小的系数,只对较大数值的系数进行编码,显然这就可以达到压缩的目的。 理论分析证明,正交变换可以满足上述要求。正交变换方法很多,目前,人们熟知的有傅里叶变换、哈德玛变换、余弦变换和K-L变换等。其中K-L变换后的各系数相关性小,能量集中,舍弃低值系数所造成的误差最小,但是它的变换矩阵是由原始图象矩阵的协方差矩阵的特征向量组成,随着待编码的原始图象的种类变化,其变换矩阵要随之改变,所以 K-L变换存在计算复杂、速度慢等缺点。由于离散余弦变换与 K-L变换性能最为接近,而该算法的计算复杂程度适中,又具有快速算法的特点,所以近年来在图象和声音数据压缩中得到广泛应用。因此,本节重点介绍离散余弦变换DCT方法。
3.4.1 一维离散余弦变换
在傅里叶变换中,若被变换的函数是任意连续的偶函数,那么傅里叶变换后只存在余弦项,这一性质启示我们,即使被变换函数不是偶函数,只要我们把该函数变换成偶对称函数,然后再对变换后的偶函数进行傅里叶变换,那么傅里叶变换后的函数也只含余弦项,根据上述思想,我们首先分析一维离散情况。
设f(x),x?0,1,2,?,M?1, 为一离散序列,我们可以根据下式,把它变换成偶对称序列fe(x),在正半轴坐标时,
fe(x)?f(x),x?0,1,2,?,M?1 (3-21) 在负半轴坐标时,
fe(x)?f(?x?1),x??1,?2,?,?M (3-22) 这样构成的偶对称序列fe(x),其对称中心位于x??1/2处.因此, fe(x)的傅里叶变换为
Fe(u)?2?1u(x?)2M212M{?fe(x)ex??M?1?j2?1u(x?)2M2??fe(x)ex?0M?1?j}
309
?12M{?fe(x)ex??1?M?j2?1u(x?)2M2??fe(x)ex?0M?1?j2?1u(x?)2M2 } (3-23)
令x???x?1, 对上式第一项进行代换,可得, Fe?12M1{?fe(?x??1)ex/?0M?1j2?1u(x??)2M2??fe(x)ex?0?jM?1?j2?1u(x?)2M2}
?{?f(x)eM?1j2?1u(x?)2M2??f(x)eM?12?1u(x?)2M2 } (3-24)
2Mx?0x?0利用公式 ej??e?j??2co?s 上式可改写为 M??1 Fe(u)?2Mf(x)cos?u(2x?1) x?02M这就是一维离散余弦变换的公式。
因此,归一化的一维离散余弦变换公式如下
M?1 F(u)?2MK(u)?f(x)cos2[x(?1)u?2M] x?0M 2??1f(x)?MK(u)F(u)cos2[x(?1)u?2M] u?0其中,
x?0,1,?,M?1 u?0,1,?,M?1 K(u)???1/2,u?0, ?1u?1,2,?,M?1
3.4.2 二维离散余弦变换
二维离散余弦变换是一维情况的推广,公式如下,
M?1N? F(u,v)?21MNK(u)K(v)??f(x,y)co sx?0y?0 [(2x?1)u?/2M]?cos2[y(?1)v?/2N] u?0,1,2,..M.,?1 310
(3-25)
(3-26) (3-27a)
(3-27b)
(3-28a)
v?0,1,2,...,N?1
2 f(x,y)?MNM?1N?1u?0v?0??K(u)F(u,v)cos2[x(
[y(?)v?/2N] (3-28b) ?1)u?/2M]?cos2.,?1 x?0,1,2,..M.,?1 y?0,1,2,..N其中
?1/2,u?0 K(u)??
u?1,2,?,M?11,?
K(v)???1/2,v?0 (3-29)
v?1,2,?,M?1?1, 如同二维傅里叶变换一样,二维离散余弦变换也是行列可分的,因此,可以把
二维离散余弦变换变成首先在行的方向对原始图象进行一维离散余弦变换,然后再在列的方向进行一维离散余弦变换。
另外,从离散余弦变换的正变换和逆变换的公式上可以看出,正变换和逆变的变换核函数是一样的,这一特点给计算机编程和研究快速算法带来很大方便。
3.4.3 二维离散余弦变换的快速算法
实现快速二维离散余弦变换有三种方法:第一种方法是上面介绍的采用傅里叶变换法,即把原始图象构造成偶对称阵列,然后采用快速傅里叶变换;第二方法是把二维变换分解成在行和列方向的二次一维变换;第三种方法是根据二维变换公式,研究二维离散余弦变换的快速算法。这种快速算法,只要把原始图象进行分块、排列、组合,就可以把复杂的余弦函数的乘法、加法运算变成只需进行实数乘法和加法的运算,从而大大地提高了运算速度。
3.4.4 基于离散余弦变换的编码压缩方法
图3.6示出基于离散余弦变换DCT的编码过程框图
311
量化阵偏移量数据DCT差分编码DC687-2-20-300220020-1-1-11111010110101110000110110001100100100100Z字形 扫描编码AC÷10量化器可变长编码(Huffman)码流000800880884884468-23-4-3-23-28173-41720-11-33-11-12-23-23-4-28-4-31717-33203-11-11-12DC系数AC系数Huffman码表符号0-1-2+2-3+1+7码字01001011101110011101111100070-20-200-3000202000200-10-10-10200900780784984370-200-20-2320002020-100-10-10Z字形扫描解码量化阵×10反量化器可变长解码恢复数据IDCT差分解码
图3.6 基于DCT的编码过程框图
对于变换编码压缩方法,首先需要把原始图象分块,对于DCT变换编码压缩方法,通常把原始图象分成8×8大小的子块,每一子块顺序地进行DCT正变换,对DCT变换系数,进行量化,然后进行编码。
基于DCT的解码过程与编码过程相反,即首先解码,然后去量化,对每一子块进行DCT反变换,得到子块图象,各个子块顺序进行,便得到了解码后恢复的图象。
上述基于DCT的编码解码过程中所用的量化及编码器及解码器,我们在本章的后面几节将加以介绍。
上面几节介绍的熵编码、预测编码和变换编码等编码压缩方法可以混合使用,形成混合编码方法。因此,混合编码方法是指对一幅图象同时使用两种或两种以上的编码方法混合起来进行编码的方法,以达到高效压缩数据的目的。例如,通常采用预测编码与变换编码的混合编码方法。这种混合编码,既具有预测编码实现简单的优点,又具有变换编码的抗误差能力强的优点。
对于电视图象可以有帧内混合编码和帧间混合编码两种情况。帧内混合编码,
312
可首先对图象沿行方向作一维正交变换,然后对变换后的系数在列方向进行预测编码。另外一种情况是在图象二维空间中进行分块正交变换,然后对其变换作帧间预测编码;或者对帧间块作预测,然后对预测误差再作正交变换、量化、编码等。 总之,混合编码具有计算量适度,抗干扰能力强,并能得到较大的压缩比等优点。在下面几节介绍的用于多媒体中的三个标准编码压缩方法,都采用混合编码方法。它们采用离散余弦变换、行程编码、预测编码以及基于统计特性的熵编码的混合。这种混合编码方法可以得到很高的压缩比和令人满意的图象主观保真度质量。
3.5 静止图象的压缩标准JPEG
JPEG专家组经过 5年的细致工作后,于 1991年3月提出了ISOCD 10918号建议草案:“多灰度静止图象的数字压缩编码”, 即通称的JPEG标准。主要内容如下:(1) 基本系统(Basic System)提供顺序扫描重建的图象,实现信息有丢失的图象压缩,而重建图象的质量要达到难以观察出图象损伤的要求。它采用8×8象素自适应DCT算法、量化及哈夫曼(Huffman)型的熵编码器。(2) 扩展系统(Extended System) 选用累进工作方式,编码过程采用具有自适应能力的算术编码。(3) 无失真的预测编码,采用帧内预测编码及哈夫曼编码(或算术编码),可保证重建图象数据与原始图象数据完全相同(即均方误差等于零)。
3.5.1 基于DCT的编码器和解码器方框图
基于DCT的编码器和解码器方框图如图3.7所示。
8x8方块正向DCT熵编码器量化器压缩图象数据源图象数据量化表(a) 编码器基于DCT的解码器熵码表压缩图象数据熵解码器去量化器反向DCT重建图象数据熵码表量化表(b) 解码器
图3.7 基于DCT的编码器和解码器方框图
原图象数据首先经过分块,即分成8×8象素方块,每块数据依次送入编码器,
313
每块数据送入编码器后,首先进入DCT变换器,然后把变换系数经量化器量化,量化器所需的量化表数据由图中量化表部分提供。量化后的数据送入熵编码器进行熵编码,熵编码所需的熵编码表由图中熵码表部分提供,经熵编码后的图象压缩数据可以存入缓冲器中,也可直接发送。由此可见JPEG标准的编码压缩主要在DCT系数的量化和熵编码二部分实现。JPEG的解码过程与编码过程相反,即压缩的图象数据首先进行熵解码、反量化、和余弦逆变换IDCT。编码器中熵编码和量化过程实质上是一个查表过程;而解码器中的熵解码和反量化的过程实质是反查表过程,因此量化表和熵码表在编码器和解码器存有相同表格。
图3.7表示的只是一个单分量(例如图象的灰度信号)图象的压缩编码及解码过程,对于实际的彩色图象及更详细的编码器及解码器框图如图3.8所示。
复合视频信号NTSCPALSECAM解码器方框1RGB模数A/D转换器方框2RGBJPEG的亮度和色度信号YCrCb方框3Y最小离散余弦Cr编码单元MCU变化MCUDCTCb方框4方框5DCT系数量化器方框6之字形扫描方框7基于DCT的编码器复合视频信号NTSC,PAL,SECAM熵编码器方框8数据交换格式方框9熵解码器去量化器反向离散余弦变换IDCT由Y,Cr,Cb计算R,G,B数据转换器NTSCPALSECAM编码器基于DCT的解码器图3.8 编码器与解码器
3.5.2 图3.8中各部分的进一步说明
1. NTSC、PAL、SECAM解码器
图3.8中NTSC、PAL、SECAM解码器的作用是把上述三种电视图象制式的图象转换R、G、B三基色图象。其详细框图如图3.9所示。
314
NTSC解码器复合视频信号开关1RGBRGBRGBRGPAL解码器B开关2SECAM解码器检测器图3.9 NTSC、PAL、SECAM解码器
图中NTSC、PAL、SECAM解码器是把上述三种制式的复合视频信号分解成一个亮度信号和二个色度信号,再经过矩阵电路转换成R、G、B三种基色信号。图3.9中检测器可以识别电视制式,从而控制开关1 和开关2 接通到相应制式的解码器上。
2. A/D转换器
图3.8中A/D转换器的作用是把R、G、B三幅基色模拟图象转换成数字图象,即需要经过取样和量化两个步骤。
通常一帧模拟图象是由从左到右,从上到下的扫描行构成的。当前扫描方式有两种,一种是广播电视中常用的隔行扫描。另一种是计算机监视器常用的顺序扫描,不管那一种扫描方式,都可以对扫描行中的电视视频信号取样,从而得到各象素的电压数据。
视频信号的取样与视频信号的最高频率有关。根据奎奈斯特定律,取样频率应大于或等于2倍最高视频信号的频率。以NTSC制为例,它的视频最高频率为4.2MHz,故样频率可选取8.4MHz 至9MHz。NTSC制的行频 fH?59.94场/秒?525行/场?15734.25行/场 2所以行周期tH?1/fH?63.5556?s,每行的显示时间td?0.835tH?53.069?s。如图3.10所示。
视频信号色同步td行同步显示区tH
315
图3.10 电视信号的扫描行
若取样频率fs 等于 9.045MHz,则 td 时间内的取样数N为 N?fs?td?9.045MHz?53.06?9s?48 0这就是A/D转换器中每行采样的象素数目。
在JPEG标准中,通常一个采样值用8位量化,即量化成28 =256个灰度等级。一个象素还有形状,称为纵横比,按JPEG标准规定象素纵横比为1:1,也就是说象素是方格子。例如上述 NTSC制中一行象素为480个,电视图象尺寸的纵横比为3:4,则一帧图象应有的行数为480×3/4=360行。现在NTSC制一帧图象为525行,一帧包含两场,若扣除两场的场消隐所需的74行(也可以少扣除一些行)则余451行。要把451行转换到360行,则需要并行, 约每10行需要并成8行,这就是图象光栅处理中常用的光栅转换成扫描转换。
3. 亮度和色度转换
图3.8中亮度和色度转换部分是将R、G、B三基色信号,转换成JPEG标准的亮度和色度信号。
一幅彩色图象信号可以由R、G、B三基色图象相加而成。 同样一幅彩色图象也可由一幅黑白图象加上彩色图象而成。这就是说可以把R、G、B三基色转换成亮度信号Y和色度信号U、V。由于人眼对图象的亮度敏感,而对图象的色度不敏感,所以在传输亮度信号时要保证其清晰;而在传输色度信号时可以降低清晰度。利用人眼的这种特性(心理视觉冗余度),在传输彩色视频信号时可以对色度信号进行更多的压缩,从而达到整体图象数据压缩更多的目的。
在模拟彩色电视中,亮度信号与经过载波调制的色度信号叠加后传输,可以达到彩色电视与黑白电视兼容的目的,即黑白电视机收到这种信号后,只有其中的亮度信号能显示,色度信号不显示。现存三种模拟彩色电视制式NTSC、PAL、SECAM均有这种兼容作用。这三种制式和JPEG标准的亮度信号和色度信号计算公式如表3.1所示。表中Y为亮度信号,U、V、I、Q、Dr 、Db 、Cr 、Cb 均为不同制式中的色度信号。当拍摄黑色图象时,R=G=B=Y,于是所有的色差信号(R-Y), (B-Y)皆为零,即所有的色度信号都为零。另外,各种制式中均有建立上述公式所必须的基准白。在表3.1中共有两种基准白,其一为C白,即白昼日光平均而得;其二是D6500 白,它是绝对黑体在绝对温度为6500K时的白色,它和C白很相似,但更确切地反映白昼光。
JPEG标准中的色度信号Cr 和 Cb 经常有正有负,为此各加0.5,称为零移,或称黑电平移动。另外在Cr 和 Cb 表达式中各有系数1/16 和1/2,这些措施共同保证色度信号Cr 和 Cb 的数值经常保持在0 和1之间,由于A/D变换中的量化为8bit,即0和255之间的整数,因而亮度、色度变换输出的Y、Cr 、Cb 也取位于0 至255之间的整数。在实际应用中,通常在DCT变换前,把Y、Cr 、Cb 减去均值128,使其具有正负对称状态,这样可以降低传输时的码速率。
表3.1 亮度和色度信号的计算公式表
316
PAL制基准白:D6500YUV= 0.299 0.587 0.114 -0.147 -0.289 0.463 0.615 -0.515 -0.100RGBY=0.299R+0.587G+0.114BU=0.483(B-Y)V=0.877(R-Y)NTSC制基准白:CYIQ= 0.299 0.587 0.114 0.596 -0.274 - 0.322 0.211 -0.522 0.311RGBY=0.299R+0.587G+0.114BI=VCos33o - USin33oQ=VSin33o + UCos33oSECAM制基准白:D6500YDrDb= 0.299 0.587 0.114 -0.133 1.116 0.217 -0.450 -0.883 1.333RGBY=0.299R+0.587G+0.114BDr=-1.902(R-Y)Db=1.505(B-Y)JPEG制基准白:CYCr-0.5Cb-0.5= 0.3 0.6 0.1 0.4315 -0.375 -0.06250.15 -0.30 0.45RGBY=0.3R+0.6G+0.1BCr=1/1.6(R-Y)+0.5Cb=1/2(B-Y)+0.5
4. 最小编码单元MCU
图3.8中最小编码单元MCU是为后继DCT作准备。按JPEG标准,源图象以帧为单位,每帧图象最多由4个分量图象组成,分量图象用符号Ci表示, i?1,2,3,4。例如一帧彩色图象由三个分量图象组成,C1?Y,C2?Cr,C3?Cb。由于人眼对色度不敏感,所以色度分量C2和C3的象素可以减少。
若在一帧图象的各分量图象中,最大水平方向象素数为X,最大垂直方向象素数为Y,则第i个分量的象素数Ci由取样因子Hi(水平方向)和Vi(垂直方向)按下式决定
Xi?(xHiV), Yi?(yi) (3-30) HmaxVmax式中Xi和Yi为Ci的水平和垂直方向的象素数。Hmax和Vmax为帧内分量最大的水平和垂直方向的取样因子。
例如,某彩色图象的三个分量图象中,最大水平方向象素数为640,最大垂直方向象素数为480,已知三个分量的取样因子如下所示。
C1?Y,H1?2,V1?2 C2?Cr,H2?1,V2?1
C3?Cb,H3?1,V3?1则最大取样因子Hmax = 2, Vmax = 2,因此各分量的象素计算如下
317
C1?Y,X1?640?2/2?640,Y1?480?2/2?480C2?Cr,X2?640?1/2?320,Y2?480?1/2?240 C3?Cb,X3?640?1/2?320,Y3?480?1/2?240只要在传输给解码器的信息中,提供X,Y,Hi,Vi,i?1,2,3,4后,解码器即可算出各分量的象素数。
当前由于技术限制,许多DCT集成块每次只能处理8×8的方块,所以 JPEG标准把 8×8作为一方块(BLOCK),块中64个象素作为一个数据单位。按照上述例子,亮度图象Y中4个(8×8)方块对应色度图象Cr 和 Cb 中各一个(8×8)方块。如图3.11所示。
8×88×8亮度Y:4个方块(a)Cr色度 :一个方块(b)8×8Cb色度 :一个方块(c)图3.11 Y, Cr ,Cb同一面积的取样方块数
根据图3.11所示的原理,在最小编码单元MCU中应当把JPEG亮度和色度变换单元送来的二个色度信号Cr 、Cb ,在行列方向按2:1合并,即将相邻4个象素合并成一个色度值。也就是说在MCU中把色度图象进行光栅转换。若把图3.11 中的 6个(8×8)方块作为一组,则可称之为最小编码单元MCU。按JPEG标准规定MCU中内插数据单元(即方块)最多为10个,即下式成立, MCU?在上述例子中 MCU??Hi?14i?Vi?10 (3-31)
?Hi?13i?Vi?2?2?1?1?1?1?6?10
图3.8中,最小编码单元MCU的作用就是把亮度及色度图象以MCU为单位顺序安排,依次送到DCT单元中。即如图3.12所示。图中Cij均为(8×8)方块。图3.12所示的最小编码单元的次序如下,
123411 MCU的次序为C11C1C1C1C2C3 567822 MCU2的次序为C1C1C1C1C2C3
318
1256C1C1C1C13478C1C1C1C11C22C21C32C3C1= YC2=Cr
图3.12 最小编码单元的次序
C3=Cb由图3.12可知,MCU内的顺序按Cij ,i?1,2,3,4安排。MCU本身的顺序,Cij的顺序以及Cij内象素的顺序均以从左到右,从上到下的顺序安排。
另外,如果在一帧图象中,行列方向象素数目不是8的整数倍,则需要通过光栅变换以达到 8的整数倍的要求。
5. 离散余弦变换DCT
该单元的作用是把MCU单元送来亮度、色度方块的数值进行二维离散余弦变换DCT。
JPEG采用的是8×8方块,因而二维离散余弦变换公式(3-28)变为:
771 F(u,v)?K(u)K(v)??f(x,y)
4x?0y?0 cos(2x?1)u?(2y?1)v?cos (3-32a)
1616177 f(x,y)???K(u)K(v)F(u,v)
4u?0v?0 cos其中
K(u),K(v)?1/2, 当u,v?0 K(u),K(v)?1, 其它
8×8方块的离散余弦变换可以采用二维快速离散余弦变换算法。8×8方块的离散余弦变换系数仍为 8×8矩阵,即含有64个系数。如同傅氏变换相当于进行频谱分解一样,余弦变换也相当于对8×8图象方块进行谐波分解。因而8×8余弦变换系数矩阵的左上角系数相当直流分量,右下角系数相当最高谐波分量。
6. 量化器
319
(2x?1)u?(2y?1)v?cos (3-32b)
1616 图3.8中量化器单元的作用是对 8×8余弦变换系数进行量化。量化的目的是对DCT系数进行压缩,实际上是用降低DCT系数精度的方法消去不必要的DCT系数,从而降低传输位率,即比特率。
JPEG中采用线性均匀量化器,量化定义为对64个DCT系数除以量化步长,经四舍五入取整,如下式所示。
FQ(u,v)?取整数?F(u,v)/Q(u,v)? (3-33)
其中Q(U,V)是量化器步长,它是量化表的元素。量化表元素随DCT系数的位置和彩色分量的不同有不同值。量化表的尺寸为8×8与 64个DCT系数一一对应。JPEG给出这个量化表的参考值,当然,它也可由用户规定。这个量化表存在量化器中。量化表中的每个元素值为1 到 255之间的任意整数,其值规定了它所对应DCT系数的量化步长。解码器中的反量化表达式如下式所示。
F?(u,v)?FQ(u,v)?Q(u,v) (3-34) 量化的作用是在一定的主观保真度图象质量的前提下,丢掉那些对视觉效果影响不大的信息。不同频率的余弦函数对视觉影响不同,所以可根据不同频率的视觉阈值来选择量化表中的元素值的大小。这样通过心理视觉实验,可确定对应于不同频率的视觉阀值,以确定不同频率的量化器步长。图3.13示出量化特性。表3.2示出根据心理视觉加权函数而得的亮度分量量化矩阵,即亮度量化表。表3.3示出根据心理视觉加权函数而得到的色度分量量化矩阵,即色度量化表。
F(u,v)4321-0.5QF(u,v)/Q(u,v)0.51-4-3-2-1 ?2-1-2-3-4图3.13 量化特性
表3.2 亮度量化表
16 11 10 1612 12 14 1914 13 16 2414 17 22 2918 22 37 5624 35 55 6449 64 78 8772 92 95 98
24 40 51 61 26 58 60 55 40 57 69 56 51 87 80 62 68 109 103 77 81 104 113 92103 121 120 101112 100 103 99
320
表 3.3 色度量化表
17 18 24 4718 21 26 6624 26 56 9947 66 99 9999 99 99 9999 99 99 9999 99 99 9999 99 99 99
99 99 99 9999 99 99 9999 99 99 9999 99 99 9999 99 99 9999 99 99 9999 99 99 9999 99 99 99以上二个表都是JPEG给出的参考值。
为了便于对编码压缩质量进行控制,JPEG标准建议量化公式3-33改为下式:
{ I(u,v)?取整数8?F(u,v)} (3-35)
q?Q(u,v)其中q称为质量因素,改变q的大小可以改变编码压缩的程度。
7. 之字形扫描
图3.8中之字形扫描是把量化后的8×8二维DCT系数转换为一维数据序列,以便进行熵编码。因此之字形扫描,又称之字形行走,是把二维数据变成一维数据的一种方法。之字形扫描如图3.14所示。由图3.14可见,量化后的8×8DCT系数矩阵左上角的元素代表DCT的直流系数,其余63个元素代表交流分量系数,之字形扫描按照DC0,AC01,AC10,AC20,AC11,AC02,?,AC07,AC70,?,AC77的次序进行。这个次序正好是从低频分量到高频分量的排列。
DCAC10AC20AC01AC07AC70图3.14 之字形扫描
AC77 每一子块中的直流系数反映了该子块图象中包含的直流成分的大小。通常它和相邻子块图象的直流系数有较大的相关性,所以对直流分量首先采用差分编码,即只对本子块图象与前一个子图象的直流差值进行编码,如图3.15所示。图中DCi,
DCi?1分别代表子图象Bi及Bi?1的直流系数,这二个相邻子图象的直流差分值为:
DC差分值 =DCi-DCi?1 (3-36)
321
在直流熵编码中,都是对DC差分值进行熵编码。
DCi-1DCiBi-1子图象DC差分值 =Bi子图象DCi-DC图3.15 直流差分编码
8. 熵编码器
图3.7中熵编码器的作用是对量化后DCT系数进行熵编码。熵编码是无失真编码,即对DCT的直流系数DC和交流系数AC进行编码和解码后,DC系数和AC系数可恢复原值。熵编码分两个步骤,第一步为中间熵编码;第二步是可变长度熵编码。以下分别叙述。 (1) 中间熵编码
中间熵编码也称行程编码,其编码方法如下。
我们知道量化后的AC系数中包含许多零值,所以把一串零值系数与相邻的非零AC系数组成一个数组,用符号1与符号 2一对符号表示。符号1中包含两个数据: 行程长度和位长。行程长度就是AC 系数中连续零的个数,位长就是后继非零AC 系数的幅值编码所需的比特数。符号2中只包含后继非零AC系数幅值的二进制表示。因此这一对符号可以表示如下:
(行程长度,位长) (幅值) 符号1 符号 2
对于直流系数DC,只对相邻两个子图象的DC差分值编码。由于它前面无零值,故表示DC差分值的符号1中没有行程长度,只有位长。符号2代表DC差分值的幅值。根据DC差分值的幅值可以由表3.4查得其位数。AC系数的位长可由表3.5查得。
表3.4 DC差分值的位长 表3.5 AC系数的位长
位长(size) 0 1 2 3 4 5 6 7 8 9 10 11 DC差分值 (DIFF values)? 0 -1,1 -3,-2,2,3 -7..-4,4..7 -15..-8,8..15 -31..-16,16..31 -63..-32,32..63 -127..-64,64..127 -255..-128,128..255 -511..-256,256..511 -1023..-512,512..1023-2047..-1024,1024..2047 位长(size) 0 1 2 3 4 5 6 7 8 9 10 AC系数幅值 (AC Amplitude) 0 -1,1 -3,-2,2,3 -7..-4,4..7 -15..-8,8..15 -31..-16,16..31 -63..-32,32..63 -127..-64,64..127 -255..-128,128..255 -511..-256,256..511-1023..-512,512..1023
例如,DC差分值为9,则查表3.4得位长为4,故一对符号为 (4) (9)。再举一个AC
322
系数的例子。假设量化后的AC系数经之字形扫描变换成一维数组,其中一段数据为000-3,即连续三个零后,AC系数幅值为 -3。因而符号1 中行程为 3,符号 1中位长可由表3.5查得为2,符号 2中幅值为 -3。故AC数据000-3的中间熵编码为 (3,2)(-3)。
按JPEG标准,零行长度的范围为0 到15, 超过连续的15个零时,用符号(15,0)表示有16个连续零。此符号只能用3次,因为最多只有63个AC系数。AC系数量化后会出现很多零值,频率越高,零值越多。经常发现某一非零系数之后到结尾都是一大片的零值。显然这时,我们没有必要对这大片零值进行编码。所以在非零系数编码后加上一个专门符1(0,0)作为结束,其含义是8×8方块结束,英文缩写为EOB(End Of Block)。 (2) 可变长度熵编码
可变长度熵编码简称可变长度编码VLC,常用的可变长度编码有两种,一种为哈夫曼编码;另一种为算术编码。算术编码与哈夫曼编码相比,其压缩比要高5% 至10%,这是按JPEG标准经许多图象实验证实的,但是算术编码需要更高速的硬件,其复杂性超过哈夫曼编码甚多,故目前人们仍然喜欢采用哈夫曼编码。如上所述,哈夫曼编码基本原则是,出现概率高的信息符号用较少位的码字(短码表示),出现概率低的信息符号用较多位数的码字(长码)表示。这样可使平均码长最小,达到压缩的目的。此原则中包含了可变长度的含义。
在上面的中间熵编码中已经把DC和AC系数编码成符号1 和符号2。下面的任务是把它们再进行可变长度编码。实际上,对符号1的数据进行哈夫曼编码,对符号2中的数据实际上仍用二进制编码。但不是象通常的定长二进制编码,它的长度是可变的,因而也称可变长度整数VLI编码。但它不是哈夫曼编码。
对于哈夫曼编码,JPEG标准已制订了一系列哈夫曼码表,以供编码解码用。制表过程中还考虑了便于编码程序使计算机自动编码和解码,所以哈夫曼码表中的位数较长,然而这是便于计算机识别唯一解所必须的。这里列出的哈夫曼码表包括:表3.6亮度直流差分表,表3.7色度直流差分表,表3.8亮度交流系数表,表3.9色度交流系数表4个。另外还有表3.10正负值表。
表3.6 亮度DC系数表 表3.7 色度DC系表
位长(Size)01234567891011位数 位字?(Code Length)(Code Word)233333456789 00 010 011 100 101 110 1110 11110 111110 1111110 11111110 111111110位长(Size)01234567891011位数 位字?(Code Length)(Code Word)22234567891011 00 01 10 110 1110 11110 111110 1111110 11111110 111111110 1111111110 11111111110 323
表3.8 亮度AC系数表
行程/位长 位 数 码 字 (Run/Size) (Code Length) (Code Word)4 0/0(EOB)10102 0/1002 0/2013 0/31004 0/410115 0/5110107 0/611110008 0/71111100010 0/8111111011016 0/9111111111000001016 0/A11111111100000114 1/111005 1/2110117 1/311110019 1/411111011011 1/51111111011016 1/61111111000010016 1/71111111000010116 1/81111111000011016 1/91111111000011116 1/A11111110001000 行程/位长 位 数 码 字 (Run/Size) (Code Length) (Code Word) 2/1511100 2/2811111001 2/3101111110111 2/412111111110100 2/5161111111110001001 2/6161111111110001010 2/7161111111110001011 2/8161111111110001100 2/9161111111110001101 2/A161111111110001110 3/16111010 3/29111110111 3/312111111110101 3/4161111111110001111 3/5161111111110010000 3/6161111111110010001 3/7161111111110010010 3/8161111111110010011 3/9161111111110010100 3/A161111111110010101 4/16111011
表3.9 色度AC系数表
行程/位长 位 数 码 字 (Run/Size) (Code Length) (Code Word) 0/0(EOB)2 0/12 0/23 0/34 0/45 0/55 0/66 0/77 0/89 0/910 0/A12 1/14 1/26 1/38 1/49 1/511 1/612 1/716 1/816 1/916 1/A16 行程/位长 位 数 码 字 (Run/Size) (Code Length) (Code Word)11010 2/111110111 2/21111110111 2/3111111110110 2/4111111111000010 2/51111111110001100 2/61111111110001101 2/71111111110001110 2/81111111110001111 2/91111111110000000 2/A111011 3/1111111000 3/211111111000 3/31111111110111 3/41111111110010001 3/51111111110010010 3/61111111110010011 3/71111111110010011 3/81111111110010100 3/91111111110010110 3/A1111010 4/1
324
表3.10 正负值表
位长(Size)振幅(Amplitude)码字(Code Word)(binary)-0,100,01,10,11000,...,011,100,...1110000,...,0111,1000,...,111101234...0-1,1-3,-2,2,3-7,...,-4,...7-15,...,-8,8,...,15......16 32768-
综上所述,符号1的数据(行程,位长),可查表3.6至表3.9即得到哈夫曼码。符号2中的数据幅值可查表3.10进行编码。但需注意,幅值的正负值对应不同的码字,正值的左边第一位均为1,负值的左边第一位均为零,这是便于计算机识别正负值。
9. 数据交换格式
图3.8中数据交换格式单元的作用是把可变长熵编码数据流转换成便于交换、存储和解码的统一的交换格式,如图3.16所示图中包含一帧图象的压缩数据。以下按图中4行的层次分层叙述。
压缩图象数据SOI帧EOI[表/杂项]帧首扫描1[DNL段][扫描2][扫描末][表/杂项]扫描首[ ECS0熵编码0RST0ECS末-1RST ]末-1熵编码末ECS末 末>图3.16 数据交换格式 (1) 图3.16 中第一行为压缩图象数据。图中SOI表示图象开始,中间方框表示 一帧图象数据,最后的EOI表示图象结束。SOI和EOI均称为标记符号,各占2字节(Byte)。 (2) 图3.16 中第二行说明帧内包含的数据内容。首先是表/杂项,其中表即为数据表,如量化表、哈夫曼DC 表和AC表等。表/杂项即为其它必要的信息。第二 325 行的帧首表示帧首信息,包含所选方法(如DCT方法等),取样精度,量化位数,原图象行数,每行取样数,各分量图象尺寸比例,各分量图象排队次序和分别选用何种量化表等。扫描1表示扫描数据1,由图中第三行阐述。DNL段用于重新定义帧内的行数和行号。凡框内带方括号的内容均为任选。所以在此帧内最少包含2个数组内容,即帧首和扫描1。 (3) 图3.16中第三行的扫描首(Scan Header)包含扫描起始信息,分量图象号码,该分量图象的参数,熵编码表选择内容,ECS0 (Entropy Coded Segment)表示第0段熵编码,由第四行说明。RST0 (Restart Marker) 为重新开始的标记,可以在熵编码段之间插入。但最多插入8个,按0至7标号。 (4) 图3.16中第四行用于说明初始和结束的熵编码段。各编码段内包含若干个最小编码单元MCU,各MCU内有一组按次序排列的分量图象数据,即压缩后的数据,或称熵编码数据。 JPEG的解码过程,正好与编码过程相反,恕不赘述。 下面举一个JPEG编码实例。 为了加深对JPEG编码的理解,我们以实际数据说明JPEG编码过程。 我们从真实亮度图象中取一个子图象,它是 8×8 象素方块,各象素用 8位量化,得图3.17 所示数据,或称原图象取样数据。由图可见各数据相差不大,说明低空间频率占优势。另外图中各数据值均较大,说明平均亮度较高,直流系数较大。为降低传输位率,现采用向下电平移位,即对各数据均减去均值128,得图3.18。 139144150159159161162162 图3.17 原图象数据 144151155161160161162162149153160162161161161161153156163160162161163161155159158160162160162163155156156159155157157158155156156159155157157158155156156159155157157158 326 11162231313334341023273332333434212532343333333325283532343335332731303234323435272828312729293027282831272929302728283127292930图3.18 电平移动后的数据 再经过DCT变换后得图3.19所示DCT系数,由图3.19可见,直流系数最大,低 235.6-22.6-10.9-7.1-0.61.8-1.3-2.6-1.0-17.5-9.3-1.9-0.8-0.2-0.41.6-12.1-6.2-1.60.21.51.6-0.3-3.8-5.2-3.21.51.51.6-0.3-1.5-1.82.1-2.90.20.9-0.10.4-0.51.9-1.7-0.10.9-0.1-0.71.51.71.2-2.70.4-0.60.00.61.01.1-0.61.3-1.2-0.10.31.3-1.0-0.8-0.4图3.19 DCT数据 频系数其次,高频系数最小。用亮度量化表,除图3.19中的DCT系数后,得图3.20所示的量化后DCT系数。图中全部整数而且有许多零。采用之字形扫描,将这些 15-2-1000000-1-100000-100000000000000000000000000000000000000000000000图3.20 量化后的DCT系数 数据排列后得到如下结果。 (15 0 -2 -1 -1 -1 0 0 -1 EOB) 327 对此数据进行中间熵编码。首先采用公式DC差分值 =DCi-DCi?1,这里DCi= 15,假设DCi?1 = 12,则DC差分值 = 3。对于第一方块i?1时,由于令DC0?0,查表 3.4,可知DC差分值 = 3时的位数为2, 因而DC差分值中间编码中的符号1 为(2)。符号2 为(3),即DC差分值中间熵编码为(2)(3)。下一步对AC系数进行行程编码。第一个数组为0, -2。查AC系数位数表3.5,系数-2的位数长为 2,故得符号1、符号2 为(1, 2)(-2)。以此类推可得全部行程编码如下所示: (2)(3),(1,2)(-2),(0,1)(-1),(0,1)(-1),(0,1)(-1),(2,1)(-1),(0,0) (3-37) 下一步为可变长度熵编码,首先对DC系数的一对符号(2)(3)编码。由亮度DC差分系数表3.6查得位长(2)得011,再查幅值表3.10,得幅值(3)的码为 11,因此由符号(2)(3)得码字为01111。下一对符号为(1,2)(-2),用亮度AC系数表3.8查(1,2)的码为11011。再由幅值表3.10 查幅值(-2)的码为 01。因此由符号(1,2)(-2)的编码为1101101,第三对符号为(0,1)(-1),由表3.8查 (0,1)的码为00,由表3.10查 (-1)的码为0,因此符号(0,1)(-1)的编码为000,按此步骤进行下去,直到最后符号(0,0),可在表3.8中查得为1010。由此可得全部编码序列如下: 0111 1101101 000 000 000 1110001 1010 (3-38) 上述总位数为31位,代表8×8=64象素的子图象信息。为了表示压缩程度,可以用象素位率来表示,即平均每个象素占用多少比特来度量。对本例8×8子图象的象素位率计算如下: 象素位率 = 总位数/象素数 = 31/64 = 0.5比特/象素 ( bit/pixel) (3-39) 如果不进行编码压缩,每个象素需要用8bit(=1byte)来代表。即象素位率 = 8比特/象素。为了表示压缩程度,我们定义压缩比CR CR?压缩前象素位 率/压率缩后象素位/压数缩后的总位 ?压缩前的总位 数 ?8?8?8?8/31?16.5 (3-40) 31/64 上述公式(3-38)所示的31位编码值,按顺序传输到解码器。进行解码。解码过程是编码过程的逆过程。解码器对接收到码流进行识别。我们知道(解码器和编码器具有相同的码表),根据码流的格式,首先进入的码流的前几位代表DC差分值,根据DC差分值码表3.6,发现只有输入码的前三位011可识别,代表对应位长(2),即应取011后面的2位11代表DC差分值的幅值。查表3.10得幅值为3。即DC差分值 =DCi-DCi?1 DCi= DCi?1 + 3。编码时我们假定DCi?1 =12,因此DCi= 15。这样我们已从公式(3-38)所示的码流中识别出前五位。从码流的第六位开始后面若干位代表亮度系数。根据表3.8,查得只有码流中11011能对应符号1为(1,2),这表示有一个零,零后位长为2,所以取后面2位,为01,再查表3.10,其01码对应幅值为-2,由此得第二数组为0,-2,以此类推,可得全部亮度系数。和图3.19的数据完全相同。由此也可看出熵编码是无损编码。 328 下一步是去量化,即量化表乘熵解码后所得的图3.20数据,得图3.21的数据,再经过二维离散余弦逆变换IDCT和电平移动(+128),则可得到解码后的子图象,如图3.22。 240-24-14000000-12-1300000-1000000000000000000000000000000000000000000000000图3.21 去量化后的DCT系数 144148155160163163160158146150156161163164161159149152157164164164162161152154158161162162162161154156158161162162162162156156157159160160161161156156156157158158159159图3.22 解码后图象数据 比较解码后图象3.21与原图象3.16可见,最大差值为5,即最大误差为3.6%,此误差人眼很难察觉,故此压缩和去压缩都是成功的。 以上例子进一步看出,JPEG标准中以DCT为基础的编码过程,实际上是在消除图象中的相关性,或者说消除图象中的冗余度,这种冗余度包括下列三种。 第一种是编码冗余度。例如,DCT变换,哈夫曼编码,是消除编码冗余度。 第二种是象素间冗余度。例如,直流系数用差分编码就是消除相邻子图象间的灰度(或亮度)冗余度。 第三种是心理视觉冗余度。例如,用量化过程,就是利用人眼对各种空间频率,包括亮度、色度、纵、横方向的高频、低频的敏感程度不同,从而降低和消除一部分数据,达到数据压缩的目的,或降低传输位率,同时又不损害心理视觉对图象的主观评价。这就是充分利用心理视觉冗余度对图象数据进行压缩。 329
正在阅读:
多媒体数据压缩12-19
江苏省高等数学竞赛试题汇总05-30
一年级数学培优补差工作总结07-09
最新2017人教版五年级上册语文期末考试卷4(2)07-11
印前实际操作基础教程10-03
2008数据库原理例题讲解09-29
Error Analysis and Contrastive Analysis05-20
婚宴父母致辞02-17
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 压缩
- 多媒体
- 数据
- 园区厂房施工组织设计
- K12学习2-3岁儿童创意美术教案前12课时教案
- 2017年医务科工作计划最终定稿资料
- 全国各地名校文综36题精选分类集锦:自然地理部分(二)
- 全息投影技术其实就是实现真实的三维图像的记录和再现
- 2015年二建市政实务重点(新版教材)
- 爱满“六·一” - 少年儿童“在党旗下茁壮成长”文娱汇演主持词
- 2018年县政府工作报告与2018年县政府招商引资工作总结汇编
- 怎样处理在课堂上发生过的意外事件
- 2018-2019学年江西省上高二中高一上学期第一次月考试题 物理
- 钻头的热处理论文 - 图文
- 华南理工大学博士考试管理学专业试题-2004-2010
- 月度采购计划制定方案
- 材料力学习题集
- 叶片的加工过程和工艺路线
- 全国最大的50个专业批发市场
- 网络组建中的英文缩写汉译
- 酒店入住管理信息系统设计
- 改进水冲厕所水箱的用水问题 - 图文
- 时尚行业10月广告投放排行榜发布