下面来介绍一下DCT的基本原理和其在MATLAB中的实现方法,具体如下:
离散余弦变换(DCT )是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位(DCT有8种标准类型,其中4种是常见的)。离散余弦变换的第二种类型,经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损数据压缩。这是由于离散余弦变换具有很强的"能量集中"特性:大多数的自然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分,而且当信号具有接近马尔科夫过程(Markov processes)的统计特性时,离散余弦变换的去相关性接近于K-L变换(Karhunen-Loève 变换--它具有最优的去相关性)的性能。
1、打开MATLAB,在其主界面的编辑器中写入下列代码:
clear %清除工作区间
RGB=imread('G:\MATLAB\bm.bmp'); %加载图片
GRAY=rgb2gray(RGB); %彩色转灰度图
figure,imshow(GRAY); %显示灰度图
D=dct2(GRAY); %进行dct变换
figure,imshow(log(abs(D)),[ ]); %显示变换过程
colormap(gray(4));colorbar;
D(abs(D)<0.1)=0;
I=idct2(D)/255; %设