Matlab函数——dct2

dct2
二维离散余弦变换

语法
B=dct2(A)
B=dct2(A,m,n)
B=dct2(A,[m,n])

描述
B=dct2(A)返回A的二维离散余弦变换。矩阵B和A的大小一样,并包含离散余弦变换系数
B=dct2(A,m,n)是在变换以前用0对矩阵A进行填充,填充到m*n的大小。如果m或者n比A相应的小,dct2会将A缩短。
B=dct2(A,[m,n])同上面一样。

支持多类
A既可以是数字型的,也可以是逻辑型的,返回的矩阵B是双精度的。

算法
离散余弦变换(DCT)同离散傅里叶变换有很近的关系。它是一种分开的线性变换;就是说,这个二维变换等价于一个,单独作用于一个维度的一维DCT,并紧接着作用于另外一个维度的一维DCT。对于输入图像A和输出图像B,二维DCT的定义为,
Matlab函数——dct2_第1张图片
其中M和N分别是A的行和列。如果你把DCT作用于实数数据,结果也是实数的。DCT倾向于集中信息,从而对图像压缩有用。

例子
下面的命令计算了一张秋天的图像的离散余弦变换。注意到大部分的能量集中在了左上角。
RGB=imread('autumu.tif');
I=rgb2gray(RGB);
J=dct2(I);
imshow(log(abs(J)),[]),colormap(jet(64)),colorbar
Matlab函数——dct2_第2张图片

现在将DCT矩阵中值大小小于10的设为0,然后用逆DCT函数idct2对图像进行重建。
J(abs(J)<10)=0;
K=idct2(J);
imshow(I)
figure,imshow(K,[0,255])
Matlab函数——dct2_第3张图片
也可以参看
fft2,idtc2,ifft2

参考文献
[1] Jain, Anil K., Fundamentals of Digital Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1989, pp. 150-153.
[2] Pennebaker, William B., and Joan L. Mitchell, JPEG: Still Image Data Compression Standard, Van Nostrand Reinhold, 1993.

你可能感兴趣的:(Matlab,Function)