视频编码器领域一直有个比較复杂的问题:mpeg2、divx、xvid、mpeg4、vp8、vp9、x264、openh264、x265等等这一系列编码器究竟哪个好?而对于同一种视频编码器,又包括了各种各样的參数配置,这些配置对视频编码器的影响又是如何的?为了研究这个问题,我和师弟们在课余时间开发了一个软件系统,专门用于评价视频编码器的性能。

本文记录自己做的视频编码器性能评价的系统VideoCodecRank。本系统能够通过调整几种不同的维度的參数取值——视频内容、分辨率、编码器预设、码率来对视频编码器的性能进行评价和对照。对于每一个编码器,本系统能够遍历上述几种參数进行编码,而且记录编码视频图像质量和编码速度。通过本系统,能够全方位的对照视频编码器在各种条件下性能的优劣。

在此还要感谢二位师弟的參与。眼下在大家的合作下该系统基本功能刚开发完毕,下一步打算继续測试和完好。

系统地址:http://www.velab.com.cn/vcr/

眼下的状态

眼下本系统计算了下列编码器:

254

576

1296

0.05

288

508

1152

2592

0.075

432

763

1728

3888

0.1

576

1017

2304

5184

0.15

864

1526

3456

7776

0.2

1152

2035

4608

10368

评价參数

评价參数用于在编码完毕后统计编码的质量情况。评价參数能够分为两类:质量评价參数和速度评价參数。

质量评价參数

编码质量评价主要通过全參考视频质量评价算法实现。全參考视频质量评价算法通过比較编码前原始视频与编解码后受损视频获得视频质量的评价结果。

最常见的全參考视频质量评价模型为PSNR和SSIM。
PSNR
PSNR(峰值信噪比)是使用最为广泛的视频质量评价方法。它的计算公式为:

当中L为图像灰度值范围。对于8bit位深的图像来说L=2^8-1=255;M*N图像块的MSE(均方误差)计算公式为:

PSNR取值通常在20-40之间。取值越大代表图像质量越好。虽然PSNR计算简单。可是因为没有考虑到人类视觉感知特性。所以其评价结果与主观感受往往相差较大。
SSIM
SSIM(结构类似度)是zhou wang等人提出的一种常见的视频质量评价方法。该方法考虑了人类视觉感知特性,综合考虑了亮度、对照度以及结构的影响。

它的计算公式例如以下所看到的。

当中l(x,y)为亮度比較函数。c(x,y)为对照度比較函数。s(x,y) 为结构比較函数。这三个函数的具体计算方法能够參考相关文献。

SSIM取值在0-1之间,取值越大代表图像质量越好。

SSIM相对于PSNR来说更加符合人眼的主观感受,因此也是一种使用非常广泛的视频质量评价方法。

速度评价參数

编码速度评价主要通过统计编码和解码的耗时(以毫秒为单位)来实现。

系统执行原理

本系统会依据输入的配置信息,遍历上文介绍的几种输入參数值,组合成不同的命令进行编码和评价工作。

系统開始执行后,会依照顺序执行以下几步工作:
(1) 对于每一个输入的视频測试序列,对它的尺寸进行缩放,生成一系列不同分辨率的视频序列。
(2) 对于每种分辨率的原始视频序列,选择不同的编码器准备编码。

(3) 对于每种编码器,设置不同的码率进行编码,生成码流文件。随后解码生成的码流文件。得到受损的视频序列。
(4) 对于每一个受损视频序列。使用不同的视频质量评价方法进行质量评价,得到质量分数。

上述逻辑下图所看到的。

从图中能够看出本系统遍历參数的顺序例如以下:

视频内容-->分辨率-->编码器-->码率-->客观质量评价方法

当系统完毕了一次客观质量评价算的计算之后,就会生成一条保存了当前实验參数的记录,并将该记录存储到数据库中。

站点说明

VideoCodecRank站点的结构例如以下图所看到的。整个站点除了首页之外包括了“结果集”、“编码器”、“视频序列”、“系统配置”、“关于”几个页面。

这些页面之间的关系例如以下图所看到的。

 

首页

首页中包括了一张编码器的综合比較图表。当中蓝色横条代表了编码图像质量,而黄色横条代表了编码时间。

能够拖动图表上方的滑动条调整以下几种參数选择不同的数据对编码器的性能进行排序。

速度质量权重:眼下仅仅支持时间/质量权重设置为1或0。质量权重为1则依照编码器输出视频质量进行排序,时间权重为1则依照编码器消耗时间进行排序。
分辨率:该选项能够选择输入视频的尺寸。
码率:该选项能够选择输入视频的码率。

注意码率是依照BPP(Bit Per Pixel,每像素比特数)为单位的。

内容复杂度:该选项能够选择输入測试视频序列。注意输入的视频内容是依照时间复杂度TI或空间复杂度SI(这两个指标均取自于ITU BT.1788标准)进行排序的,以方便选择。

首页的内容例如以下所看到的。

 

结果集页面

结果集页面中包括了系统中全部客观视频质量评价的结果。每一条实验记录包括了例如以下信息:

编码器
视频序列
分辨率
每像素比特数
编码时间
解码时间
视频质量评价算法
客观质量
主观质量

结果集页面的内容例如以下图所看到的。能够通过在下拉框中调整“编码器”,“视频序列”。“分辨率”。“每像素比特数”。“客观质量评价算法”几个參数来筛选符合特定条件的结果。

编码器页面

编码器页面中包括了系统中全部參与评价的编码器(注:对于包括多种预设的编码器,每种预设都算作一种编码器)。当中每一条记录包括了例如以下信息:

编码器名称
所属标准
厂商
版本号

编码器页面的内容例如以下图所看到的。单击编码器的名称能够进入编码器具体信息页面。

编码器具体信息页面

编码器具体信息页面包括了3个部分:编码器简单介绍、编码器具体质量和编码器时间-质量权衡图。

编码器简单介绍部分内容例如以下所看到的。

能够看出该列表列出了编码器的基本信息。

 

编码器具体质量部分的内容例如以下图所看到的。

能够通过选择參数(编码器、视频序列、分辨率、码率),列出特定条件下測试视频序列每一帧画面的图像质量信息(客观算法PSNR、SSIM等)。

图表中横坐标为视频序列的帧序号,纵坐标为视频客观质量评价算法的值。

 

编码器时间-质量权衡图的内容例如以下图所看到的。时间/质量权衡图中的每一个点代表了一个编码器。图表横坐标为编码时间,纵坐标为编码图像质量。由此可知,位于图表左边的编码器速度比較快,而位于图表上边的编码器图像质量比較好。“又快又好”的编码器都位于图表的左上方。

该图表能够通过选择參数(视频序列、码率、分辨率、客观评价方法),列出特定条件下測试视频编码器的耗时信息和图像质量信息。

 

视频序列页面

视频序列页面中列表显示了系统中全部參与測试的原始视频序列信息。当中每一条记录包括例如以下信息:

视频序列名称
原始分辨率
像素採样格式
帧率
帧数

视频序列页面的内容例如以下图所看到的。单击视频序列的名称能够进入视频序列具体信息页面。

 

视频序列具体信息页面

视频序列具体信息页面包括了3项内容:视频序列预览、视频序列具体特性以及视频序列时间/空间复杂度对照图。
视频序列预览部分内容例如以下所看到的。

能够通过该功能预览測试视频的内容。

 

视频序列具体特性部分内容例如以下图所看到的。

能够通过该功能查看视频中每一帧图像的TI(Temporal perceptual Information)信息和SI(Spatial perceptual Information)信息。TI和SI两个指标取自于ITU BT.1788标准。

TI越大,代表视频运动剧烈(时间上变化大)。SI越大。代表视频内容复杂(空间上纹理多)。图表中横坐标为视频序列的帧序号,纵坐标为视频特性值。

 

视频序列时间/空间复杂度对照图例如以下所看到的。图中每一个点代表一个视频序列,图表横坐标为SI,纵坐标为TI。由此可知位于图表上方的视频序列运动比較剧烈,而位于图表右边的视频序列内容纹理比較复杂。最为简单的视频序列位于图表的右上角,最为简单的视频序列位于图表的左下角。

系统配置页面

系统配置页面的内容例如以下图所看到的。该页面中列出了系统配置的參数信息。

比如显示了输入视频会被拉伸为哪几种分辨率,编码时候会选择哪些BPP,客观质量评价算法有哪些等等。

雷霄骅
leixiaohua1020@126.com
http://blog.csdn.net/leixiaohua1020