![数字图像处理及应用:使用MATLAB分析与实现](https://wfqqreader-1252317822.image.myqcloud.com/cover/293/25111293/b_25111293.jpg)
3.2 离散余弦变换
DFT变换是频谱分析的有力工具,但DFT变换是基于复数域的运算,因而给实际运算带来了不便。因此,工程上特别需要各种在实数域内的变换,DCT变换就是其中一种。DCT变换除了具有一般正交变换的性质之外,还具有许多突出的优点。DCT变换阵的基向量很近似于Toeplitz矩阵的特征向量,很好地体现了人类语音信号及图像信号的相关特性。因此,许多学者认为,在语音和图像信号处理方面,DCT变换被认为是准最佳变换。而且,DCT变换还可以通过实偶函数的傅里叶变换建立与FFT变换之间的关系。
DCT变换由Ahmed和Rao于1974年首先提出,随后就得到了广泛的应用,在许多领域,DCT变换被认为是一种准最佳变换。在近年颁布的一系列视频压缩编码的国际标准建议中,都将DCT变换作为其中的一个基本处理模块。DCT变换除上述优点之外,还具有许多特点,如DCT为实数变换、变换矩阵确定(与变换对象无关)、具有多种快速算法,二维DCT还是一种可分离的变换等。
3.2.1 一维DCT变换
一维DCT的变换核定义为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15600.jpg?sign=1739275896-MnPP5x5xFp6mlXXTCBsLonZU7u7uHt8a-0-8117282cc36dfd689d7bfcbb49363e61)
式中
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_17035.jpg?sign=1739275896-o4zYRXdIH2h1o9IEaIM1oN09tCYc2aFm-0-f45a1786fd58d022a55ef60affa75f39)
若f(x)(x=0,1,2,3,…,N—1)为N点离散序列,则一维DCT变换的定义为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15603.jpg?sign=1739275896-ZmrOEdKmPfmkWlQizjbnBAlDGOi30nso-0-4686c6d39e89d1403c1f1c75e06cb771)
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15604.jpg?sign=1739275896-cp4DfYSiqV1pbhnW5IOo2Ppx7dSdbnUS-0-49867ba5928720089759cc974de43b6a)
式中,F(u)是第u个余弦变换系数;u是广义频率变量。
一维DCT逆变换定义为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15606.jpg?sign=1739275896-2lAim1YxQ0ewMElk1LokFo0DXMAI2imA-0-996a71ddb32ba9f0b92c3b904e679d40)
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15607.jpg?sign=1739275896-99Ehh6dC386w0tOz0JIqK7lINcNQYv95-0-87bcd2ee928712fb8d2ef899e1b2fdef)
根据式(3-65)和式(3-66)可以看出,一维DCT正变换与逆变换的核相同。与DFT变换一样,DCT变换也可以写成如下矩阵形式:
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15609.jpg?sign=1739275896-pGA5npSLqwdKnCea50lNAkzbkfiSP6ns-0-c09ca3f9adb254948d4aaf9fe9cdf4f3)
式中
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15611.jpg?sign=1739275896-mCxMvKMGEeUk3xTHJbWt1OzEBtnfDocL-0-1c9a0ff3c40713cbb21b1ba51e42d964)
3.2.2 二维DCT变换
一维DCT变换可以很方便地推广到二维DCT变换,设二维离散图像序列为{f(x,y)(x=0,1,…,M—1;y=0,1,…,N—1)},则二维DCT正变换核为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15613.jpg?sign=1739275896-rSWYLItsgwfNGb6QL2hFkiLbJsXduyye-0-3a98ac4c912142bf85e6e24680027590)
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15616.jpg?sign=1739275896-DtBezWuSKmmguW4QY5zJ06fYVzCAz6F6-0-c777d46b58adf34100942c469c7463c7)
其中,C(u)和C(v)的定义与式(3-64)相同。
二维DCT正变换为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15618.jpg?sign=1739275896-ASEPbmBvh7aZTEnVaRGWCblUrvQBrnJq-0-787b6abc4cde28f166109743314985c4)
二维DCT逆变换定义形式为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15620.jpg?sign=1739275896-uIBf1g2KdDCnLW7TcOLFdymQLQ7pqOTM-0-46800b2a2c70d2d52aeed502def31ddf)
与一维DCT变换一样,二维DCT变换也可以写成如下矩阵形式:
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15622.jpg?sign=1739275896-ankHyGhJ03gGea07TP7PaW5efcwbwWhF-0-c2924247786060f5bb8601a82bfd1237)
根据式(3-69)和式(3-70)可以看出,二维DCT正变换与逆变换的核也相同,而且是可分离的,即可分离以后进行运算。
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15624.jpg?sign=1739275896-mQoylB8ksmjJTA3NkReL0k32XZEqfokF-0-450d46f5b76a4bc989d3b87853223d7e)
x,u=0,1,2,3,…,M—1;y,v=0,1,2,3,…,N—1
与DFT变换类似,根据可分离性原理,一次二维DCT变换可以通过二次一维DCT正变换完成。其算法流程如图3-6所示。
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_4509.jpg?sign=1739275896-OWircRolSeJPjW8UbfeSaebHBUK1ALU2-0-37462bcdb38757c0e93fc76424c27c69)
图3-6 DCT变换的分离运算流程
3.2.3 DCT变换的快速算法
DCT变换根据定义也可以直接进行计算,但计算量非常大,在实际应用中很不方便。目前,基于DCT的快速算法有许多种,由于FFT算法是一个应用广泛且非常成熟的快速算法,因此许多DCT算法也是基于FFT的原理建立起来的。具体步骤如下:
(1)将离散序列f(x)延拓为如下形式的2N点序列。
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15625.jpg?sign=1739275896-6hGbLtjtHalt0mDCoicITMOPmkzQSZ09-0-f766bdf7460cbae26ed828665c86d1b6)
(2)根据一维DCT的定义,对延拓序列f1(x)进行DCT运算。
当u=0时
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P84_15629.jpg?sign=1739275896-XSGcc1yDjZ7U4oPk1gv2fS8PuNE72X3T-0-85da557c98647790d73e959d6efa62a7)
当u=1,2,3,…,N—1时,有
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P84_15631.jpg?sign=1739275896-lrE4S9qhgXARuOuDlA6tE8TFocsw1ji6-0-32eb2b349daa9e188007fd8100c850e2)
因此,DCT快速算法可以通过对延拓序列f1(x)进行FFT运算完成,即将N点的序列f(x)延拓为2N点的序列f1(x)后,对序列f1(x)进行FFT运算,再将结果乘以并取其实部,然后乘以
就是DCT运算的结果。
对于DCT逆变换(又称为IDCT),也可以采取类似的方法进行快速运算。
(1)将离散序列F(u)延拓为如下形式的2N点序列。
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P84_15632.jpg?sign=1739275896-J24bCTBIWvZyMdUTjUWlGeJRZi7jA0O1-0-f9c207c8bae2e5cf5685972891db6ab8)
(2)根据一维IDCT的定义,对延拓序列F1(u)进行IDCT运算,公式为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P84_15634.jpg?sign=1739275896-ZziJi5CoJrC1x8EyHtYJlzoeWS6oeCU8-0-715f17fc418e9f715012cae86e63118c)
3.2.4 二维DCT的频谱分布
以图像傅里叶变换为基础,二维DCT的频谱特性比较好理解,现以一个DCT变换实例来分析其频谱分布。
例3-4:DCT变换实例
图3-7(a)为原始图像,图3-7(c)为原始图像旋转45°角的图像,图3-7(b)和图3-7(d)分别为图3-7(a)和图3-7(c)的DCT变换。对于DCT,频率(0,0)点对应于频谱原点(u=0,v=0),低频在左上角,高频在右下角,(M—1,N—1)点对应于高频成分;DCT低频系数值较大,高频系数值较小,即能量主要集中在低频,从左上角往右下角频率升高、能量降低。根据DCT变换原理,其运算相当于对带有中心偏移的实偶函数进行二维DFT运算,因此,DCT的频谱分布与DFT相差一倍。
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P85_4669.jpg?sign=1739275896-W7n6UOujcyoKUKuBwYVY455XahQywVYT-0-2087f673076971c0100e46118d58ed1b)
图3-7 DCT变换的频谱分布