使用Matlab进行压缩比(图像)

时间:2012-12-07 18:12:19

标签: matlab compression

使用blockproc和Cosinus离散变换(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找到压缩率?

1 个答案:

答案 0 :(得分:1)

首先,您需要定义压缩率

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

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

compression_ratio = numel(J) / numel(seuil)

例如,假设您的图片尺寸为640×480,seuil包含100000个低于阈值的指数。因此,您的压缩率为640*480 / 100000 = 3.072