1

blockprocCosinus 離散変換 ( ) としきい値を使用して、DCTMatlab で画像を圧縮するだけです。

圧縮率を見つける必要がありますが、おそらく見つけるのは難しくありません。

圧縮された画像のビット数/元の画像のビット数である必要があります。

を使用BitDepthすると、有効な圧縮率を取得できません..

f1 = @(block_struct) dct2(block_struct.data);
f2 = @(block_struct) idct2(block_struct.data);

I=imread('autumn.tif','tiff');
Im=rgb2gray(I);

J = blockproc(Im, [8 8], f1);
seuil = find(abs(J) < 15);
J(seuil) = zeros(size(seuil));
K = blockproc(J, [8 8], f2) / 255;
subplot(2,2,2)
imshow(K);

Matlabを使用して圧縮率を見つけるにはどうすればよいですか?

4

1 に答える 1

1

まず、圧縮率を定義する必要があります。

圧縮率は、元の画像のビット数を圧縮画像のビット数で割ったものであることに同意しましょう。すべての値 (DCT 係数) は同じ固定量のビットで表されるため、ビットではなく係数の数を数えることで圧縮率を推測できます。

元のイメージでは係数の数はnumel(J)ですnumel(seuil)が、圧縮されたイメージではそうです。したがって、この画像の圧縮率は次のようになります。

compression_ratio = numel(J) / numel(seuil)

たとえば、画像のサイズが 640×480 でseuil、しきい値を下回る値のインデックスが 100000 個含まれているとします。したがって、圧縮率は640*480 / 100000 = 3.072

于 2012-12-07T21:39:12.110 に答える