最常用的全参考视频质量评价方法有以下2种:
PSNR(峰值信噪比):用得最多,但是其值不能很好地反映人眼主观感受。一般取值范围:20-40.值越大,视频质量越好。
SSIM(结构相似性):计算稍复杂,其值可以较好地反映人眼主观感受。一般取值范围:0-1.值越大,视频质量越好。
PSNR,SSIM计算有如下工具可选:
MSU Video Quality Measurement Tool:商业软件,图形化界面,易上手,使用有限制。
Evalvid中的psnr.exe:开源软件,命令行界面,使用无限制。推荐,适合批处理。
偶然发现了一个很好的网站。里面包含了大量主观评价算法的数据,导入到Matlab中就可以使用。
http://sse.tongji.edu.cn/linzhang/IQA/IQA.htm
注:MOS(Mean Opnion Score,平均意见分)是主观评价实验之后,得到的主观分数,取值0-100,值越大,代表主观感受越好。
以下实验数据来自Live数据库:http://live.ece.utexas.edu/research/Quality/
PSNR主观感受与客观分数之间的关系:
更新(2014.7.31)===============
拟合结果:MOS = -24.3816 *( 0.5 - 1./(1 + exp(-0.56962 * (PSNR - 27.49855)))) + 1.9663*PSNR -2.37071;
SSIM主观感受与客观分数之间的关系:
拟合结果:
MOS = 2062.3 * (1/(1 + EXP(-11.8 * (SSIM - 1.3)))+0.5) + 40.6*SSIM -1035.6
摘自:http://blog.youkuaiyun.com/leixiaohua1020/article/details/11694369
matlab练习程序(SSIM)
一种评价压缩后图像质量的方法,和PSNR类似。具体论文看这里。
代码:
function main img=imread('lena.jpg'); [m n]=size(img); imgn=imresize(img,[floor(m/8) floor(n/8)]); imgn=imresize(imgn,[m n]); img=double(img); imgn=double(imgn); tmp=[]; for i=9:8:m for j=9:8:n tmp=[tmp SSIM(img(i-8:i,j-8:j),imgn(i-8:i,j-8:j))]; end end MSSIM=mean(tmp) function re=SSIM(X,Y) %返回值在0-1之间,越大质量越好。 X=double(X); Y=double(Y); ux=mean(mean(X)); uy=mean(mean(Y)); sigma2x=mean(mean((X-ux).^2)); sigma2y=mean(mean((Y-uy).^2)); sigmaxy=mean(mean((X-ux).*(Y-uy))); k1=0.01; k2=0.03; L=255; c1=(k1*L)^2; c2=(k2*L)^2; c3=c2/2; l=(2*ux*uy+c1)/(ux*ux+uy*uy+c1); c=(2*sqrt(sigma2x)*sqrt(sigma2y)+c2)/(sigma2x+sigma2y+c2); s=(sigmaxy+c3)/(sqrt(sigma2x)*sqrt(sigma2y)+c3); re=l*c*s; end end