您的位置:首页 > 其它

DCT 变换的一些思考

2012-03-29 14:08 260 查看
DCT变换能够体现出能量的关系,但是它是怎么体现点与点的关系的? :DCT变换,实际上就是一个傅里叶的变化,我们在图形处理的时候的DCT变换一般都是8*8,所以DCT变换时不针对像素的,最小的处理单元是这个8*8的矩阵。只有8*8这样的矩阵才会有能量关系。一个值是没有的。

在对已变换的数据做反变换的时候,它是怎么还原成原来的图片的?对于DTC的反变换,因为在DCT变换的时候,滤掉了高频的本分,一般图形高频部分的系数是比较小的,在量化的时候可以忽略掉,因而还原的时候就是一个反傅里叶变化,就可以得到一个图形。对于那些颜色比较绚丽的图形,在压缩的时候,高频的系数已经不能忽略了,如果量化的时候压缩比过高,就可能导致明显的失真。也是8*8的系数 到 8*8的像素数据,具体怎么还原建议看一下图形压缩的基本算法。
MPEG采用了Ahmed(一个巨牛的数学家) 等人于70年代提出的离散余弦变换(DCT-Discrete Cosine Transform)压缩算法,降低视频信号的空间冗余度。

DCT将运动补偿误差或原画面信息块转换成代表不同频率分量的系数集,这有两个优点:其一,信号常将其能量的大部分集中于频率域的1个小范围内,这样一来,描述不重要的分量只需要很少的比特数;其二,频率域分解映射了人类视觉系统的处理过程,并允许后继的 量化过程满足其灵敏度的要求。

视频信号的频谱线在0-6MHz范围内,而且1幅视频图像内包含的大多数为低频频谱线,只在占图像区域比例很低的图像边缘的视频信号中才含有高频的谱线。因此,在视频信号数字处理时,可根据频谱因素分配比特数:对包含信息量大的低频谱区域分配较多的比特数,对包含信息量低的高频 谱区域分配较少的比特数,而图像质量并没有可察觉的损伤,达到码率压缩的目的。然而,这一切要在低熵(Entropy)值的情况下,才能达到有效的编码。能否对一串数据进行有效的编码,取决于每个数据出现的概率。每个数据出现的概率差别大,就表明熵值低,
可以对该串数据进行高效编码。反之,出现的概率差别小,熵值高,则不能进行高效编码。视频信号的数字化是在规定的取样频率下由A/D转换器对视频电平转换而来的,每个像素的视频信号幅度随着每层的时间而周期性地变化。每个像素的平均信息量的总和为总平均信息量,即熵值。由于每个视频电平发生几乎具有相等的概率,所以视频信号的熵值很高。 熵值是一个定义码率压缩率的参数,视频图像的压缩率依赖于视频信号的熵值,在多数情况下视频信号为高熵值,要进行高效编码,就要将高熵值变为低熵值。怎样变成低熵值呢?这就需要分析视频频谱的特点。大多数情况下,视频频谱的幅度随着频率的升高而降低。其中
低频频谱在几乎相等的概率下获得0到最高的电平。与此相对照,高频频谱通常得到的是低电平及稀少的高电平。显然,低频频谱具有较高的熵值,高频频谱具有较低的熵值。据此,可对视频的低频分量和高频分量分别处理,获得高频的压缩值。

由上面的引用可见,码率压缩基于变换编码和熵值编码两种算法。前者用于降低熵值,后者将数据变为可降低比特数的有效编码方式。在MPEG标准中,变换编码采用的是DCT,变换过程本身虽然并不产生码率压缩作用,但是变换后的频率系数却非常有利于码率压缩。实际上压缩数字视频信号的整个过程分为块取样、DCT、量化、编码4个主要过程进行-----首先在时间域将原始图像分成N(水平)×N(垂直)取样块,根据需要可选择4×4、4×8、8×8、8×16、16×16等块,这些取样的像素块代表了原图像帧各像素的灰度值,其范围在139-163之间,并依序送入DCT编码器,以便将取样块由时间域转换为频率域的DCT系数块。DCT系统的转换分别在每个取样块中进行,这些块中每个取样是数字化后的值,表示一场中对应像素的视频信号幅度值。

DCT和它解压时的反运算的具体算法如下。

当u,v = 0 时,离散余弦正变换(DCT)后的系数若为F(0,0)=1,则离散余弦反变换(IDCT)后的重现函数f(x,y)=1/8,是个常数值,所以将F(0,0)称为直流(DC)系数;当 u,v≠0时,正变换后的系数为F(u,v)=0,则反变换后的重现函数f(x,y)不是常数,此时正变换后的系数F(u,v)为交流(AC)系数。

DCT转换的一个具体应用见下面这个图: (偶们作员工培训的一张幻灯片,刚好合适 )
http://pic.zingking.com/rzhy/kean/DCTpro.jpg
看上图变换原理可察觉两点:其一,DCT后的64个DCT频率系数与DCT前的64个像素块相对应,DCT前后都是64个点,它只是1个本身没有压缩作用的无损变换过程。其二,单独1场图像的全部DCT系数块的频谱几乎都集中在最左上角的系数块中,仅从该 块的频谱中就可以形成1幅压缩图像;DCT输出的频率系数矩阵最左上角的直流(DC)系数幅度最大,图中为315,由于代表了x轴和y轴上的DC分量,所以它表示了输入矩阵全部幅度的平均值;以DC系数为出发点向下、向右的其它DCT系数,离DC分量越远 ,频率越高,幅度值越小,图中最右下角为-0.11,即图像信息的大部分集中于直流系数及其附近的低频频谱上,离DC系数越来越远的高频频谱几乎不含图像信息,甚至于只含杂波。显然,DCT本身虽然没有压缩作用,却为以后压缩时的"取"、"舍"
奠定了必不可少的基础。

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: