使用Matlab的压缩比(图像)



使用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 找到压缩比?

首先,您需要定义压缩比

让我们同意压缩是原始图像中的位数除以压缩图像中的位数。由于所有值(DCT 系数)都由相同的固定位数表示,因此您可以通过计算系数数而不是位数来推断压缩率。

在原始图像中,系数的数量是numel(J)的,而在压缩图像中是numel(seuil)的。因此,此图像的压缩比为:

compression_ratio = numel(J) / numel(seuil)

例如,假设您的图像尺寸为 640×480,并且seuil包含低于阈值的 100000 个值索引。因此,您的压缩比是640*480 / 100000 = 3.072

最新更新