Main Content

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

dct2

2 次元離散コサイン変換

説明

B = dct2(A)A の 2 次元離散コサイン変換を返します。行列 B は、離散コサイン変換係数 B(k1,k2) を含みます。

B = dct2(A,m,n) および

B = dct2(A,[m n]) は変換を適用する前に行列 A をゼロ パディングまたはトリミングし、サイズを mn 列にします。

すべて折りたたむ

イメージをワークスペースに読み取った後、グレースケールに変換します。

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

関数 dct2 を使用して、グレースケール イメージの 2 次元 DCT を実行します。

J = dct2(I);

対数スケールを使用して、変換後のイメージを表示します。大半のエネルギーが左上隅にあることに注目してください。

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

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

DCT 行列内で大きさが 10 未満の値を 0 に設定します。

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 axes object with title Original Grayscale Image (Left) and Processed Image (Right) contains an object of type image.

入力引数

すべて折りたたむ

入力行列。2 次元数値行列として指定します。

イメージの行数。正の整数として指定します。dct2 はイメージ A0 でパディング、またはイメージ Am 行になるように切り捨てます。既定では、msize(A,1) と等価です。

イメージの列数。正の整数として指定します。dct2 はイメージ A0 でパディング、またはイメージ An 列になるように切り捨てます。既定では、nsize(A,2) と等価です。

出力引数

すべて折りたたむ

2 次元離散コサイン変換を使用して変換された行列。mn 列の数値行列として返されます。

データ型: double

詳細

すべて折りたたむ

離散コサイン変換

離散コサイン変換 (DCT) は離散フーリエ変換と密接に関連しています。DCT は分離可能な線形変換の 1 つです。つまり、2 次元変換は、ある次元に沿って 1 次元 DCT を実行した後で、もう 1 つの次元で 1 次元 DCT を実行することに相当します。入力イメージ A と出力イメージ B に関する 2 次元 DCT の定義は次のようになります。

Bpq=αpαqm=0M1n=0N1Amncosπ(2m+1)p2Mcosπ(2n+1)q2N, 0pM10qN1

ここで、

αp={1M, p=0           2M, 1pM-1

αq={1N, q=0          2N, 1qN-1

MN はそれぞれ A の行サイズと列サイズです。

ヒント

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

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する

参考

| |