文章目录

  • 前言
  • 一、DCT是什么?
  • 二、matlab实现dct2
  • 总结


前言

图像的离散余弦变换:
离散余弦变换是以一组不同频率和幅值的余弦函数和来近似一幅图像,实际上是傅里叶变换的实数部分。


一、DCT是什么?

DCT又称离散余弦变换,是一种块变换方式,只使用余弦函数来表达信号,与傅里叶变换紧密相关。常用于图像数据的压缩,通过将图像分成大小相等(一般为8*8)的块,利用DCT对其进行变换,得到更加简洁的数据。因为图像像素间存在较大的空间相关性,DCT可以大大减小这些相关性,使图像能量集中在左上角区域,从而利于数据压缩。变换后得到的数据称为DCT系数。这一过程是无损的。

二、matlab实现dct2

函数 描述
Imread() 用于读取图片文件中的数据
figure() 控制画图的窗口
imshow() 显示图像
dct2() DCT变换
idct2() DCT逆变换
subplot() 将当前窗口分割成多个子窗口

imA = imread('E:\matlab DMP\lenaG.bmp');  
dctgrayImage=dct2(imA);
figure();
subplot(2,2,1), imshow(imA,[]),title('原图');
subplot(2,2,2), imshow(log(dctgrayImage),[]),title('DCT变换灰度图像');
subplot(2,2,3), imshow(idct2(dctgrayImage),[]),title('IDC反变换图');


总结

DCT适合处理细节丰富的图像实验,DCT变化后的数据仍然比较集中(变换后DCT系数能量主要集中在左上角,其余大部分系数接近于零)。如果同样从频率谱恢复原始图像,那么选用DCT更合理,因为DCT只需要存储更少的数据点。正是这个原因,是的DCT广泛地应用于图像压缩。将变换后的DCT系数进行门限操作,将小于一定值得系数归零,这就是图像压缩中的量化过程,然后进行逆DCT运算,得到压缩后的图像。