引言
隨著消費者需求與多媒體娛樂的大幅提升,上一代互聯(lián)網標準與視頻解決方案已經無法滿足高速增長的高清視頻傳輸要求,在此背景下,面向未來需求的下一代互聯(lián)網解決方案——HTML 5網絡開發(fā)標準與WebM VP8視頻壓縮格式應運而生。VP8編碼擁有極高的壓縮比和壓縮質量,而基于VP8編碼的新型圖片壓縮格式Webp也比JPEG圖片具有更高的壓縮率。
1 PSNR和SSIM圖像質量測試標準
1.1 峰值信噪比
PSNR(Peak Signal to Noise Ratio,峰值信噪比)是一個表示信號最大功率和對其產生影響的噪聲功率之間比值的術語,常用對數(shù)分貝來表示。PSNR常用作圖像壓縮領域中信號重建測量,它通過均方差(Mean Square Error,MSE)進行定義。兩個M×N單色圖像I和K,如果噪聲近似,那么它們的MSE定義為:
峰值信噪比定義為:
其中amax=2k-1,k常取8。PSNR和MSE都基于像素灰度值進行統(tǒng)計和平均計算,忽視了圖像對人眼的影響,故而不能完整反映出圖像質量。
1.2 結構相似度
圖像的像素之間是相關的,這種相關性蘊含著圖像的結構信息。SSIM(Structural Similarity Index,結構相似度)是一種衡量兩幅圖像相似度的指標。將原圖像塊x和失真圖像塊y的失真SSIM建模為亮度l(x,y)、對比度c(x,y)和結構信息s(x,y)三分量的組合:
SSIM(x,y)=l(x,y)·c(x,y)·s(x,y)(3)
亮度、對比度和結構信息是與x和y的均值μx、μy,標準差σx、σy或協(xié)方差σxy有關的量,表達式分別為:
C1、C2和C3是為了避免分母為零而添加的小常數(shù)[1]。用SSIM評判圖像質量時,先把圖像分成重疊或者不重疊的大小相等的子塊(一般為8×8大小),然后用式(3)計算每一個子塊的SSIM值,再用所有子塊SSIM值的平均值作為整幅圖像質量的度量。SSIM值越高,表明失真圖像和原圖像相似度越高,失真圖像的質量越高。
2 VP8編碼和X.264編碼圖像的PSNR和SSIM對比
Google收購On2科技公司并隨后開放了其擁有的VP8編碼技術的源代碼。VP8采用的新技術有:基于虛擬參考幀的高級預計編碼、基于宏塊級的多線程技術、改進的局域參考編碼、增加復雜度的先進上下文熵編碼、稀疏目標區(qū)域的自適應回路濾波等,從而能以更少的數(shù)據(jù)提供更高質量的視頻。
Google稱VP8能夠在相同碼率下提供比當今流行的X.264更好的畫質,或是在相同畫質下使用更少的帶寬。而X.264編碼則是現(xiàn)在最為流行的編碼技術,屬于MPEG高清編碼部分,是一種高度壓縮的數(shù)字視頻編解碼器標準?,F(xiàn)在兩種編碼都獲得了大量廠商的支持。
利用有代表性的視頻場景來測試兩種不同的編碼技術在視頻壓縮和還原質量上的性能。
圖1 不同景深場景的測試視頻
圖2 測試視頻的PSNR數(shù)據(jù)
不同景深場景的測試視頻如圖1所示。測試視頻分別用Handbrake以X.264編碼和FFmpeg 0.6以VP8形式編碼。而后利用MSU MQVT軟件測試場景的PSNR和SSIM。
測試視頻的PSNR數(shù)據(jù)和測試視頻的SSIM數(shù)據(jù)如圖2、圖3所示。
通過軟件測試對比分析看出,VP8編碼的視頻質量與X.264差別不大,某些場景高質量編碼的X.264圖像要略優(yōu)于VP8編碼,但VP8編碼的視頻大小要略小于X?264。VP8編碼剛剛開源,還沒有很成熟的編解碼器,無法和多年發(fā)展的X.264編碼器相比,不過上述測試結果表明VP8編碼有很大的發(fā)展空間。
3 新型Webp格式圖像和JPEG圖像對比
Webp是Google為了滿足現(xiàn)在越來越高的帶寬需求,在基于VP8編碼的基礎上提出的一種新型圖片格式。Webp利用預測編碼技術,通過部分像素塊的顏色來預測其鄰近塊的顏色值,并只記錄兩者的差值,因為多數(shù)情況下兩者差距很小,甚至零差距,因而大大提高了壓縮的比率。Google想打造出一種文件體積小而畫質和JPEG一樣的圖像格式,在保證畫質的前提下提高網頁圖像瀏覽的速度。
圖3 測試視頻的SSIM數(shù)據(jù)
Webp采用的新技術有:
◆ Fancy的提升采樣算法,可有效降低圖片內色彩邊緣的像素;
◆ 同一張圖片里的不同區(qū)域進行不同形式的壓縮,在圖片質量和圖片大小上實現(xiàn)最佳平衡;
◆ 預測編碼技術,通過部分像素塊的顏色來預測其鄰近塊的顏色值,并只記錄兩者的差值,提高壓縮比。
3.1 測試圖片用PSNR和SSIM的MATLAB程序實現(xiàn)
為了對比分析Webp和JPEG在圖片壓縮和還原質量上的強弱,編寫了計算PSNR和SSIM的MATLAB程序。
PSNR的MATLAB代碼如下:
% in1 ? Original image
% in2 ? reconstructed image
% mse ? Mean Square Error
% psnr ? Peak Signal to Noise Ratio
function result=psnr(in1,in2)
in1=imread(‘Original image‘);
in2=imread(‘reconstructed image‘);
%in1=rgb2gray(in1);
%in2=rgb2gray(in2);
z=mse(in1,in2);
result=10*log10(255.^2/z);
function z=mse(x,y)
x=double(x);
y=double(y);[!--empirenews.page--]
[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 ((M<11) | (N<11))
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 ((M<11) | (N<11))
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圖片,轉換成Webp(需要安裝WebpCodec才能顯示)和JPEG后顯示如圖4所示。通過MATLAB計算,測試數(shù)據(jù)對比如表1所列。
圖4 三種格式的截圖對比
表1 測試數(shù)據(jù)對比
通過分析可看出JPEG具有比Webp略好的圖像壓縮質量,但是Webp在畫質上的損失換來了壓縮率的極大提升。通過高壓縮的FFmpeg編碼,雖然獲得了極高的壓縮比,但圖像質量損失嚴重。
3.2 驗證圖片格式轉換后壓縮率和壓縮質量
FFmpeg是一個開源免費跨平臺的視頻和音頻流及圖片編碼方案,它提供了錄制、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec。Libwebp是Google公司編寫的轉換其他格式圖片為Webp格式的編解碼器。測試用圖片為800×600像素的PNG圖片,利用FFmpeg和Libwebp轉換工具在DOS環(huá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圖片轉換成JPEG和Webp格式,經驗證轉換工具的測試結果與編程測試結果基本相同。
結語
通過研究發(fā)現(xiàn)Webp格式圖片的壓縮質量略低于JPEG格式圖片,可能是由于沒有成熟的編解碼器的原因。但是在損失了畫質的基礎上,Webp格式圖片的壓縮率大為提升,優(yōu)于JPEG格式。經過測試分析表明,人眼基本無法分辨出Webp格式畫質損失,故而在帶寬需求極為緊張的時代,Webp格式具有很好的發(fā)展前景。