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