Main Content

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

idct2

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

説明

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

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

B = idct2(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

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)');

入力引数

すべて折りたたむ

入力行列。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 より前に導入

すべて展開する

参考

| | |