馬元元
【摘要】 隨著現代社會的高速發(fā)展,公共安全面臨著巨大的隱患,相應的視頻監(jiān)控也廣布在了城市的各處。傳統(tǒng)的利用人工快進和倒退,在海量的視頻摘要中提取有用的圖像和鏡頭不僅耗費大量的人力和物力,容錯的效率也成為了急于要解決的問題。本文正是基于上述問題,對Hadoop的視頻摘要技術的設計進行研究,并對如何利用Hadoop集群對視頻摘要的圖像進行高速、準確提取這一問題進行論述。
【關鍵詞】 視頻摘要 圖像提取 Hadoop集群技術 顯著特征檢測算法
一、引言
隨著社會的快速發(fā)展,我國社會的公共安全和網絡健康問題日益突出態(tài)勢日趨復雜和嚴峻。正因為如此,視頻摘要技術對城市公共場所視頻監(jiān)控的管理和互聯網海量未知視頻的鑒別承載了十分重要的意義。Hadoop分布式文件系統(tǒng)(HDFS)具有高容錯和可伸縮的特點,HDFS利用MapReduce引擎使用ffmepg將視頻切割為一幀一幀的圖像,然后將圖像轉換為Opencv視覺庫中的Face Recoginizer可識別的數據流。針對上述的處理需求,采用了SWS_SCALE算法和PCA(principal Componet Analysis) 顯著特征檢測算法對視頻摘要進行提取,在實驗驗證中,取得了較好的效果。
二、視頻摘要提取技術介紹
視頻摘要提取,一般是以自動化或者半自動的方法,通過對視頻結構和內容的分析,從原始的視頻文件中去除時空的冗余,提取有價值的視頻片段,并根據其特點象征重新排列組合成一段能夠表現視頻內容的濃縮視頻錄像。一般而言,視頻摘要主要分為靜態(tài)視頻摘要和動態(tài)的視頻摘要兩種。
靜態(tài)視頻摘要也稱為視頻的概述,指從原始視頻數據集合中抽取靜態(tài)語義單元片段,諸如標題語義、關鍵幀、矢量圖像等等視頻鏡頭語義的特征信息。目前,靜態(tài)視頻摘要的提取技術主要基于關鍵幀相似切割拼湊算法來實現,允許對原始視頻數據快速檢索和快速瀏覽。關鍵幀提取技術主要根據顏色對比、紋理特征和運動元素等視覺差異特征元素切割圖像,并最終合成一組視頻的短片。這種差異特征元素算法主要是依賴于閥值的選擇區(qū)間,并且選擇區(qū)間是根據相鄰幀之間對比計算閥值f(n),這樣不僅耗費大量的時間頻度T(n),也增加了問題的規(guī)模(n),即當n趨近于無窮大時,T(n)/f(n)的極限值為不等于0的常數,稱f(n)是T(n)的同數量級數,記作T(n)=O(f(n)),稱O(f(n))為計算的時間復雜度。
動態(tài)視頻摘要提取又稱動態(tài)視頻濃縮,一般分為影視視頻剪輯、專題視頻剪輯、一般視頻剪輯三種。影視視頻剪輯主要用于電影電視行業(yè),是對原始數據進行目的性、連貫性的剪輯和處理,專題視頻主要用于特定內容的專題報道。一般視頻剪輯采用通用的濃縮方法進行摘要提取。
動態(tài)視頻濃縮是在原始視頻基礎上,先進行特定場景建模,然后對原始視頻進行片段剪輯和目標摘要提取,進行靜態(tài)圖像排版、密集片段幀的插入,并配合背景模型植入。在原始視頻數據的提取中,因為數據量相對特定,目標對象相對連續(xù),在多軌道的剪輯中根據故事的主線不會丟失隱形的信息,來實現提取的視頻摘要無痕融合。
三、基于 Hadoop的視頻摘要提取的關鍵技術
Hadoop是一系列開源產品的組合,不僅可以對海量數據進行處理,也可以對多樣化類型的數據進行處理和分析。Hadoop實現了一個高容錯的分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱為HDFS,并且HDFS 和MapReduce組成了Hadoop的核心。因為原始數據本身就是一個視頻大文件,所以我們利用HDFS大數據分布式的特點進行讀取和小規(guī)模的隨機讀取,HDFS原則上可以存儲任何類型的數據,所以視頻數據可以不加任何處理的上傳到HDFS上。使用MapReduce對視頻數據進行分析后,根據設定的Block大小分割成64M或者128M大小的數據塊,分布式的存儲于集群的DataNode上,NameNode通過維護文件系統(tǒng)的元數據對文件進行管理,而面向user的是一個完整連續(xù)的文件,隱藏了分割細節(jié)。我們利用Hadoop對視頻摘要的提取并不能直接進行,因為分割存儲后幀不完整(即有可能缺少關鍵幀或者缺少頭數據)。所以我們按照Block起止位置進行定義,數據大小同Block大小相當,向前讀取,丟棄第一個關鍵幀之前的數據,確定Split的真正起始幀位置,Split的終止幀位置設定在Block結束字節(jié)位置附近,定義在結束字節(jié)位置之后的第一個幀。在此基礎上也用到ffmpeg分布式解碼庫,將原始視頻轉化為數據流,然后再使用MapReduce進行映射。
3.1 MapReduce
對于原始的視頻數據層疊到Hadoop分布式文件系統(tǒng)(HDFS)進行存儲,對較小的視頻文件進行合并處理或者HBase存儲圖像,MapReduce是一種通用執(zhí)行驅動引擎,可以對存儲的視頻文件進行分析,也可以通過HBase生成的HFile進行并行化、分布式處理。
MapReduce是一種云計算的核心計算模式,在處理海量的原始視頻時,通過ffmpeg對原始視頻進行解碼,MapReduce模式的主要思想是把分割要執(zhí)行的圖像拆解成map(映射)和reduce(簡化),流程圖如下所示:
MapReduce指定一個Map 函數,把鍵值對(key/value)映射成新的鍵值對(key/value),形成一系列中間結果形式的key/value 對,然后把它們傳給Reduce(規(guī)約)函數,把具有相同中間形式key 的value 合并在一起。Map 和Reduce 函數具有一定的關聯性。
3.2 OpenCV庫中的GrabCut切割算法和Eigen Recognition圖像識別算法
OpenCV是計算機視覺開源軟件庫。提供的視覺處理算法豐富不需要添加新的外部支持也可以完整的編譯鏈接生成執(zhí)行程序,實現背景估計和前景或后景分離。按照對目標物體的輸入條件,把對原始視頻切割的圖像進行拼接,展示目標或者過程,生成視頻摘要,保留用戶對原始視頻需要的活動細節(jié),做到對視頻的濃縮,并且可以保留目標片段在原始視頻中出現的時空順序和位置,并對無目標出現或者無運動的時間區(qū)域幀進行壓縮。在對視頻摘要的提取過程中主要運用到了OpenCV庫中的GrabCut切割算法和Eigen Recognition圖像識別算法。
Grabcut算法基本思想是:在視頻每一個關鍵幀的圖像上畫一個方框,grabCut默認方框內為前景,設置掩碼為2,方框外部都是背景,設置掩碼為0。在根據算法將方框內不檢查出來的背景位置掩碼由2改0。最后警告算法處理,方框中掩碼依然為2,即前景,其他為背景。算法函數如下:
void grabCut(InputArray img, InputOutputArray mask, Rect rect,
InputOutputArray bgdModel, InputOutputArray fgdModel, int iterCount,
int mode=GC_EVAL )
// img:待分割的源圖像,必須是8位3通道(CV_8UC3)圖像,在處理的過程中不會被修改;
// mask:掩碼圖像,大小和原圖像一致??梢杂腥缦聨追N取值:GC_BGD(=0),背景; GC_FGD(=1),前景;GC_PR_BGD(=2),可能的 GC_PR_FGD(=3),可能的前景。
// rect:用于限定需要進行分割的圖像范圍,只有該矩形窗口內的圖像部分才被處理;
// bgdModel:背景模型,如果為null,函數內部會自動創(chuàng)建一個 bgdModel;
// fgdModel:前景模型,如果為null,函數內部會自動創(chuàng)建一個fgdModel;
// iterCount:迭代次數,必須大于0;
// mode:用于指示grabCut函數進行什么操作??梢杂腥缦聨追N選擇:
GC_INIT_WITH_RECT(=0),用矩形窗初始化GrabCut;
GC_INIT_WITH_MASK(=1),用掩碼圖像初始化GrabCut;
GC_EVAL(=2),執(zhí)行分割。
Eigen Recognition圖像識別算法是基于集合特征生物臉識別:標記點(眼睛、耳朵、鼻子等的位置)構造一個特征向量(點與點之間的距離、角度等)。通過計算特征向量的歐氏距離來進行識別,這種方法對光的變化也是很穩(wěn)健的。對特征提取的方法有蓋伯小波(Gabor Waelets),離散傅立葉變換(DCT),局部二值模式(LBP)。圖像表示的高維問題,二維灰度圖像x*y大小是一個ɑ=xy維的向量空間,所以一個100×100px圖像就是10,000維的圖像空間。我們可以通過主成分分析(PCA)一個高維數據集被相關變量表示,相關的變量轉換成一個最大方差的向量,被稱為主成分。
算法描述:
X={x1,x2,…,xn}表示一個隨機特征,其中xi∈Rd
1.計算均值向量μ
3.計算特征值λi和對應的特征向量vi
Svi=λivi,i= 1,2,…,n
4.對特征值進行遞減排序,特征向量和它順序一致。K個主成分就是k個最大的特征值對應的特征向量。
X的K個主成分:y=W T(x-μ)
其中:W=(v1,v2,…,vk)
PCA的基重構:x=Wy+μ
其中:W=(v1,v2,…,vk)
如上所述,會出現一個問題,比如說我們有400個切割的矢量圖,每張100×100px,那么PCA需要解決協方差矩陣S=XXT,而X的大小10000*400,得到的大小矩陣是10000×1000,這大概需要800m的內存。正因為如此我們必須配合使用hadoop的HDFS層疊分布式存儲技術,才能有效解決大數據量的內存需求。
總結:基于Hadoop對視頻摘要技術的實現,不僅解決了海量的原始視頻存儲問題,也高效的、準確的提高了對公共安全和網絡視頻鑒別的困難。通過MapReduce快速高效的處理和分析能夠實時查看分析過程中的快照輸出,能夠支持高并發(fā)、密集型的場景,提高圖像處理速度和質量。
參 考 文 獻
[1]劉剛,侯賓,翟周偉.Hadoop開源云計算平臺[M],北京:北京郵電大學出版社,2011,08
[2]張良將基于Hadoop云平臺的海量數字圖像數據挖掘的研究.上海,上海交通大學,2013
[3]歐陽建權,李錦濤,張勇東視頻摘要技術綜述[J]計算機工程,2005.5.30