​视频编码质量效果评估

文摘   科技   2024-02-23 17:54   广东  

点击上方蓝字关注我们

今天主要分享关于视频当中的一个是关于视频编码质量评估方法,视频的传输使用中少不了视频编码的过程,对于不同编码参数得到后的视频,该如何评价视频编码后的效果。
背景:在一个视频源经过不同编码器(或者不同编码)后得到的视频,但是无法判断编码后的视频后的效果哪个视频更好?有些可以通过肉眼观察,有些是无法通过肉眼进行判断。
直接问题:采用不同编码后的视频,该如何去对比哪一种效果更好?
目的:通过工具有理有据体现编码后的哪个视频视觉效果更好;
本文将介绍采用PSNR,SSIM,VMAF数据,针对原理本章节不做阐述,只说明使用方法。

1.前言

准备视频源:

videobitrateresolution
source.mp42746KB1280x720
target1.mp41024KB1280x720
target2.mp42048KB1280x720
target3.mp42537KB640x480

主要目的:

  • 对比不同编码器编译出的视频质量效果;
  • 对比不同参数下的视频质量效果[本次采用不同视频];

本文主要介绍主观方法和数据分析方法

2. 视频质量主观效果对比

工具:VCmpTool_15

基于ffplay 开发:

Github:ronnielige/ffmpeg-4.2.3-VCmpTool: A video compare tool based on ffmpeg-4.2.3 (github.com)

下载链接: 

https://pan.baidu.com/s/1EVFCblAFmrFhbklbmGfI-w?pwd=yg66 提取码: yg66

VCmpTool.exe D:\21.Controller\vmaf\test\source.mp4 D:\21.Controller\vmaf\test\target2.mp4

相关控制

播放时的控制键:

操作功能
q, ESC退出
f全屏
p, space暂停
s播放下一帧
F1左边的画面播放到下一帧
F2右边的画面播放到下一帧
左键回退10秒
右键快进10秒
上键快进60秒
下键回退60秒
鼠标左键单击移动分割线到鼠标位置
按住鼠标左键移动分割线

2. 视频质量客观数据对比

评价视频/图片质量的3个数据:PSNR,SSIM,VMAF

3.1 PSNR(峰值信噪比,Peak Signal to     Noise Ratio )

一个纯客观的评价图片质量的参数,但是峰值信噪比高不代表人眼看到的视频/图片质量好。计算公式略。

PSNR高于40dB说明图像质量极好(即非常接近原始图像),

30—40dB通常表示图像质量是好的(即失真可以察觉但可以接受),

20—30dB说明图像质量差;

最后,PSNR低于20dB图像不可接受

# 命令ffmpeg -i video1 -i video2  -lavfi psnr="stats_file=psnr.log" -f null -
# 运行测试ffmpeg -i source.mp4 -i target1.mp4 -lavfi psnr="stats_file=psnr.log" -f null -
# ffmpeg -i 支持视频流输入,比如ffmpge -i rtsp://192.168.10.xx/stream1 xxxxx

结果:

3.2 SSIM(结构相似性,Structural     SIMilarity index)

这个方法考虑到了人眼的主观感受,运算时包含了均值比较,对比度比较和结构比较,计算公式略。

SSIM是一个0到1之间的数,越大表示输出图像和无失真图像的差距越小,即图像质量越好。当两幅图像一模一样时,SSIM=1;

# 命令ffmpeg -i video1 -i video2  -lavfi ssim="stats_file=ssim.log" -f null -
# 运行测试 fmpeg -i source.mp4 -i target1.mp4 -lavfi ssim="stats_file=ssim.log" -f null -

结果:

3.3 VMAF(视频多方法评估融合,Video Multimethod Assessment Fusion)

Netflix与南加州大学、南特大学IPI/LS2N 实验室以及德克萨斯大学奥斯汀分校图像和视频工程实验室 (LIVE) 合作开发的客观的全参考视频质量指标。它根据参考和失真的视频序列预测主观视频质量。该指标可用于评估不同视频编解码器、编码器、编码设置或传输变体的质量。

通过查阅资料和官方说明,VMAF的分数评判大致分为以下内容:

使用由绝对类别评分ACR)方法收集的分数进行训练,该分数使用 1080p 显示屏,观看距离为3H。观看者对视频质量的评分为“差”,“差”,“一般”,“好”和“优秀”,并且粗略地讲,“差”被映射为VMAF级别20,“优秀”为100

按照官方的说明,VMAF得分70可以测试者理解为:普通观众在 1080p 和 3H 条件下的“好”和“一般”之间的投票结果

要考虑的另一个因素是,观看者可以给出的最佳和最差选票是通过整套视频中质量最高和最低的视频进行校准的。在默认模型 v0.6.1 的情况下,最佳视频和最差视频分别对应于在低QP(量化参数)1080p下编码的视频和在高QP 的 240p下编码的视频。

方法一(命令)

以下采用windows 10 环境下操作:

步骤1:克隆项目

https://github.com/Netflix/vmaf.git

git clone https://github.com/Netflix/vmaf.git

步骤2 Building vmaf on Windows

We are going to build vmaf in Windows. These steps are in accordance with the corresponding github action for building on Windows and have been tested successfully using a Windows10 machine. They work with either cmd or PowerShell.

Note: This guide is just to build libvmaf on Windows and not involves the python part of project as it is the same across all platforms (settings up virtual environment, ...).

具体安装方法参考:

https://github.com/Netflix/vmaf/blob/master/resource/doc/windows.md

步骤3:测试

# 命令测试:ffmpeg -i d:\21.Controller\vmaf\test\source.mp4 -i d:\21.Controller\vmaf\test\target1.mp4 -lavfi libvmaf="model_path=vmaf_v0.6.1.json:log_path=VMAF.txt" -report -f null -

结果:

循环测试其他视频与原视频比较;

方法二(EXE 推荐)

下载最新版本:Releases · fifonik/FFMetrics (github.com)

2024年2月23日12:02:08 最新版本下载:FFMetrics.1.4.9b.zip

添加相关文件,直接运行看到得分:

PSNR

越大越好

SSIM

(0~1) 越接近1越好

VMAF

(0~100) 数值越大越好

3.3 结论

从主观角度查看视频和数据评估对比视频质量,发现target2.mp4更加优越

videobitrateresolutionPSNRSSIMVMAF
source.mp42746KB1280x720


target1.mp41024KB1280x72031.69110.839257.5525
target2.mp42048KB1280x72034.12460.899973.8175
target3.mp42537KB640x48029.66340.775433.6483

本次实验中,编码的效果整体不是很优秀,有兴趣可以自行测试,VMAF在90以上视频质量效果才算比较ok.



码思途远
一位码农的日常分享,探索软件技术知识与新闻的数字十字路口。