实验四 离散余弦变换(DCT)
1. 实验原理
DCT 是目前比较好的图像变换,它有很多优点。DCT 是正交变换,它可以
将 8x8 图像空间表达式转换为频率域,只需要用少量的数据点表示图像;DCT
产生的系数很容易被量化,因此能获得好的块压缩;DCT 算法的性能很好,它
有快速算法,如采用快速傅立叶变换可以进行高效的运算,因此它在硬件和软件
中都容易实现;而且 DCT 算法是对称的,所以利用逆 DCT 算法可以用来解压缩
图像。
由于 DCT 主要应用在数据和图像的压缩,因此希望原信号的能量在变换后
能尽量集中在少数系数上,且这些大能量的系数能处在相对集中的位置,这将有
利于进一步的量化和编码。但是如果对整段的数据或整幅图像来做 DCT,那就
很难保证大能量的系数能处在相对集中的位置。因此,在实际应用中,一般都是
将数据分成一段一段来做,一般分成 8x8 或 16x16 的方块来做。
二维 DCT 正交变换的公式为:
二维 DCT 逆变换公式:
其中
2. 实验要求
利用 DCT 变换对灰度图像进行压缩,求出压缩比;对比不同压缩比的图像。
3. 实验结果
matlab 程序如下所示:
I=imread('lena.tif')
I=im2double(I) %转换图像矩阵为双精度型。
T=dctmtx(8) %产生二维DCT变换矩阵
%计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数
B=blkproc(I,[8,8],'P1*x*P2',T,T') %二值掩模,用来压缩DCT系数,只留下DCT系数
中左上角的10个
mask=[1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0