织梦CMS - 轻松建站从此开始!

罗索实验室

DCT变换

落鹤生 发布于 2012-03-14 15:39 点击:次 
离散余弦变换DCT (Discrete Cosine Transform)是数码率压缩需要常用的一个变换编码方法。任何连续的实对称函数的付立叶变换中只含余弦项,因此余弦变换与付立叶变换一样有明确的物 理意义。DCT是先将整体图像分成N*N像素块,然后对N*N像素块逐一进行DCT变换。
TAG:

DCT变换的基本思路是将图像分解为8×8的子块或16×16的子块,并对每一个子块进行单独的DCT变换,然后对变换结果进行量化、编码。随着子块尺寸的增加,算法的复杂度急剧上升,因此,实用中通常采用8×8的子块进行变换,但采用较大的子块可以明显减少图像分块效应。

在图像压缩中,一般把图像分解为8×8的子块,然后对每一个子块进行DCT变换、量化,并对量化后的数据进行Huffman编码。DCT变换可以消除图像的空间冗余,Huffman编码可以消除图像的信息熵冗余。

DCT 是无损的,它只将图像从空间域转换到变换域上,使之更能有效地被编码。对一个图像子块而言,将对变换后的6?个系数进行量化,并对Z字顺序扫描系数表进行 编码。这种排列方法有助于将低频非0系数置于高频系数之前,直流系数由于包含了所有图像特征中的关键部分而被单独编码。量化后的系数经过熵编码进一步无损 压缩,通常采用的是Huffman编码。这种压缩编码方法中,图像质量的降低主要是由于对系数的量化造成,且不可恢复。假设子图像为f(x, y),则DCT变换可以由下面的公式实现:

其中式(1)的f(u, v)表示变换域的高频成分,也称为交流系数;式(2)中F(0, 0)表示变换域中的低频成分,也称为直流系数。对变换结果进行分析,可以看出能量主要集中到左上角。DCT变换具有良好的去相关特性。在图像的压缩编码中,N一般取8。

图2:比特分层编码原理框图.

在解码时首先得到各点的DCT系数,然后根据下面的DCT反变换即可恢复出原图像。DCT的反变换公式为:

利用公式(3)可以无损地恢复原图像。在实际的应用中,使用DCT变换的矩阵描述形式更容易理解。

基于系数重要性的分层编码

按照上面的方法对图像变换之后的系数进行编码,产生的码流不具有分层的特性,因而不具有分级传输的能力。为了实现分层压缩,我们对变换后的系数进行重新排列(见图1),再进行支持分级传输特性的编码。

由上面图中的方法可知,变换后能量集中到变换域的左上角。因此基于DCT变换的 图像压缩方法是对系数采用“Z”字型扫描的方式处理。为了实现分层编码,我们将这些系数重新排列,然后进行分层次的编码:左上角的4个系数作为基本层的数 据;左上角16个系数作为第一增强层的数据,这16个系数是除基本层中的四个系数以外的其余系数;从16-47的数据作为第二增强层的数据;其余的16个 系数作为第三增强层数据。

经过重排并进行分层压缩之后,在各个层次上进行测试可以发现,在只传输基本层时可提供峰值信噪比为23.23dB以上的图像;增加一个增强层,图像的峰值信噪比强达到28.9dB以上;如果加入第二个增强层,恢复图像的峰值信噪比可以达到37.35dB。

采用这种方法,通过对DCT变换后 的系数按照其重要性进行取舍,可以非常方便地实现图像序列的分层压缩和分级传输,大大提高压缩算法对不同传输通道的适应能力,并兼顾到帧内图像质量与帧速 率。在一般的应用场合下,只传输第一增强层的数据即可达到较好的视觉效果,此时需要熵编码的数据量已经减少为原数据量的1/4,通过熵编码的方法,可以获 得很高的压缩比。


http://www.ed-china.com/ART_8800012576_400002_500004_TS_8425a4e3.HTM

离散余弦变换(DCT)

离散余弦变换DCT (Discrete Cosine Transform)是数码率压缩需要常用的一个变换编码方法。任何连续的实对称函数的付立叶变换中只含余弦项,因此余弦变换与付立叶变换一样有明确的物 理意义。DCT是先将整体图像分成N*N像素块,然后对N*N像素块逐一进行DCT变换。由于大多数图像的高频分量较小,相应于图像高频分量的系数经常为 零,加上人眼对高频成分的失真不太敏感,所以可用更粗的量化。因此,传送变换系数的数码率要大大小于传送图像像素所用的数码率。到达接收端后通过反离散余 弦变换回到样值,虽然会有一定的失真,但人眼是可以接受的。二维正反离散余弦变换的算式:

其中N是像块的水平、垂直像素数,一般取N=8。N大于8时效率增加不多而复杂性大为增加。8*8的二维数据块经DCT后变成8*8个变换系数,这些系 数都有明确的物理意义。譬如当U=0,V=0时F(0,0)是原64个样值的平均,相当于直流分量,随着U,V值增加,相应系数分别代表逐步增加的水平空 间频率和垂直空间频率分量的大小。当我们先只考虑水平方向上一行数据(8个像素)的情况时,如图1所示:

可见图像信号被分解成为直流成分;以及从低频到高频的各种余弦成分;而DCT系数只是表示了该种成分所占原图像信号的份额大小;显然,恢复图像信息可以表示为这样一个矩阵形式:F(n)=C(n)*E(n)

式中E(n)是一个基底 ,C(n)是DCT系数,F(n)则是图像信号。

如果再考虑垂直方向上的变化,那么,就需要一个二维的基底,即该基底不仅要反映水平方向频率的变化;而且要反映垂直空间频率的变化;对应于8*8的像素 块;其空间基底如图2所示:它是由64个像素值所组成的图像,通常也称之为基本图像。把它们称为基本图像是因为在离散余弦变换的反变换式中,任何像块都可 以表示成64个系数的不同大小的组合。既然基本图像相当于变换域中的单一的系数,那么任何像元也可以看成由64个不同幅度的基本图像的组合。这与任何信号 可以分解成基波和不同幅度的谐波的组合具有相同的物理意义。


图2给出了一个对8*8像块进行DCT变换的具体例子:

     
在如图3所示的实例中,可以看出:经过一次DCT变换计算后,64个样值仍然得到64个系数,本身码率并没有压缩;但是,经DCT变换后,比特数却增加 了。原样值是8比特,数据从0~255;得到的F10即直流分量的最大值是原来256的64/8份,即0~2047,交流分量的范围是- 1024~1023;但经过第2个步骤,即量化之后(图中△:4),大多数高频分量的系数变为0,一般说来,人眼对低频分量比较敏感,对高频分量则不太敏 感;因而量化的结果是去掉了不太重要的高频分量,降低了码率。再通过“之”字型(Zig-Zag)方式读出数据,这样读出也可以减少码率。因为经DCT变 换以后,系数大多数集中在左上角,即低频分量区,因此“之”字型读出实际上是按二维频率的高低顺序读出系数的。这样就便于采用游程长度编码(Run Length Encoding),所谓游程长度编码是指一个码可以同时表示码的值和前面有几个零。这样就发挥了“之”字型读出的优点,因为“之”字型读出,出现连零的 机会比较多,特别到最后,如果都是零,在读到最后一个数后,只要给出“块结束”(EOB)码,就可以结束输出,因此节省了很多码率。

 

(zhengym02)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/201203/15826.html]
本文出处:百度博客 作者:zhengym02 原文
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
相关文章
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容