金偉正, 柯南海, 徐進亨, 馮方舟, 楊光義
(武漢大學 電子信息學院, 湖北 武漢430079)
視頻是人們從外界獲取信息的重要渠道,毫不夸張地說,人類無時無刻不在處理大量的視頻信息[1]。但是,視頻在獲取、壓縮、存儲、傳輸、解壓及播放過程中不可避免地會產(chǎn)生各種各樣的失真,如何評價視頻的“好“與”壞”,即視頻質(zhì)量評價,成為人們越來越來關注的研究課題。
視頻質(zhì)量評價可以為改進視頻設備、合理配置網(wǎng)絡參數(shù)等提供參考。視頻質(zhì)量評價包括主觀質(zhì)量評價和客觀質(zhì)量評價兩種[2]。主觀視頻評價對外界環(huán)境和受試者都有嚴格要求,會耗費較多的人力資源和經(jīng)費。客觀視頻質(zhì)量評價包括無參考、半?yún)⒖肌⑷珔⒖假|(zhì)量評價,由于完全由機器算法實現(xiàn),更具有實用前景[3]。
目前,國內(nèi)還沒有現(xiàn)成的視頻質(zhì)量評價軟件,因此,開發(fā)視頻評價軟件是一項非常有意義的工作。
軟件開發(fā)平臺種類多種多樣,而且對于軟件的不同屬性,往往對應有最適合其特征的開發(fā)平臺。因此,在進行軟件開發(fā)的時候,為了開發(fā)的便利性以及提高軟件性能,選擇多平臺聯(lián)合開發(fā)往往能更好地完成開發(fā)任務。
本文基于Microsoft Visual Studio 2013、QT 5.6.0、OpenCV 2.4.11這三個平臺設計了多參數(shù)評價的視頻質(zhì)量評價軟件。其中Microsoft Visual Studio是主要的開發(fā)平臺,集成了QT軟件和OpenCV跨平臺的計算機視覺庫[4~5],QT主要用來開發(fā)界面,OpenCV視覺庫則用來進行圖像處理。開發(fā)的軟件主要用來對YUV有損視頻進行全參考質(zhì)量評價,評價參數(shù)包含PSNR、SSIM、MS-SSIM、VIFP、PSNR-HVS及PSNR-HVS-M等6種主流的視頻質(zhì)量評價參數(shù)。本系統(tǒng)軟件已成功進行了軟件著作權登記。
平臺搭建主要是由上述的三個平臺集成的。首先是Microsoft Visual Studio的安裝,該軟件是主要的開發(fā)平臺,然后將QT和OpenCV集成到該平臺。具體實現(xiàn)方法介紹如下:
選擇合適的QT版本進行安裝,對于不同版本的Visual Studio,它所能兼容的QT版本也有限制,本開發(fā)平臺是在Visual Studio 2013下加載QT5.6.0。當然為了將QT加載到Visual Studio還需要安裝一個插件qt-vs-addin,只有安裝了該插件才能在Visual Studio 開發(fā)平臺中看到QT選項,才能新建QT項目。新建項目后需要在QT欄選擇QT版本及路徑,程序才能編譯正常。
OpenCV計算機視覺庫只需要將下載好的壓縮包解壓出來,然后進行項目配置即可。為了能順利使用視覺庫函數(shù),首先需要在環(huán)境變量里面添加bin文件路徑,然后指定包含目錄和庫目錄,以便執(zhí)行的時候能找到相應的函數(shù),最后是添加附加依賴項,這些必須與解壓出來的函數(shù)庫對應,使得在調(diào)用函數(shù)時能夠找到相應的庫文件,否則編譯的時候會報錯。
一個軟件主要包含兩方面的實現(xiàn),一是操作界面,二是功能算法實現(xiàn)。良好的操作界面可以讓我們能夠和軟件更好地交互,使我們能夠方便快捷地使用軟件;優(yōu)秀的算法實現(xiàn)則能提高軟件性能。
本文基于以上三種開發(fā)平臺開發(fā)的視頻質(zhì)量評價軟件主要用來解決YUV視頻的全參考質(zhì)量評價,并且通過不同格式統(tǒng)計每一幀畫面計算結果。
OpenCV是一個基于BSD許可發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。OpenCV用C++語言編寫,它的主要接口也是C++語言,但是依然保留了大量的C語言接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法[6]。
評價軟件一共選取了六種評價參數(shù),針對每一種參數(shù)都有相應的算法來實現(xiàn)。在實現(xiàn)的過程中,對每一種參數(shù)編寫相應的實現(xiàn)程序,包括頭文件和源文件。然后,調(diào)用相應的方法,實現(xiàn)相應的參數(shù)計算。計算各種參數(shù)的實現(xiàn)函數(shù)主要用的是OpenCV函數(shù)庫。例如圖片灰度化我們可以使用cvtColor(color,gray,CV_BGR2GRAY)函數(shù)來實現(xiàn),color表示輸入的彩色圖片矩陣,gray為輸出的灰度圖片,CV_BGR2GRAY表示將RGB類型的圖片轉(zhuǎn)換為灰度圖片。函數(shù)庫的使用較為簡單,可以很好地解決圖片的相關操作。設計的軟件原理框圖如圖1所示。評價的方法是對原始視頻和有損的待測視頻進行比較,包含PSNR、SSIM、MS-SSIM、VIFP、PSNR-HVS及PSNR-HVS-M等6種不同的評價參數(shù),計算的結果通過CSV文件、圖片形式來記錄。
圖1 軟件原理框圖
設計的視頻質(zhì)量評價軟件界面主要包含工具欄、圖片顯示、普通文本的顯示、文本框、按鈕、下拉框、勾選按鈕等要素。
QT的核心機制是信號與槽機制。信號和槽是一種高級接口,應用于對象之間的通信,它是QT的核心特性,也是QT區(qū)別于其它工具包的重要地方。信號和槽是QT自行定義的一種通信機制,它獨立于標準的C/C++語言。當一個信號發(fā)射時,所有的槽處于監(jiān)聽狀態(tài),只有對信號感興趣的槽才會執(zhí)行相應的槽函數(shù)。新建QT項目,會自動生成界面文件、頭文件、資源文件等幾個目錄。打開界面文件可以看到一個和項目名相同的ui文件。雙擊ui文件可以打開QT軟件進行編輯。這樣QT的界面開發(fā)可以通過控件的拖拽來實現(xiàn)。
對于工具欄可以設計一個按鈕用來彈出界面進行軟件信息的介紹和本軟件用工具欄中的About按鈕來介紹軟件名稱和軟件版權信息。關于該按鈕的槽函數(shù)會創(chuàng)建一個對話框并顯示。彈出的界面里面可以顯示關于軟件的一些信息。圖2 是是設計的軟件相關版權信息。
圖2 軟件相關版權信息界面
對于文本顯示相對簡單,只需要拖入Label標簽,然后修改標簽的名稱就可以了。其中圖片的顯示也是用Label來充當容器進行顯示。
對于視頻的選擇,本軟件文本框選擇的控件是Line Edit,可以直接在文本框里面輸入原始視頻和待測視頻的絕對路徑,或者點擊對應按鈕,選中相應的文件,將文件路徑填入文本框。在選擇文件的時候,通過文件類型的過濾,在文件夾中只能看到YUV類型的文件,這樣處理有助于我們進行文件的篩選以及快速選擇。因為計算不同的視頻類型對視頻的寬和高有一定要求,在程序運行時會進行檢測,如果不符合要求會彈出相應提示框,如圖3所示。
圖3 錯誤提示框
下拉框選擇的是Combo Box控件,只需要添加不同選項,通過信號槽對不同索引進行相應的處理。
繪圖選用的是QcustomPlot控件,QcustomPlot控件功能強大,可以用于繪制各種圖,但是它本身不在QT庫中,需要單獨將其庫文件和頭文件加入工程中,然后調(diào)用其中的函數(shù)庫。
生成的CSV文件用來記錄兩個輸入視頻文件的絕對地址和視頻每一幀畫面的質(zhì)量,最后求取視頻的平均質(zhì)量。畫的折線圖用來記錄視頻每一幀畫面質(zhì)量的變化趨勢,以觀察視頻某幀畫面是否出現(xiàn)異常。最后可以將所畫的折線圖根據(jù)需求保存成圖片。
軟件主界面如圖4所示。軟件需要輸入的參數(shù)包括原始視頻文件、有損的待測視頻文件路徑、視頻的寬、高以及待測視頻的幀數(shù),然后選擇評價參數(shù)類型、視頻格式類型以及是否將結果保存為圖片。初始化好這些參數(shù),然后點擊“Process”按鈕就可以開始計算。計算結果的平均值會顯示在界面上“Average”對應的方框內(nèi),生成的記錄每一幀視頻質(zhì)量的CSV文件則會保存在待測視頻相同路徑下。
圖4 視頻質(zhì)量評價軟件界面
前面介紹了軟件界面的設計以及評價參數(shù)的計算方法實現(xiàn)。界面與實現(xiàn)方法之間通過槽來關聯(lián)。軟件運行先對整個界面進行初始化,如界面文本、圖片的顯示等,然后進行軟件的初始化,包括輸入?yún)?shù)、計算參數(shù)的選擇以及結果的選擇。接下來就可以執(zhí)行軟件。根據(jù)選擇的參數(shù)可以進行相關參數(shù)的計算。
參數(shù)計算先打開視頻文件,打開文件成功則確定視頻采樣格式,評價軟件支持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可執(zhí)行文件,即可進行軟件安裝,根據(jù)安裝提示逐步安裝軟件即可,最后會在桌面生成快捷方式。圖5是設計的軟件快捷方式圖標。
圖5 軟件圖標
軟件設計安裝完成需要進行性能測試,包括軟件的顯示是否正常,文本提示是否正確。然后是參數(shù)的輸入,輸入的參數(shù)包括視頻文件,可以直接輸入視頻文件的絕對路徑,或者通過按鈕打開文件夾選擇文件獲取文件路徑。視頻的寬和高以及計算幀數(shù)可以直接輸入數(shù)值即可。對于視頻采樣格式,計算參數(shù)類型選擇相應類型即可。如果要生成圖片選中保存圖片按鈕即可。
生成的文件包括CSV文件,它記錄了每幀視頻的質(zhì)量,同時記錄的輸入原始視頻和待測視頻的位置;查看折線圖,可以查看視頻幀是否有異常;最后可以將畫出的折線圖按照一定分辨率保存下來。
計算時間是體現(xiàn)算法性能的重要參數(shù),在計算機(裝有Windows10,64bit操作系統(tǒng),intel core i7,4G內(nèi)存)上運行,表1是采用不同參數(shù)計算一幀圖片的時間統(tǒng)計。運行時CPU資源占用一般在8%以下。
表1 各參數(shù)計算一幀圖片時間統(tǒng)計
圖6是針對4 K視頻HoneyBee(分辨率為3840×2160,600幀),選取2 Mbps-30 Mbps步長為2 Mbps比特率條件下進行幀內(nèi)編碼、解碼,然后用該視頻質(zhì)量評價軟件計算出的PSNR、SSIM結果統(tǒng)計圖,軟件運行良好。
(a)HoneyBee-PSNR (b)HoneyBee-SSIM圖6 HoneyBee視頻PSNR、SSIM參數(shù)計算
本文介紹了一種基于多平臺聯(lián)合開發(fā)的視頻質(zhì)量評價軟件設計方法。首先將QT、OpenCV集成到Visual Studio中,然后在Visual Studio中新建QT項目,利用QT來進行界面開發(fā),然后利用OpenCV函數(shù)庫來實現(xiàn)計算參數(shù)方法。利用QT信號與槽的機制將界面與實現(xiàn)方法進行關聯(lián),然后根據(jù)不同的采樣格式,對視頻的寬和高進行檢查。對每幀視頻畫面進行計算,將計算統(tǒng)計結果保存在CSV文件中。同時對計算的結果繪制折線圖,查看視頻幀是否有異常。同時還可以將保存的折線圖保存成圖片。最后計算的視頻質(zhì)量均值顯示在界面上可以便于我們的結果統(tǒng)計。開發(fā)的視頻質(zhì)量軟件有助于普通視頻質(zhì)量評價研究者進行相關的研究。
本軟件已應用于我校圖像處理教學及大學生科研法動,取得了非常好的教學效果,以該軟件為工具的我校創(chuàng)新創(chuàng)業(yè)訓練項目“基于H.265/HEVC的視頻質(zhì)量參數(shù)評價” 以優(yōu)異成績結題。
后續(xù)工作還將對視頻質(zhì)量評價軟件進行優(yōu)化,例如增加評價參數(shù),增加部分參考或無參考評價算法及增加數(shù)據(jù)分析功能。