一种基于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图片,转换成Webp(需要安装WebpCodec才能显示)和JPEG后显示如图4所示。通过MATLAB计算,测试数据对比如表1所列。

图4 三种格式的截图对比
表1 测试数据对比

通过分析可看出JPEG具有比Webp略好的图像压缩质量,但是Webp在画质上的损失换来了压缩率的极大提升。通过高压缩的FFmpeg编码,虽然获得了极高的压缩比,但图像质量损失严重。
FFmpeg是一个开源免费跨平台的视频和音频流及图片编码方案,它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec。Libwebp是Google公司编写的转换其他格式图片为Webp格式的编解码器。测试用图片为800×600像素的PNG图片,利用FFmpeg和Libwebp转换工具在DOS环境下输入如下格式转换命令:
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格式,经验证转换工具的测试结果与编程测试结果基本相同。
结语
通过研究发现Webp格式图片的压缩质量略低于JPEG格式图片,可能是由于没有成熟的编解码器的原因。但是在损失了画质的基础上,Webp格式图片的压缩率大为提升,优于JPEG格式。经过测试分析表明,人眼基本无法分辨出Webp格式画质损失,故而在带宽需求极为紧张的时代,Webp格式具有很好的发展前景。
评论