一種基于VP8編碼的Webp圖片壓縮格式研究
[m,n]=size(x);
z=0;
for i=1:m
for j=1:n
z=z+(x(i,j)-y(i,j)).^2;
end
end
z=z/(m*n);
SSIM的MATLAB代碼如下:
% im1 Original image
% im2 Reconstructed image
% ssim Structural Similarity Index
function [mssim, ssim_map]=ssim(img1, img2, K, window, L)
img1=imread('');
img2=imread('');
if (size(img1) ~=size(img2))
ssim_index=-Inf;
ssim_map=-Inf;
return;
end
[M N]=size(img1);
if (nargin==2)
if ((M11) | (N11))
ssim_index=-Inf;
ssim_map=-Inf;
return
end
window=fspecial('gaussian', 11, 1.5);
K(1)=0.01;% default settings
K(2)=0.03;
L=255;
end
if (nargin==3)
if ((M11) | (N11))
ssim_index=-Inf;
ssim_map=-Inf;
return
end
window=fspecial('gaussian', 11, 1.5);
L=255;
if (length(K)==2)
if (K(1)0 | K(2)0)
ssim_index=-Inf;
ssim_map=-Inf;
return;
end
else
ssim_index=-Inf;
ssim_map=-Inf;
return;
end
end
測試使用圖片為800×600像素的PNG圖片,轉(zhuǎn)換成Webp(需要安裝WebpCodec才能顯示)和JPEG后顯示如圖4所示。通過MATLAB計算,測試數(shù)據(jù)對比如表1所列。
圖4 三種格式的截圖對比
表1 測試數(shù)據(jù)對比
通過分析可看出JPEG具有比Webp略好的圖像壓縮質(zhì)量,但是Webp在畫質(zhì)上的損失換來了壓縮率的極大提升。通過高壓縮的FFmpeg編碼,雖然獲得了極高的壓縮比,但圖像質(zhì)量損失嚴重。
3.2 驗證圖片格式轉(zhuǎn)換后壓縮率和壓縮質(zhì)量
FFmpeg是一個開源免費跨平臺的視頻和音頻流及圖片編碼方案,它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec。Libwebp是Google公司編寫的轉(zhuǎn)換其他格式圖片為Webp格式的編解碼器。測試用圖片為800×600像素的PNG圖片,利用FFmpeg和Libwebp轉(zhuǎn)換工具在DOS環(huán)境下輸入如下格式轉(zhuǎn)換命令:
ffmpeg i myfile.png psnr target out.jpg
cwebp.exe tool to encode an image file (e.g. JPEG or PNG) into WebP
可以將測試用PNG圖片轉(zhuǎn)換成JPEG和Webp格式,經(jīng)驗證轉(zhuǎn)換工具的測試結(jié)果與編程測試結(jié)果基本相同。
結(jié)語
通過研究發(fā)現(xiàn)Webp格式圖片的壓縮質(zhì)量略低于JPEG格式圖片,可能是由于沒有成熟的編解碼器的原因。但是在損失了畫質(zhì)的基礎(chǔ)上,Webp格式圖片的壓縮率大為提升,優(yōu)于JPEG格式。經(jīng)過測試分析表明,人眼基本無法分辨出Webp格式畫質(zhì)損失,故而在帶寬需求極為緊張的時代,Webp格式具有很好的發(fā)展前景。
評論