ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

dct2

2 次元離散コサイン変換

構文

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

説明

B = dct2(A)A の 2 次元離散コサイン変換を返します。行列 BA と同じサイズであり、離散コサイン変換係数 B(k1,k2) を含みます。

B = dct2(A,m,n) は変換前の行列 A をゼロ パディングし、サイズを mn 列にします。m または nA の対応する次元より小さい場合、dct2A を切り詰めます。

B = dct2(A,[m n]) は上記と同じです。

クラス サポート

A は数値または論理値になります。返される行列 B のクラスは double です。

すべて折りたたむ

この例では、2 次元離散コサイン変換 (DCT) を使用して高周波数をイメージから除去する方法を説明します。

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

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

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

J = dct2(I);

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

figure
imshow(log(abs(J)),[])
colormap(gca,jet(64))
colorbar

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

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

逆 DCT 関数 idct2 を使用してイメージを復元します。

K = idct2(J);

元のグレースケール イメージを処理されたイメージと並べて表示します。

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

アルゴリズム

離散コサイン変換 (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 は情報を凝縮する傾向があるので、イメージ圧縮アプリに適しています。

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 より前に導入

この情報は役に立ちましたか?