金伟正, 柯南海, 徐进亨, 冯方舟, 杨光义
(武汉大学 电子信息学院, 湖北 武汉430079)
视频是人们从外界获取信息的重要渠道,毫不夸张地说,人类无时无刻不在处理大量的视频信息[1]。但是,视频在获取、压缩、存储、传输、解压及播放过程中不可避免地会产生各种各样的失真,如何评价视频的“好“与”坏”,即视频质量评价,成为人们越来越来关注的研究课题。
视频质量评价可以为改进视频设备、合理配置网络参数等提供参考。视频质量评价包括主观质量评价和客观质量评价两种[2]。主观视频评价对外界环境和受试者都有严格要求,会耗费较多的人力资源和经费。客观视频质量评价包括无参考、半参考、全参考质量评价,由于完全由机器算法实现,更具有实用前景[3]。
目前,国内还没有现成的视频质量评价软件,因此,开发视频评价软件是一项非常有意义的工作。
软件开发平台种类多种多样,而且对于软件的不同属性,往往对应有最适合其特征的开发平台。因此,在进行软件开发的时候,为了开发的便利性以及提高软件性能,选择多平台联合开发往往能更好地完成开发任务。
本文基于Microsoft Visual Studio 2013、QT 5.6.0、OpenCV 2.4.11这三个平台设计了多参数评价的视频质量评价软件。其中Microsoft Visual Studio是主要的开发平台,集成了QT软件和OpenCV跨平台的计算机视觉库[4~5],QT主要用来开发界面,OpenCV视觉库则用来进行图像处理。开发的软件主要用来对YUV有损视频进行全参考质量评价,评价参数包含PSNR、SSIM、MS-SSIM、VIFP、PSNR-HVS及PSNR-HVS-M等6种主流的视频质量评价参数。本系统软件已成功进行了软件著作权登记。
平台搭建主要是由上述的三个平台集成的。首先是Microsoft Visual Studio的安装,该软件是主要的开发平台,然后将QT和OpenCV集成到该平台。具体实现方法介绍如下:
选择合适的QT版本进行安装,对于不同版本的Visual Studio,它所能兼容的QT版本也有限制,本开发平台是在Visual Studio 2013下加载QT5.6.0。当然为了将QT加载到Visual Studio还需要安装一个插件qt-vs-addin,只有安装了该插件才能在Visual Studio 开发平台中看到QT选项,才能新建QT项目。新建项目后需要在QT栏选择QT版本及路径,程序才能编译正常。
OpenCV计算机视觉库只需要将下载好的压缩包解压出来,然后进行项目配置即可。为了能顺利使用视觉库函数,首先需要在环境变量里面添加bin文件路径,然后指定包含目录和库目录,以便执行的时候能找到相应的函数,最后是添加附加依赖项,这些必须与解压出来的函数库对应,使得在调用函数时能够找到相应的库文件,否则编译的时候会报错。
一个软件主要包含两方面的实现,一是操作界面,二是功能算法实现。良好的操作界面可以让我们能够和软件更好地交互,使我们能够方便快捷地使用软件;优秀的算法实现则能提高软件性能。
本文基于以上三种开发平台开发的视频质量评价软件主要用来解决YUV视频的全参考质量评价,并且通过不同格式统计每一帧画面计算结果。
OpenCV是一个基于BSD许可发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口,实现了图像处理和计算机视觉方面的很多通用算法[6]。
评价软件一共选取了六种评价参数,针对每一种参数都有相应的算法来实现。在实现的过程中,对每一种参数编写相应的实现程序,包括头文件和源文件。然后,调用相应的方法,实现相应的参数计算。计算各种参数的实现函数主要用的是OpenCV函数库。例如图片灰度化我们可以使用cvtColor(color,gray,CV_BGR2GRAY)函数来实现,color表示输入的彩色图片矩阵,gray为输出的灰度图片,CV_BGR2GRAY表示将RGB类型的图片转换为灰度图片。函数库的使用较为简单,可以很好地解决图片的相关操作。设计的软件原理框图如图1所示。评价的方法是对原始视频和有损的待测视频进行比较,包含PSNR、SSIM、MS-SSIM、VIFP、PSNR-HVS及PSNR-HVS-M等6种不同的评价参数,计算的结果通过CSV文件、图片形式来记录。
图1 软件原理框图
设计的视频质量评价软件界面主要包含工具栏、图片显示、普通文本的显示、文本框、按钮、下拉框、勾选按钮等要素。
QT的核心机制是信号与槽机制。信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言。当一个信号发射时,所有的槽处于监听状态,只有对信号感兴趣的槽才会执行相应的槽函数。新建QT项目,会自动生成界面文件、头文件、资源文件等几个目录。打开界面文件可以看到一个和项目名相同的ui文件。双击ui文件可以打开QT软件进行编辑。这样QT的界面开发可以通过控件的拖拽来实现。
对于工具栏可以设计一个按钮用来弹出界面进行软件信息的介绍和本软件用工具栏中的About按钮来介绍软件名称和软件版权信息。关于该按钮的槽函数会创建一个对话框并显示。弹出的界面里面可以显示关于软件的一些信息。图2 是是设计的软件相关版权信息。
图2 软件相关版权信息界面
对于文本显示相对简单,只需要拖入Label标签,然后修改标签的名称就可以了。其中图片的显示也是用Label来充当容器进行显示。
对于视频的选择,本软件文本框选择的控件是Line Edit,可以直接在文本框里面输入原始视频和待测视频的绝对路径,或者点击对应按钮,选中相应的文件,将文件路径填入文本框。在选择文件的时候,通过文件类型的过滤,在文件夹中只能看到YUV类型的文件,这样处理有助于我们进行文件的筛选以及快速选择。因为计算不同的视频类型对视频的宽和高有一定要求,在程序运行时会进行检测,如果不符合要求会弹出相应提示框,如图3所示。
图3 错误提示框
下拉框选择的是Combo Box控件,只需要添加不同选项,通过信号槽对不同索引进行相应的处理。
绘图选用的是QcustomPlot控件,QcustomPlot控件功能强大,可以用于绘制各种图,但是它本身不在QT库中,需要单独将其库文件和头文件加入工程中,然后调用其中的函数库。
生成的CSV文件用来记录两个输入视频文件的绝对地址和视频每一帧画面的质量,最后求取视频的平均质量。画的折线图用来记录视频每一帧画面质量的变化趋势,以观察视频某帧画面是否出现异常。最后可以将所画的折线图根据需求保存成图片。
软件主界面如图4所示。软件需要输入的参数包括原始视频文件、有损的待测视频文件路径、视频的宽、高以及待测视频的帧数,然后选择评价参数类型、视频格式类型以及是否将结果保存为图片。初始化好这些参数,然后点击“Process”按钮就可以开始计算。计算结果的平均值会显示在界面上“Average”对应的方框内,生成的记录每一帧视频质量的CSV文件则会保存在待测视频相同路径下。
图4 视频质量评价软件界面
前面介绍了软件界面的设计以及评价参数的计算方法实现。界面与实现方法之间通过槽来关联。软件运行先对整个界面进行初始化,如界面文本、图片的显示等,然后进行软件的初始化,包括输入参数、计算参数的选择以及结果的选择。接下来就可以执行软件。根据选择的参数可以进行相关参数的计算。
参数计算先打开视频文件,打开文件成功则确定视频采样格式,评价软件支持4种视频格式,包括YUV4:4:4、YUV4:2:2、YUV4:2:0、YUV4:0:0,采样格式的不同决定了亮度分量与色度分量的比例。然后检查对应采样格式的视频的宽和高是否符合要求,如果不符合要求则弹出对话框提示修改视频的宽和高。
接下来逐帧读取视频进行计算,因为评价只涉及亮度分量,提取图像每个像素点亮度分量进行计算,最后求取平均值。
Visual Studio软件打包程序没有默认安装,软件打包需要首先安装InstallShield软件,安装完打包软件后,新建项目就可以看到安装和部署选项。打包部署软件步骤如下:
(1)选择InstallShield Limited Edition Project,确定软件名称;
(2)填写应用信息、安装要求、安装架构、程序文件、快捷方式、注册表、安装访谈等信息;
(3)生成解决方案。
生成解决方案,在工程名下找到setup.exe可执行文件,即可进行软件安装,根据安装提示逐步安装软件即可,最后会在桌面生成快捷方式。图5是设计的软件快捷方式图标。
图5 软件图标
软件设计安装完成需要进行性能测试,包括软件的显示是否正常,文本提示是否正确。然后是参数的输入,输入的参数包括视频文件,可以直接输入视频文件的绝对路径,或者通过按钮打开文件夹选择文件获取文件路径。视频的宽和高以及计算帧数可以直接输入数值即可。对于视频采样格式,计算参数类型选择相应类型即可。如果要生成图片选中保存图片按钮即可。
生成的文件包括CSV文件,它记录了每帧视频的质量,同时记录的输入原始视频和待测视频的位置;查看折线图,可以查看视频帧是否有异常;最后可以将画出的折线图按照一定分辨率保存下来。
计算时间是体现算法性能的重要参数,在计算机(装有Windows10,64bit操作系统,intel core i7,4G内存)上运行,表1是采用不同参数计算一帧图片的时间统计。运行时CPU资源占用一般在8%以下。
表1 各参数计算一帧图片时间统计
图6是针对4 K视频HoneyBee(分辨率为3840×2160,600帧),选取2 Mbps-30 Mbps步长为2 Mbps比特率条件下进行帧内编码、解码,然后用该视频质量评价软件计算出的PSNR、SSIM结果统计图,软件运行良好。
(a)HoneyBee-PSNR (b)HoneyBee-SSIM图6 HoneyBee视频PSNR、SSIM参数计算
本文介绍了一种基于多平台联合开发的视频质量评价软件设计方法。首先将QT、OpenCV集成到Visual Studio中,然后在Visual Studio中新建QT项目,利用QT来进行界面开发,然后利用OpenCV函数库来实现计算参数方法。利用QT信号与槽的机制将界面与实现方法进行关联,然后根据不同的采样格式,对视频的宽和高进行检查。对每帧视频画面进行计算,将计算统计结果保存在CSV文件中。同时对计算的结果绘制折线图,查看视频帧是否有异常。同时还可以将保存的折线图保存成图片。最后计算的视频质量均值显示在界面上可以便于我们的结果统计。开发的视频质量软件有助于普通视频质量评价研究者进行相关的研究。
本软件已应用于我校图像处理教学及大学生科研法动,取得了非常好的教学效果,以该软件为工具的我校创新创业训练项目“基于H.265/HEVC的视频质量参数评价” 以优异成绩结题。
后续工作还将对视频质量评价软件进行优化,例如增加评价参数,增加部分参考或无参考评价算法及增加数据分析功能。