張大禹,吳詩帆
(中國人民解放軍91550部隊,遼寧 大連 116000)
視頻信息作為網絡資源的重要載體,如何對其進行有效的處理和管理,是目前國內外在視頻處理方面研究的熱點[1]。目前,針對傳統的視頻數據處理技術,已經無法滿足現有的需求,于是,基于內容的視頻數據分析與檢索技術應運而生。在基于內容的視頻檢索中,鏡頭邊緣的檢測與關鍵幀的提取是其重要的技術[2]。但是,隨著計算機技術和互聯網技術的飛速發展,只依靠人工獲取關鍵幀的方法已不能滿足實際應用的需要,因此,利用計算機技術實現視頻關鍵幀數據的實時提取具有重要的理論意義和現實意義[3]。
梁建勝等[4]為了解決傳統的視頻處理技術存在的問題,本文采用了基于深度學習的方法,對視頻中的關鍵幀進行了提取,提出了一種基于小波測距技術的圖像檢索方案,并對各個場景進行了分類,選擇了特征最突出的圖像作為主要圖像。然后在卷積神經網絡的基礎上,采用無監督、半監督和監督3種方法,對卷積神經網絡進行了訓練,并將其用于關鍵幀的提取中。利用公開的數據集進行驗證,結果顯示,該方法在關鍵幀提取中的準確率更高,根據關鍵幀提取結果可以檢索出相關視頻。周舟等[5]利用手語識別的方式,提出一種關鍵幀提取算法,利用卷積自編碼算法對圖像進行K-means聚類,通過圖像的清晰度過濾,得到最清晰的圖像,并將其作為初始抽取的關鍵幀,通過對初始關鍵幀的二次優化,獲得了用于手勢識別的關鍵幀,結果表明,該方法在很大程度上消除了視頻中的冗余幀,提高了手語識別的準確性和有效性。
基于以上研究背景,本文利用互信息熵設計了全景視頻關鍵幀數據的實時提取系統,從而保證全景視頻的質量。
在全景視頻中,關鍵幀數據的實時提取能夠準確描述視頻的詳細內容,系統的硬件由視頻播放器、鏡頭邊界檢測器等主要設備組成,具體結構如圖1所示。

圖1 全景視頻關鍵幀數據提取系統硬件結構
如圖1所示,首先,獲取全景視頻與相關屬性信息,步驟如下:
1)數據支撐層。該層由數據采集模塊、數據存儲模塊、數據處理模塊組成。其中數據采集模塊包含攝像設備,例如,可以利用無人機采集全景視頻,將其傳輸至存儲模塊中。數據處理模塊包含圖像拼接單元,主要職責是對全景視頻進行融合處理,獲取全景大圖,并保存于全景數據庫中。數據存儲模塊中包含4種類型數據庫,系統管理數據庫用于存儲系統管理文件、運行參數等信息;業務數據庫的職責是保存與全景視頻關鍵幀相關的業務數據、功能數據等。全景數據庫用于存儲采集的視頻信息及全景大圖信息。熱點數據庫用于保存各熱點數據及其位置坐標,能夠對設備信息進行管理。通過熱點可顯示影像的具體屬性,并可呈現所有相關信息,為用戶全面掌握虛擬攝像機鏡頭拍攝的影像全景信息提供數據支持。在全景重建單元的Flash Player內可實現熱點增加、修改以及熱點位置坐標獲取等,并采用XML格式存儲,方便用戶查閱。
2)Web服務層。該層可提供編程接口,并為數據傳輸選擇合適路由,具備請求接聽等服務功能。
3)應用邏輯層。該層由業務處理單元、全景重建單元、全景瀏覽與交互單元構成。全景重建單元調用獲取的全景大圖,使之貼合于球面模型的表面,將虛擬攝像機嵌入在球面模型中心,并通過鼠標對其進行控制來進行角度調整,以此實現全景視頻關鍵幀場景的三維展示[6-8]。同時,該單元可從熱點數據庫中獲取熱點、位置數據,并提供屬性編輯功能。業務處理單元提供影像全景圖像預處理、影像監測預警、運營維護、故障分析等功能。其中影像全景圖像預處理可通過檢測攝影鏡頭拍攝的影像的邊緣,獲取影像邊緣特征圖像,為利用改進YOLOv3網絡完成影像監測預警提供數據支撐。
4)用戶層。通過該層實現虛擬攝像機鏡頭拍攝的影像全景監控的可視化呈現,向用戶展示影像全景視圖以及業務處理結果。
然后,視頻播放器通過打開全景視頻,利用控制選項對視頻進行播放、暫停、播放速度設置以及循環播放和全屏播放等功能,將全景視頻暫停可以分析該幀視頻的數據,通過判斷關鍵幀數據的質量,保留全景視頻中高質量關鍵幀數據;放慢視頻播放速度、循環播放和全屏播放可以讓用戶清楚觀察出任意一幀視頻的質量,為鏡頭邊緣檢測器對全景視頻關鍵幀數據的檢測和分割提供數據流支持。
最后,鏡頭邊緣檢測器的主要任務是對全景視頻的播放鏡頭進行檢測和分割,工作原理是先獲取視頻播放器中的全景視頻總幀數,提取出每一幀圖像的顏色特征和紋理特征,利用RGB與HIS的空間轉換[9],對每一幀圖像的顏色特征進行轉換,獲取全景視頻的幀差和閾值,通過提取出鏡頭內視頻的邊界幀,檢測出鏡頭邊界。
全景視頻關鍵幀數據提取是視頻檢索中的另一重要環節,其關鍵幀是鏡頭的代表性幀,利用關鍵幀技術實現對圖像的快速檢索,從而極大地降低了檢索所需的信息量,提高了視頻檢索的準確性。
在提取全景視頻關鍵幀數據的過程中,需要先對全景視頻進行預處理,全景視頻經過預處理之后,在全景視頻關鍵幀處理時,由于鄰近關鍵幀的不相關(非交迭區)大約占整個圖像的40%(此處對鄰近關鍵幀的交迭需要60%),會存在含有鏡頭邊界的片段[10-12],因此,若將兩個相鄰的幀圖像進行關聯運算,必然會提高誤判率,從而降低處理結果的精確性。檢測全景視頻圖像的突變幀時,只需要對鏡頭的突變邊界進行檢測即可。
如果直接在全景視頻中計算相鄰兩幀圖像的互信息熵,就會存在一定偏差,因此本文將待檢測的兩幀圖像隨機劃分為子圖像塊,通過計算子圖像塊之間的互信息熵,獲取全景視頻圖像的突變幀。
通過對全景視頻進行預處理[13],篩選出包含鏡頭邊界的候選視頻片段,將其表示為:
F={F1,F2,…,Fk,…}(k≤n)
(1)
其中:n代表全景視頻的片段數量。
將F中第一幀到最后一幀圖像的所有圖像進行相鄰兩幀組合,劃分成a×a個塊,計算出子圖像塊之間的互信息熵Ik,k+1。
對子圖像塊之間的互信息熵Ik,k+1進行反運算,得到:
(2)
將各個子圖像塊的熵值相加,計算全景視頻中,相鄰兩幀圖像的差值,公式為:
(3)
其中:N表示子圖像塊的數量。
利用相鄰兩幀圖像的差值[14-15],計算與Ck,k+1相鄰幀圖像的局部極大值,那么Ck,k+1對應的視頻幀就是鏡頭的突變邊界。
求解Ck,k+1的方差,分析其顯著性,如果|Ck,k+1|≥ζIk,k+1,說明全景視頻中相鄰兩幀圖像的相似性超過了用戶設定的閾值,將其作為鏡頭突變幀,如果|Ck,k+1|<ζIk,k+1,說明全景視頻中相鄰兩幀圖像的互信息熵沒有明顯變化,即不存在突變幀。
根據以上步驟,即可檢測全景視頻中的圖像是否存在的突變幀,為關鍵幀數據的特征匹配提供了質量保證。
利用計算機直接讀出圖象的灰度矩陣,避免了點特征的提取和匹配,降低了計算量,提高了處理速度。匹配全景視頻中關鍵幀數據的特征是關鍵幀提取的關鍵,根據全景視頻的圖像特征,獲取每一幀圖像的子區域灰度均值,給出具有m幀圖像的序列Xc,表示為:
(4)
其中:Gci代表全景視頻c中第i幀關鍵圖像。
利用全景視頻圖像序列Xc將[Gc1,Gc2,Gci]轉化為對應的灰度值[16],提取出全景視頻中關鍵圖像的時序特征,即:
Xf=n×{Af(1,k),…,Af(i,k)}
(5)
其中:Af(i,k)代表全景視頻f中,第i幀圖像在k范圍內的灰度均值。
在進行相關系數的計算時,如果將當前關鍵幀內的交疊區域看作是運動物體,而圖像被看作是靜態物體,則會發現,重疊區域會隨著拍攝時間的推移,逐漸地向圖像的后面移動,直到圖像完全消失。如果將a幀全景視頻U與b幀目標視頻V進行匹配[17],先計算出U和V在關鍵幀時序特征曲線的相鄰點差值,公式為:

(6)
將式(10)中關鍵圖像幀的特征差值曲線作為全景視頻關鍵幀的時序特征,對全景視頻中關鍵幀數據的特征進行匹配,為了消除突變因素對匹配效果的影響,引入異常因子ξ判斷關鍵幀數據的特征能否成功匹配[18],即:
(7)
其中:ΔSFV代表全景視頻中關鍵圖像幀的時域特征差值曲線,M代表全景視頻中包含的合格圖像幀數,K代表關鍵圖像幀的像素差值。
當異常因子在容忍范圍內,并且關鍵圖像幀的像素差值比用戶設置的閾值小,說明全景視頻中關鍵幀數據的特征成功匹配,通過對大量特征進行多項式擬合,可以近似擬合圖像中的相關系數的變化趨勢,特別是在數據量大、有一定規則的情況下,通過選取最好的多項式和抽樣時間,可以精確地反映出結果的微小差異(即,曲線擬合函數所得到的最大值和實際位置之間的差異很小),從而快速地確定數據的極值位置,在對圖像序列進行顏色、紋理、形狀、運動等方面進行分析的基礎上,選擇出能夠反映鏡頭整體內容的圖像序列。能夠快速、真實地反映出圖像的動態變化,計算效率高,擬合精度高,定位精度高。
關鍵幀數據提取過程可以降低視頻索引所需的信息量,并為視頻的查詢與檢索提供了一個有效的框架。其中,鏡頭邊緣檢測和透鏡邊緣探測是圖像處理中的兩大主要環節。
一支鏡頭的關鍵幀長度隨鏡頭長度及鏡頭內容的強弱而不同,隨著鏡頭長度的增加,鏡頭內容的改變速度會加快,該鏡頭的關鍵幀序列也會隨之延長,反之則會縮短。由于視頻本身就是一個龐大的數據流,如果算法太過復雜,就很難實現實時的處理。在全景視頻中提取關鍵幀數據時,需要選擇一個能夠體現全景視頻圖像屬性的特征,對視頻中的主要信息進行描述。利用數值化分析的方式[19],將全景視頻幀的特征轉換成數組形式的特征向量,該特征向量可以利用計算機識別得到,實現鏡頭的邊緣檢測和幀間相似度計算。
提取全景視頻圖像特征是全景視頻關鍵幀數據提取的重要環節,而透鏡邊緣探測的目標是把視頻分割成一系列的透鏡,透鏡是檢索、檢索和瀏覽的最小單元,利用互信息熵的屬性提取全景視頻的圖像特征,具體步驟如下:
Step1:將全景視頻的片段分割成n段,記作p1,p2,…,pn,由于每一個圖像幀在計算像素點的過程是獨立完成的,因此將GPU線程塊設置為32*32,每一個線程可以計算唯一一個視頻圖像區域的像素[20],還可以在1個宏模塊中計算4個16*16塊的互信息,最后得到3種類型分別為32*32、32*16和16*32的互信息值,表示為:
In={I1,2,I2,3,I3,4,…,Il,l+1}
(8)

(9)
(10)
(11)
其中:h代表全景視頻幀的灰度等級,pi(x)代表視頻i的圖像灰度概率,pj(y)代表視頻j的圖像灰度概率,pi,j(x,y)代表兩幀圖像的聯合灰度概率。
獲取R、G、B三個通道的互信息熵值之后,利用下式計算總的互信息熵值,即:
(12)
Step3:利用R、G、B三個通道總的互信息熵值,計算每段全景視頻中相鄰兩幀圖像的互信息標準差:
(13)

Step4:將Step3中的標準差σ與閾值λ作對比,如果σ<λ,說明全景視頻片段中的圖像內容不顯著,幀間相似度較大,反之執行Step5;
Step5:獲取最大信息熵值對應的圖像幀作為參考[21],并與其他信息熵比較,即:
E=2Ix-Imax
(14)
當E>0時,說明全景視頻中兩幀圖像的相似度較高,將其刪除,當E≤0時,說明全景視頻中兩幀圖像的相似度較低,將全景視頻中該幀圖像的位置進行標記,提取出被標記的視頻幀,將其作為全景視頻的關鍵幀,為后續的檢索、查詢、檢索和瀏覽提供了精確的依據。
為了驗證文中系統在提取全景視頻關鍵幀數據時的性能,搭建了如下實驗環境:
操作系統:Windows 7
CPU型號:Intel Core i9-4890
CPU頻率:4.8 GHz
RAM容量:8 GB
運行環境:Matlab 2018b
軟件開發包:OpenCV3.2
在3.1測試環境的基礎上,通過全景監控視頻、全景動畫視頻、全景體育視頻、全景電影視頻和全景新聞視頻進行實驗測試,各視頻數據如表1所示。
實驗過程中使用的所用視頻都采用AVI格式,每一段視頻中圖像幀的總長度為2 000幀~5 000幀。

表1 實驗測試視頻數據
為了檢驗文中系統的優越性,在相同的實驗條件下,采用基于深度學習的提取系統、面向手語識別的提取系統和文中提取系統對表1中視頻數據的關鍵幀進行提取,測試了全景視頻關鍵幀數據提取的查全率和查準率,計算公式為:
(15)
(16)
式中,Q代表全景視頻關鍵幀數據提取的查全率,Z代表查準率,Uc代表正確提取的關鍵幀數據量,Um代表漏選的關鍵幀數據量,Uf代表錯誤選擇的關鍵幀數據量。
將表1中的視頻數據導入到基于互信息熵的全景視頻關鍵幀數據提取系統中,以全景監控視頻為例,提取出全景監控視頻中的關鍵幀數據,結果如圖2所示。

圖2 關鍵幀數據提取結果
由圖2可知,文中系統能夠準確提取出全景監控視頻的關鍵幀數據,而且關鍵幀數據提取的響應頻率也比較穩定。
在性能測試中,采用基于深度學習的提取系統、面向手語識別的提取系統和文中提取系統,分別提取表1中5個類型視頻的關鍵幀數據,全景視頻關鍵幀數據提取的查全率和查準率測試結果如圖3、圖4所示。

圖3 全景視頻關鍵幀數據提取的查全率
由圖3可知,采用基于深度學習的提取系統和面向手語識別的提取系統時,提取全景視頻關鍵幀數據時的查全率在60%~80%之間,而文中系統提取全景視頻關鍵幀數據時的查全率在95%以上,說明采用文中系統時,全景視頻關鍵幀數據提取錯誤的概率較低,能夠保證關鍵幀數據提取的準確性。

圖4 全景視頻關鍵幀數據提取的查準率
由圖4可知,在查準率測試中,3個系統的性能較查全率都有所提高,基于深度學習的提取系統和面向手語識別的提取系統將全景視頻關鍵幀數據提取的差準率提升到80%以上,文中系統對5種類型視頻關鍵幀提取的查準率可以達到98%以上,能夠減少關鍵幀數據漏選的數量。
將互信息熵應用到全景視頻關鍵幀數據實時提取系統設計中。將待檢測的兩幀圖像隨機劃分為子圖像塊,通過計算子圖像塊之間的互信息熵,獲取全景視頻圖像的突變幀,將關鍵圖像幀的特征差值曲線作為全景視頻關鍵幀的時序特征,完成全景視頻中關鍵幀數據的特征匹配,選擇一個能夠體現全景視頻圖像屬性的特征,描述視頻中的主要信息,將全景視頻幀的特征轉換成數組形式的特征向量,通過計算互信息熵值,提取全景視頻關鍵幀數。經過實驗測試發現,該系統能夠準確提取出全景監控視頻的關鍵幀數據,并提高關鍵幀數據提取的查全率和查準率。
目前大多數視頻都是經過壓縮后的視頻,如果不經過解壓直接提取關鍵幀數據,就會加大關鍵幀數據提取的時間開銷,在今后的研究中,希望可以先對視頻進行解壓處理,保證關鍵幀提取的質量。