![数字图像处理及应用:使用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=1739545847-8YIktYNGEBRhUHBXNZjVomZmq04i9SHO-0-6af61b6dde3ac572a87355520834abab)
式中
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_17035.jpg?sign=1739545847-AiikESEIAhj8hBw0T0frqmczK5v3tDAl-0-a50ab41221a61ff29ce62e2c90c951df)
若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=1739545847-ArXwUui48ydhePWUJHMJxnpi2i3GOjG3-0-d3c6b8b5f10b9e8fc3d33e27d75fbd1b)
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15604.jpg?sign=1739545847-pKVThfjl1lvsrmr3NWxgB80BeSwyiCQ6-0-c498c701768b6a21b4abef891f614fbf)
式中,F(u)是第u个余弦变换系数;u是广义频率变量。
一维DCT逆变换定义为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15606.jpg?sign=1739545847-qxXk9zs4YrSIxv8AKpvisvKwFFwtEgol-0-243522d33c3a4157ff8b19a2cc00f64e)
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15607.jpg?sign=1739545847-hOa9BO2gswxWQBC0f7KG6ZyNUxyHceec-0-ec7f76c7be53804f48fa2615e878271d)
根据式(3-65)和式(3-66)可以看出,一维DCT正变换与逆变换的核相同。与DFT变换一样,DCT变换也可以写成如下矩阵形式:
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15609.jpg?sign=1739545847-TsTpOH3jqfjVT7YVKgyobOtKbVqO6RZr-0-6b637fa5ada5c63a6b37489ccabbedaf)
式中
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P82_15611.jpg?sign=1739545847-9f4a2eyjCRToCfXtEmxFJNpmZZSuyDW9-0-fa075d9f367618319a747ee0f9727c60)
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=1739545847-GMQFrpGXzy85GGVOEhN2buBFgWSu2Kg7-0-d714fd7239a312bfaec126282e135909)
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15616.jpg?sign=1739545847-QvcFx6IuFPfenfezAZd49nCAvaZIFbKP-0-478cbbc63e701bb2397399f041d95b21)
其中,C(u)和C(v)的定义与式(3-64)相同。
二维DCT正变换为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15618.jpg?sign=1739545847-nAJnLwWwNFMKavZr132KgPBBZ7ZuCtoF-0-941477117a264f2ea64b1393498df5ca)
二维DCT逆变换定义形式为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15620.jpg?sign=1739545847-tYq46Riz3nYVFrnn9iITkATgcR3pGO6N-0-ecb0961af3ed5a30c9b36779ba49d60f)
与一维DCT变换一样,二维DCT变换也可以写成如下矩阵形式:
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15622.jpg?sign=1739545847-1xUlLJeWkZjSpCc99A62iAxwR6aBzela-0-23e95979bbd7fd1c07954dddb4d8797e)
根据式(3-69)和式(3-70)可以看出,二维DCT正变换与逆变换的核也相同,而且是可分离的,即可分离以后进行运算。
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P83_15624.jpg?sign=1739545847-kTGDwAHqzVBDMuMcAG73524YyETUFcyP-0-94fb8aa2037d0a91b107d86669dae9ce)
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=1739545847-eJqFZhtLtUgyi5yslCQ2Xx7POxKd8Wga-0-8a30aae30aa9c825a30915bcf96db7c3)
图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=1739545847-yjylRaobr1yF9FrMnI5jfEW1PYUrqhy3-0-e914c6d1abf0941dd5b9d5b8db056405)
(2)根据一维DCT的定义,对延拓序列f1(x)进行DCT运算。
当u=0时
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P84_15629.jpg?sign=1739545847-qYFLoJZRnwT4QMJFCQqQdI6hXVmWxJGp-0-a749dffa8b50f9fb2fb147a44ce36314)
当u=1,2,3,…,N—1时,有
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P84_15631.jpg?sign=1739545847-ut0a5wJltZHI8C5wZRRxlv3zLAW2gMn2-0-6009e060db637744809d65ea381f2962)
因此,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=1739545847-aEwZOTTi7MT7a5MqQcfmaZXsD6Y5KUGJ-0-1ba1ad0b22e23ed89516ae150e6eb8a0)
(2)根据一维IDCT的定义,对延拓序列F1(u)进行IDCT运算,公式为
![](https://epubservercos.yuewen.com/ED2C5A/13467200603426206/epubprivate/OEBPS/Images/Figure-P84_15634.jpg?sign=1739545847-9k3xpwnjKFYeRaZW4M5m8DEUf5LIVt3x-0-6e29dfed86671a2c02fbc9ee54264b0f)
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=1739545847-Vq9mWiDYbM9d6QeWoeFP4rPZKHQAbBqH-0-cab16d37bee4fc8160b017d4d9cfb826)
图3-7 DCT变换的频谱分布