视频质量分析评测(计算PSNR和SSIM)

视频质量分析评测(计算PSNR和SSIM)

一、YUV(亦称YCrCb)是三个分量,Y是亮度信息,U,V是色度信号。如果只有Y,那么电视播放出来的是黑白,Y加上U,V后就是彩色电视。

这样解决黑白电视也能播放彩色电视的信号的问题。
YUV 4:2:0采样,即每4个Y公用一组UV分量。如下图:
视频质量分析评测(计算PSNR和SSIM)_第1张图片
因为一个Y分量对应一个像素点,所以若该图片的宽为width, 高为height,那么Y就等于(width * height),同理U就等于(Y / 4), V也等于(Y / 4)
那么这个YUV图片在内存中的长度就为:Y + Y/4 + Y/4 = (Y * 3) / 2 = (width * height) / 2

二、计算工具

1)MSU Quality Measurement Tool
http://www.compression.ru/video/quality_measure/
2)EvalVid
http://www2.tkn.tu-berlin.de/research/evalvid/fw.html

三、这里主要讲述采用Evalvid计算视频PSNR和SSIM

概念:
Evalvid中的PSNR工具用于计算原始序列与受损序列之间的PSNR或者SSIM
命令格式:
视频质量分析评测(计算PSNR和SSIM)_第2张图片
使用示例(YUV格式:宽高为480x272,采样格式YUV420P,受损视频为1.yuv,原始视频2.yuv):
计算PSNR:
psnr 480 272 420 1.yuv 2.yuv > ref_psnr.txt
计算SSIM:
psnr 480 272 420 1.yuv 2.yuv ssim > ref_ssim.txt

四、计算步骤:

##1、使用ffmpeg下载线上视频(这里当作原始数据)
在这里插入图片描述
##2、将1.flv做转码或者相应处理(这里当作失真数据)
在这里插入图片描述
##3、分别将1.flv和2.flv转化为YUV数据格式
命令:ffmpge -vsync 0 -i 1.mp4 -c:v rawvideo -pix_fmt yun420p 1.yuv
注意加vsync 0是保证帧数不变。
在这里插入图片描述
在这里插入图片描述
##4、生成PSNR
在这里插入图片描述
这样就在当前运行目录下生成了ref_psnr.txt文件,将文件在excel中打开,然后生成对应的波形图就能客观分析视频质量了。
##5、生成SSIM
在这里插入图片描述
这样就在当前运行目录下生成了ref_ssim.txt文件,将文件在excel中打开,然后生成对应的折线图就能客观分析视频质量了。
##6、PSNR结果:
1)生成的ref_psnr.txt文件在excel中打开如下(截图不全):
视频质量分析评测(计算PSNR和SSIM)_第3张图片
2)生成折线图:
视频质量分析评测(计算PSNR和SSIM)_第4张图片
PSNR单位为DB,值越大,就代表失真越少;不过有实验表明PSNR结果并不能和人眼主观感受的结果一样有可能PSNR值高的实际看起来较差,那是由于PSNR只是简单的对于数据逐个字节对比,不会考虑这些数据呈现的结果,所以有时候并不准确,只是可以用来作为一个数据上的参考;
##7、SSIM结果:
1)生成的ref_ssim.txt文件在excel中打开如下(截图数据不全):
视频质量分析评测(计算PSNR和SSIM)_第5张图片
2)生成折线图
视频质量分析评测(计算PSNR和SSIM)_第6张图片
SSIM这个指标就要牛一点了,这是一种基于结构相似度的评价方式,SSIM将亮度和对比度从图像的结构信息中分离出来后与结构信息结合得到评估,不以单纯的指标得到结果,而是得到3个不同因素(结构、亮度、对比度)的组合结果;
SSIM的值是0到1之间的小数,数值越高说明画面的质量越好。

好了,这就是通过使用Evalvid工具计算视频PSNR和SSIM值的方法了,如有问题可与博主一起交流讨论!

你可能感兴趣的:(运维,PSNR和SSIM)