





摘要:針對全新編解碼技術H.265,研究并實現了基于Android平臺的視頻質量評估軟件開發。首先通過分析H.265編解碼標準的特點和VLC多媒體播放器的解碼方式,獲取了VLC播放器解碼后的YUV數據。再針對YUV數據進行了分辨率、幀率、清晰度、亮度、色度等五個方面的評估分析,并結合主觀分析對該五項建立了合理的視頻評分體系。最后基于簡潔明了的UI界面設計,為用戶清晰地展示了評分結果。本文網絡版地址:http://www.eepw.e om.cn/article/2777 17.htm
關鍵詞:H.265;VLC;YUV;安卓;視頻評分
引言
隨著H.265視頻壓縮標準的出現,其壓縮效率與錯誤恢復能力的提高,以及實時的時延和信道獲取時間的減少等特點,為互聯網高清視頻帶來了巨大變化。同時4G網絡的逐漸覆蓋使得移動客戶端上的視頻載入率日漸提高,因此流媒體視頻評測軟件的開發具有意義重大。
本文基于如今用戶群最大的Android平臺實現流媒體視頻評測軟件的開發,軟件主要從分辨率和幀率兩方面來測評視頻流暢度,同時從視頻質量的亮度、色度和清晰度三個方面來評估視頻畫質,并將評估結果以分數的形式直觀呈現于手機上。此結果方便用戶選擇視頻質量更好的流媒體,同時也方便運營商針對視頻存在的問題進行測評維修,這將推動整個流媒體服務器的發展。
1 技術平臺介紹
1.1 H.265發展優勢
H.265標準圍繞著現有的視頻編碼標準H.264,保留原來的某些技術,同時對一些相關的技術加以改進。新技術使用先進的技術用以改善碼流、編碼質量、延時和算法復雜度之間的關系,達到最優化設置。具體的研究內容包括:提高壓縮效率、提高魯棒性和錯誤恢復能力、減少實時的時延、減少信道獲取時間和隨機接入時延、降低復雜度等。
H.265的技術亮點包括以下幾點:第一,靈活的編碼結構,在H.265中將宏塊的大小從H.264的16×16擴展到了64×64,以便于高分辨率視頻的壓縮。同時,采用了更加靈活的編碼結構來提高編碼效率,包括編碼單元、預測單元和變換單元:第二,使用新的MV(運動矢量)預測方式,區別于H.264基于空間域的運動矢量預測方式,H.265擴充更加多的方向進行幀內預測,同時將預測塊的集合由原來的空間域擴展到時間域及空時混合域,通過率失真準則計算后選擇最佳的預測塊;第三,更低的碼流,多項質量比較測試已經表明,在相同的圖像質量下,相比于H.264,通過H.265編碼的視頻碼流大小比H.264減少大約39%-44%。通過主觀視覺測試得出的數據顯示,在碼率減少51%-74%的情況下,H.265編碼視頻的質量還能與H.264編碼視頻近似甚至更好,其本質上說是比預期的信噪比(PSNR)要好。
1.2 Android平臺開發的優越性
廣泛使用性:Android軟件擁有廣泛且穩定的使用人群。
開放性:Android具有開源系統可供用戶自行設計更改。
豐富的硬件選擇:從性能一般的低端機到高配置的高端機一應俱全,可滿足不同階層用戶的不同需求。
不受限制的軟件開發:Android平臺開發周期短,應用的發布簡單,只需要通過Eclipse引導簽署開發出的應用,開發者即擁有一個可以在任何Android平臺運行的APK文件。將這個APK文件發布到各種平臺上進行推廣,用戶安裝即可使用。如果應用在使用中出現了問題,出現代碼錯誤,開發者也能立刻上傳修復的版本供用戶下載。
1.3方案總述
選擇Android平臺上基于H.265進行視頻測評。具體方案流程圖如圖1所示。
首先利用VLC沆媒體播放器接收流媒體數據流,再在Linux環境下使用Android NDK將HM10.0的解碼庫進行移植,與VLC各模塊共同封裝成SO庫移植到Android平臺上,再通過JNI本地調用的方式在Java層調用來完成對HEVC碼流的解析。在播放視頻的第三階段通過C語言來編寫解碼模塊,由之解出的碼流分為兩路,其中一路按照正常播放流程由播放器輸出以實現正常播放的功能。另外一路則先導出至sdcard中,當視頻播放結束后重新讀入YUV數據并利用Opencv設計算法進行分析,最終結果以txt文本的形式存儲至sdcard中。
2 視頻流暢度測評
2.1分辨率測評
2.1.1分辨率簡介
視頻分辨率指視頻的高/寬像素值,用來度量圖像內數據量。通常將分辨率表示成ppi(每英寸像素Pixel perinch),一般說的分辨率指圖像的高/寬像素值,嚴格意義上的分辨率是指單位長度內的有效像素值ppi。如圖2所示,分別是分辨率為72ppi和300ppi的圖像示例。
2.1.2分辨率算法
本測評軟件采用一般定義,即視頻的高/寬像素值。
(1)首先利用Android自帶功能遍歷手機SD卡中的所有視頻,為視頻測評做準備。
(2)通過搜索視頻媒體自帶的信息,獲取手機視頻的分辨率,并且根據獲取的分辨率為視頻評分。
(3)依據手機分辨率的屏幕參數,我們選取480×270作為標定值。高于此值,則分辨率這一項為滿分;反之,則為零分。
2.2幀率
2.2.1幀率簡介
幀率是用來測量顯示幀數的量度,單位一般為fps(frames persecond),表示圖形處理去處理場景時每秒鐘能夠更新的次數。高的幀率可以得到更流暢、更逼真的動畫。根據人眼的特殊生理結構,如果所看畫面幀率高于16fps,則會認為畫面連續。然而當幀率超過屏幕刷新率時,只會浪費圖像處理能力。一般最合適的人眼接受幀率為25fps。
同時,幀率影響畫面流暢度,與畫面流暢度成正比。幀率越大,畫面越流暢;幀率越小,畫面越有跳動感。
2.2.2幀率評分標定
本項目采用一邊播放視頻一邊導出視頻轉換成YUV文件形式,再利用YUV文件的大小以及每一幀圖像的分辨率大小,計算出一段視頻的平均幀率。由于采用的是YUV420的形式,所以每一幀圖像的大小為length*width*1.5 bit,由此得出平均幀率計算公式如下:
幀率=一段時間內YUV文件大小/length*width*1.5 bit*時間(1)
具體實現函數如下:
(fram/(mVideoHeight*mVide oWidth*1.5*times》
由于人眼最適合的幀率為25fps,本文選取幀率大于20fps為流暢,即為滿分;選取小于Sfps的幀率為不合格,即為零分。具體評分準則如表1。
3 視頻畫質測評
3.1清晰度
3.1.1清晰度研究背景
隨著各類數字成像技術的飛速發展,數字圖像的清晰度日益成為衡量數字成像系統優劣的重要指標。一幅數字圖像質量的好壞與其清晰度直接相關,清晰度也指模糊度或粗糙度,是指人眼能感覺出的相鄰影像間的明顯程度。導致圖像清晰度下降的原因是圖像模糊,在圖像采集、傳輸、壓縮等處理過程中都有可能產生模糊。
目前,對數字圖像清晰度的評價方法駐要有空域參數方差、熵、以及頻域調制傳遞函數等,但由于這些方法各有優缺點,如空域參數雖評價簡潔、快速,但對圖像清晰度的細小變化不敏感:頻域參數雖對圖像清晰度變化敏感,但計算較慢,不依程序運算的自動化。
本項目通過對圖像進行邊緣提取,計算其梯度數據,建立清晰度評判標準,從而進行單幀圖像的清晰度判定。
3.1.2圖像邊緣特征
圖像邊緣是指其周圍像素灰度有階躍性變化或屋頂型變化的像素的集合,是圖像最基本的特征之一,可以反映目標的清晰度。
一條理想的邊緣具有如圖3所示(a)模型的特征,這個模型生成的理想邊緣是一組相連像素的集合,每個像素都處在灰度級躍變的一個垂直臺階上。實際系統中,由于各種原因導致圖像模糊后,實際邊緣如3所示,(b)是一個過度的斜面。
從人眼視覺特性上,觀測目標是否清晰,關鍵在于目標與背景的邊緣上,如果邊緣銳利,圖像就比較清晰;如果邊緣過渡平緩,圖像就模
3.1.3清晰度算法
(1)先將圖片轉換為灰度圖,并申明為Ipllm age對象。核心代碼如下:
cvtColor(Input,gray,CV_BGR2GRAY);
Ipllmage tmp_image=Ipllmage (gray),
Ipllmage *img= tmp_image;
(2)求梯度
公式及算法思路:
令:平均梯度為X,位寬為s,總梯度為Y,總像素點為N。
則:
(3)分析數據可知,過渡區上的最大梯度值,與圖像的清晰度呈正比關系。并且,梯度的陡峭程度與清晰度呈正比關系。
(4)清晰度評價算法
第一,為達到客觀的評判,避免誤判視頻本身的模糊需求,在開始評測之前會進行主觀失焦評斷。結合人的主觀評斷和標準視頻流的清晰度標準來刻畫,這樣的評斷更客觀公正。具體實現界面如圖4。
第二,結合是否主動失焦以及標準流的判斷確定滿分標準,之后進行歸一化處理。處理后最終的評判標準如表2。
3.2亮度
3. 2.1亮度簡介
亮度是指發光體(反光體)表面發光(反光)強弱的物理量,是人對光的強度的感受。我們認為的亮度參數都是指白色的參數,然而想要更好地體現視頻的亮度,就不能只用白色的參數來表示亮度,故而引入了色彩亮度的概念。
3.2.2亮度評分算法
(1)將每一幀的圖片灰度化,并以mat矩陣存儲以方便刻畫行列,統計圖片中每個亮度值出現的個數,求出平均亮度。根據前期的主觀評測,選定動態閾值作為平均比較值。
(2)將每一個像素點的值與動態閾值作方差,計算出來的值即可在一定程度上表示圖片的平均亮度。
令動態閾值為
,每一個像素點的灰度值為x,則平均亮度的公式如下:核心代碼如下:
(3)最終亮度評斷標準如表3所不。
3.3色度
3.3.1色度簡介
色度的測量是對顏色的一種客觀評價,將色度這種度量最終以值的形式表示,有常見的幾種表現模型:CIE、RGB等。
在顏色感知的研究中,CIE 1931XYZ色彩空間是其中一個最先采用數學方式來定義的色彩空間。其中,色彩空間指的是用一種客觀的方式敘述顏色在人眼上的感覺,通常需要三色刺激值,即首先定義三種主要顏色,再利用顏色疊加模型來敘述各種顏色。CIE 1931色彩空間通常用XYZ三個值來表示三色刺激值。
CIE XYZ和CIE RGB可以相互轉換,具體轉換方式如下:
X=CxR(5)
X=0.49000R+0.31000G+0.20000B (6)
Y=0.17697R+0.81240G+0.01063B (7)
Z= O.OOOOOR+O.OlOOOG+0.99000B (8)
轉換按照等能白點轉換,即有約束:RGB(O.333,0.333,0.333)對應XY2(0.333,0.333,0.333).
3.3.2色度評分算法
(1)調用以下Opencv函數將RGB按照以上公式轉換成CIE形式。
cvtColor(Input,LABimg,C V_BGR2Lab)
(2)同樣調用Opencv里函數,得到a、b的值。其中a表示圖像的紅綠分量,b表示黃藍分量,根據這兩個分量可以判斷出圖像的色偏,為評分做準備。核心代碼如下:
dac= a/float (LABimg.rows*LABimg.cols),//a*表示圖像紅/綠分量,計算紅綠分量的平均值
dbc=b/float(LABimg.rows*LABimg.cols);//b*表示圖像黃/藍分量,計算黃藍分量的平均值
(3)最終利用a、b的值計算出L,根據L的大小來對色度進行評分。L的計算方式如下:
float D =sqrt(dac*dac+dbc*dbc);
Ma/= flo at( (LABimg.rows*LABimg.cols));
Mb/= float 《LABimg.rows*LABimg.cols));
float M=sqrt(Ma*Ma+Mb*Mb);
float K=D/M;
avr=K:
(4)通過rda, rdb得出整體色彩偏向,然后根據L得出最后得分如表4所示。
4 結語
本文在Android移動平臺上基于H.265視頻標準,開發了安卓手機本地視頻質量評測軟件。該測評軟件從視頻流暢度和視頻畫質兩個方面對視頻質量做出了測評,其中視頻流暢度包括視頻分辨率和幀率兩個部分,視頻畫質測評包括視頻清晰度、亮度和色度等三個部分。本文還分析了視頻測評體系建立過程,并闡述了五項評分的核心算法。本文還通過設計開發一個Android移動平臺軟件,方便用戶選擇視頻質量更好的流媒體,同時也利于運營商針對視頻存在的問題進行測評維修。這推動了整個流媒體服務器的發展,并且推廣了新一代視頻編解碼技術H.265。