Main Content

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

idct2

2 次元逆離散コサイン変換

説明

B = idct2(A) は、A の 2 次元逆離散コサイン変換 (DCT) を返します。

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

B = idct2(A,[m n]) は逆変換を適用する前に A0 でパディングし、サイズを mn 列にします。m または nA の対応する次元より小さい場合、idct2 は変換前に A をトリミングします。

すべて折りたたむ

この例では、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)');

入力引数

すべて折りたたむ

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

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

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

出力引数

すべて折りたたむ

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

データ型: double

ヒント

  • 任意の行列 A に対して、idct2(dct2(A)) は、丸め誤差の範囲内で A と等価です。

アルゴリズム

idct2 は、以下を使用して 2 次元逆 DCT を計算します。

Amn=p=0M1q=0N1αpαqBpqcosπ(2m+1)p2Mcosπ(2n+1)q2N, 0mM10nN1,

ここで、

αp={1M, p=0             2M, 1pM1

および

αq={1N, q=0            2N, 1qN1.

参照

[1] Jain, A. K., Fundamentals of Digital Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1989, pp. 150-153.

[2] Pennebaker, W. B., and J. L. Mitchell, JPEG: Still Image Data Compression Standard, New York, Van Nostrand Reinhold, 1993.

参考

| | |

R2006a より前に導入