Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

dctmtx

離散コサイン変換行列

説明

D = dctmtx(n)nn 列の離散コサイン変換 (DCT) 行列を返します。これは 2 次元 DCT をイメージに実行するために使用できます。

すべて折りたたむ

イメージをワークスペースに読み取って double クラスにキャストします。

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

Figure contains an axes object. The 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 axes object contains an object of type image.

入力引数

すべて折りたたむ

DCT 行列のサイズ。正の整数として指定します。

データ型: double

出力引数

すべて折りたたむ

DCT 行列。nn 列の数値行列として返されます。

データ型: double

ヒント

  • nn 列のイメージ A である場合、D*AA の列の DCT で、D'*AA の列の逆 DCT です。

  • A の 2 次元の DCT は、D*A*D' として計算できます。この計算は、dct2 を使うより高速になる場合があります。特に、小さい DCT を何度も計算する場合は、D を 1 回だけ決定すれば済むので高速になります。

    たとえば、JPEG 圧縮では、8 行 8 列の各ブロックの DCT が計算されます。この計算を実行するには、dctmtx を使用して D を決定してから、D*A*D' を使用して各 DCT を計算します (ここで、A は 8 行 8 列の各ブロックです)。これは、ブロックごとに dct2 を呼び出すよりも高速です。

バージョン履歴

R2006a より前に導入

参考