主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

dct2

R2026a

二维离散余弦变换

描述

B = dct2(A) 返回 A 的二维离散余弦变换。矩阵 B 包含离散余弦变换系数 B(k1,k2)。

示例

B = dct2(A,m,n) 和

B = dct2(A,[m n]) 在应用变换之前,对矩阵 A 进行零填充或裁剪,使其大小为 m×n。

示例

全部折叠

将图像读入工作区,然后将图像转换为灰度图像。

RGB = imread('autumn.tif');
I = im2gray(RGB);

使用 dct2 函数对灰度图像执行二维 DCT。

J = dct2(I);

使用对数刻度显示变换后的图像。请注意,大部分能量在左上角。

imshow(log(abs(J)),[])
colormap parula
colorbar

Figure contains an axes object. The hidden axes object contains an object of type image.

将 DCT 矩阵中模小于 10 的值设置为零。

J(abs(J) < 10) = 0;

使用逆 DCT 函数 idct2 重新构造图像。将值重新缩放至数据类型为 double 的图像的预期范围 [0, 1]。

K = idct2(J);
K = rescale(K);

并排显示原始灰度图像和处理后的图像。处理后的图像具有较少的高频细节,例如树的纹理。

montage({I,K})
title('Original Grayscale Image (Left) and Processed Image (Right)');

Figure contains an axes object. The hidden axes object with title Original Grayscale Image (Left) and Processed Image (Right) contains an object of type image.

输入参数

全部折叠

输入矩阵,指定为二维数值矩阵。

图像行数,指定为正整数。dct2 用 0 填充图像 A,或截断图像 A 使其具有 m 行。默认情况下,m 等于 size(A,1)。

图像列数,指定为正整数。dct2 用 0 填充图像 A,或截断图像 A 使其具有 n 列。默认情况下,n 等于 size(A,2)

输出参量

全部折叠

使用二维离散余弦变换进行变换后的矩阵,以 m×n 数值矩阵形式返回。

数据类型: double

详细信息

全部折叠

提示

  • 如果将 DCT 应用于实数数据,结果也是实数。DCT 倾向于集中信息,这在图像压缩应用中很有用。

  • 要进行 DCT 逆变换,请使用 idct2。

参考

[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.

扩展功能

全部展开

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

| |