2012-12-07 165 views
1

使用blockproc和Cosinus離散變換(DCT)和閾值,我只是在Matlab中壓縮圖像。使用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

首先,你需要定義壓縮比

我們同意壓縮比是原始圖像中的位數量除以壓縮圖像中的位數量。由於所有值(DCT係數)都由相同的固定位數表示,因此可以通過計算係數數而不是位來推斷壓縮比。

在原始圖像中,係數的數量是numel(J),而在壓縮圖像中是numel(seuil)。因此此圖像的壓縮比是:

compression_ratio = numel(J)/numel(seuil) 

例如,讓我們假設圖像尺寸爲640×480,並且seuil包含低於閾值的100000個索引。因此,你的壓縮比是640*480/100000 = 3.072

+0

我的圖像尺寸是206 x 345和numel(seuil)= 61915。所以我的壓縮比是206 * 345/61915 = 1.148? –

+0

@ Pier-AlexandreBouchard顯然。不是很好的壓縮,呃? –

+1

有更大的門檻,我想這會是一個更好的壓縮比!謝謝! –