主要内容

dctmtx

离散余弦变换矩阵

说明

D = dctmtx(n) 返回 n×n 离散余弦变换 (DCT) 矩阵,您可以使用该矩阵对图像执行二维 DCT。

示例

示例

全部折叠

将图像读入工作区,并将其强制转换为 double 类。

A = im2double(imread('rice.png'));
imshow(A)

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

计算离散余弦变换矩阵。

D = dctmtx(size(A,1));

将输入图像 A 乘以 D 得到 A 列的 DCT,乘以 D' 得到 A 列的逆 DCT。

dct = D*A*D';
imshow(dct)

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

输入参数

全部折叠

DCT 矩阵的大小,指定为正整数。

数据类型: double

输出参量

全部折叠

DCT 矩阵,以大小为 n×n 的数值矩阵形式返回。

数据类型: double

提示

  • 如果您有一个 n×n 图像 A,则 D*AA 列的 DCT,D'*AA 列的逆 DCT。

  • A 的二维 DCT 可以计算为 D*A*D'。此计算有时比使用 dct2 更快,特别是当您计算大量小型 DCT 时,因为 D 只需确定一次。

    例如,在 JPEG 压缩中计算每个 8×8 数据块的 DCT。要执行此计算,请使用 dctmtx 确定 D,然后使用 D*A*D' 计算每个 DCT(其中 A 是每个 8×8 数据块)。这比为每个单独数据块调用 dct2 更快。

版本历史记录

在 R2006a 之前推出

另请参阅