1

使用blockproc余弦离散变换 ( DCT) 和阈值,我只需在 Matlab 中压缩图像。

我需要找到压缩比,这可能不难找到。

它应该是压缩图像中的位数/原始图像中的位数..

使用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 回答