進入主題之前,先聊聊計算機視覺(jiào)。
計算(suàn)機視覺是指利用攝(shè)像頭和電腦識別、跟蹤和(hé)測量目標,並進行圖(tú)像處(chù)理,使其適合人眼觀察或儀器檢測。作為一個科學學(xué)科,計算機視覺模擬生物視覺,旨在實現圖像和視頻的“識別”和“理解”。
計(jì)算機視覺通過“理解”和“識別”,模仿人類視覺係統的能力,以便能(néng)夠理解和解釋我們環境中的視覺信(xìn)息,此能力亦使其成為許多行業(yè)和應用的關鍵技術。

計算(suàn)機視覺領域(yù)已形成相對(duì)成熟的核心技術,催(cuī)生(shēng)出完整的產業鏈,滲透到了國民經濟和居民(mín)生活的方方麵麵。本文所談濾幀技術是此領域的核心技術之一(yī),通過該技術實(shí)現圖(tú)像(xiàng)幀的篩選與過濾,目前(qián)普遍應用於視頻的識別與理解。
基於視頻的應用已(yǐ)非常廣泛,特別是在公(gōng)共安全方麵,公(gōng)安係統的(de)”天網”即非常有代表性,假如當時現場有一套密集人(rén)群分析係統(tǒng),首爾(ěr)梨泰院的踩踏事件就不(bú)會發生。(可(kě)以通(tōng)過對區域內單位麵積人員數量進行(háng)分析)

上圖所示為山(shān)火(huǒ)監控,其實現的邏(luó)輯是通(tōng)過攝像頭拍攝視頻完成輸入(rù),處理時將視頻以時間為單位(wèi)截成圖像;攝像頭後端(duān)通(tōng)過圖像識別技術來判(pàn)斷是否發(fā)生山火。由於山火是低頻率事件,通(tōng)過濾幀技術過濾重複圖像,實現山火監控的同時,可節省大量計算資源。
濾幀技術(shù)的本質是通過選擇或排除特定的圖像幀來優化視頻處理或分析任務(wù)。這(zhè)種技術可以根據各種因素來篩選圖像幀,包括但不(bú)限(xiàn)於(yú):圖(tú)像內容、場景(jǐng)變化(huà)程度等。濾幀技術(shù)的主要目標通常是(shì)減少需(xū)要(yào)處理(lǐ)的圖像幀數(shù)據量,提高(gāo)處理速(sù)度,以及提高後(hòu)續任務(如物體(tǐ)檢測、追蹤或行為識別)的精度。濾幀(zhēn)技術可以看作是一種預處理(lǐ)步驟。
當(dāng)前業界(jiè)針對濾幀技術的主要訴求是(shì)根據應用場景的需要,選擇關鍵圖像幀,減少圖像幀數(shù),提取重要信息(xī)。濾幀技術的需(xū)求是如何產生的呢?
視頻實際上就是一係列的圖(tú)像(xiàng)幀(或稱為“幀”),它們以特定的速率(通常是每秒24幀、30幀或60幀)連續播放(fàng)。每一(yī)幀都是(shì)靜態的圖像,而當這些幀(zhēn)以足夠(gòu)快的速度連續播放時,由於(yú)人眼的視覺暫留效應,我們(men)會感覺到圖像在移動,就形成了動(dòng)態的視頻(pín)。
實際應用中,視頻內容在一段時間內沒有變化,視頻的圖像幀(zhēn)將出現大量的重複,這(zhè)是一個非常普遍的現象。因此,過濾重複內容的圖像(xiàng)幀,在視頻識別與理解過程中顯得尤為必要。
濾幀技術是如何被應用的呢?

如上圖所示, “視頻截幀成圖(tú)像幀——圖像(xiàng)幀篩選——篩選好的圖像幀進行預測和識別”構成(chéng)視頻識別與理解的“通常鏈路”,無論是識別、測量、檢測還是定(dìng)位,基本上都是基於該鏈路實現。濾幀技術在視頻截幀成圖像(xiàng)之(zhī)後(hòu),主要承擔了圖像幀篩選。大(dà)量(liàng)的(de)實時監(jiān)控場景和海量的視頻數據,使得圖(tú)像幀篩選成為了不可(kě)或缺的環節。
濾幀的(de)價值在(zài)於,通過濾幀技術的預處(chù)理和篩選,可以從視頻流中(zhōng)提取出(chū)最有用的圖像幀,以滿足對應的需(xū)求,同時提高效率、節省計算資源、節省存儲空間。這在實(shí)時(shí)視頻監控、視頻(pín)摘要、視頻壓縮、視頻索引和快(kuài)速瀏(liú)覽等應用(yòng)中很(hěn)有用,對濾幀技(jì)術的探討和研(yán)究具有重(chóng)要意義。
針對(duì)濾幀技術的訴(sù)求(qiú)主要取決(jué)於具體(tǐ)應用場景和需求。不同的技術和算法可用於滿足不(bú)同的目標,以下總結濾幀技術的5種常用的實現方法(fǎ):
幀間差分(fèn)法:該技(jì)術通過比較連續幀(zhēn)之(zhī)間的像素(sù)差異來檢測圖像的(de)內容變化。通過計算當前幀與前一幀(zhēn)之(zhī)間的差異,可以獲得圖像(xiàng)內容的變化情況。這對於剔除冗(rǒng)餘(yú)幀圖像、剔除(chú)重複幀圖像和實現最優幀圖像篩選非(fēi)常有用。
光流(liú)估計法(fǎ):光流估計是一種通過分析圖像中的像(xiàng)素運動模式來獲取運(yùn)動信息的技術。具體算(suàn)法包括基於亮度(dù)約束的光流方法(fǎ)(如Lucas-Kanade光流)、基於匹配的光(guāng)流方法(fǎ)(如基於相關性的光(guāng)流(liú))和基於能量優化的光流(liú)方法(如Horn-Schunck光流、TV-L1光流)等。通過計算相鄰幀之間的(de)光流向量,可以獲得圖像中(zhōng)的運動信息。這對於檢測和篩選具有(yǒu)顯著運動的幀非常有用。
背景建模法:通過對視頻序列進行背景分析和理解,可以識別(bié)出重要的背景變化和關鍵事件。背(bèi)常(cháng)用的算法包括高斯混合模型、自適應背景(jǐng)模(mó)型、基於梯度的背景建模(mó)和基於學習的(de)背景建模。這些算(suàn)法通過建立(lì)背景模型,利用像素值、梯度等信息來識別前景對象。基於背景分析的(de)濾幀(zhēn)方法可以根據場景的變化情況選擇關鍵幀。
目標檢測算法:利用目標檢(jiǎn)測算法,可以識別(bié)視頻中的特定目標或關鍵物體。通(tōng)過選擇(zé)包含特定目標的幀作為關鍵幀,可以提取(qǔ)出重要的內容。算法具體實現包(bāo)括基於(yú)深度學習的目標檢測算法(如Faster R-CNN、YOLO、SSD等)和基於傳統特征的目標檢(jiǎn)測算法(如Haar特征和HOG特征結合的級聯分類器)等。
運動分析法:通過分析視頻序列中的運動模式和變化,可以選擇具有顯著運動的幀(zhēn)作為關鍵幀。常見的支持算法有運(yùn)動向量分析、運動邊緣檢測和運(yùn)動分割。運動向量分(fèn)析計算像素的位移,運動邊緣檢測捕捉運動物體的邊緣,運動分割將像素劃分為運(yùn)動和靜止部分。這些算法可以(yǐ)根據應(yīng)用需求選擇關鍵幀,提取視頻序(xù)列中的顯著運動信息(xī)。
上述濾幀技術可以(yǐ)單獨應用或結合使用,具體取決於應(yīng)用場(chǎng)景和(hé)需求。根據(jù)實際(jì)情況,還可以使用其(qí)他(tā)濾波技術或自(zì)定義算法(fǎ)來(lái)實現特定的濾幀(zhēn)效(xiào)果。
場景案例:某街道的占道經營實時監控
場景分析:在該場景下(xià),需通過攝像頭實時監控指定街道位置是否(fǒu)有小攤販在街道上違規占道經營。該街道在下午(wǔ)6點至次日淩晨2點這8小時的時間段,經常出現占道經營的情況。然而,在淩(líng)晨2點到當天(tiān)下午6點之間的這16小時之間,街道占道經營非常少。
技術分析(xī):典型的視頻分析類型應用,濾幀的訴(sù)求是最優幀(zhēn)篩,即剔(tī)除重(chóng)複的截(jié)幀圖(tú)像和冗餘的(de)截幀圖像(xiàng),篩選出圖像內容有變化的截幀圖像,用於識別是否有小攤(tān)販占道經營,可選擇幀(zhēn)間差分技術。
數據準備:選(xuǎn)取該街(jiē)道其中一路(lù)攝像(xiàng)頭,選取2天的監控視頻數據。


幀間差分技術流程引入如上圖所(suǒ)示,圖中灰色背景框內(nèi)的流(liú)程即為幀(zhēn)間差分,幀(zhēn)間(jiān)差分的實現,主要分為四(sì)個核心步驟:
第一步:計算前後幀差分圖
首(shǒu)先,針對前後兩幀(zhēn)的圖像進行作(zuò)差。計算方法是將當(dāng)前幀與上一幀之間的(de)絕(jué)對差異值計算出來,生成一幅差分圖。這可以通過opencv庫中(zhōng)的(de)主函數Absdiff實現。openCV是是由(yóu)Intel公司於1999年開發並在2000年首(shǒu)次(cì)發布的(de),後來由Willow Garage和Itseez等公司提供支持和貢獻(xiàn),這(zhè)是一個開源的計算機視覺庫(kù),提(tí)供了豐富的圖像處理和計算(suàn)機(jī)視覺算法的實現。差分圖有助於突出圖像中發生變化的區域,如下圖,將差(chà)分圖像轉(zhuǎn)換為灰度(dù)圖像。第一幀圖像作為背景,沒有(yǒu)人,第二幀圖像有(yǒu)人出現(xiàn),通過運算,得到了占道經營的整體輪廓:

第二步:提取差分圖的直方圖
其次,針對差分(fèn)圖,需(xū)要提(tí)取其直方圖。直方(fāng)圖是一種表達圖像中灰度分布的方法。它的 x 軸表示圖像,y 軸(zhóu)表示具有同一(yī)灰度(dù)值的像素點數目。通過直方圖,可以對整幅圖像的灰度分布有一個整體的了解。這可以通過opencv庫中主函數calcHist實現。針對上述的差分圖,會進行提取直方(fāng)圖,大部分像素值(即(jí)差值)接(jiē)近於0,因此產生的差值直方圖具有更大的峰值,如下圖:

第三步:計算直方圖的均方根值
計算直方圖的均方根值(RMS),以代表兩張圖之間的差異值。均方根值(RMS)是一種用(yòng)來(lái)衡(héng)量信號(hào)幅值的度量方法,其(qí)計算(suàn)過程包括先(xiān)平方和,再求平(píng)均值,然後開方。RMS 值可以有效地描述圖像差異程(chéng)度,其計算公式如下:


在(zài)得到(dào)的計算結果中,RMS值越大,表示兩張圖(tú)像的差異程(chéng)度越大(dà)。
第四步:比(bǐ)較閾值和差異值
最後,需要將計算出的差異值(RMS值)與預設的閾值進行比較。如果差(chà)異(yì)值大於閾值,則認為前後圖像發(fā)生了變化;如果差異值小於閾值,則認為圖像無(wú)變化。閾值可以(yǐ)根據不同場(chǎng)景的敏感(gǎn)度進行人工幹預設置。閾值越小,對於圖(tú)像變化(如光線、細(xì)小動作等)越(yuè)敏感。
本例選用(yòng)的是中敏(mǐn)感度識別,閾值為0.3
注:具體閾值可根據事件在視頻畫麵中的占比等實際場景情況設計閾值
案(àn)例占(zhàn)道經營監測中,有1/3的時(shí)間(jiān)存在明顯的變化需要進行實時計算和分析。幀間差分技術(shù)過濾無(wú)變化的圖像幀的比例為2/3。以每秒截取一幀圖像的頻率計算(suàn),一天的總幀數為24小時 * 3600秒/小時 = 86,400幀。根據上述比例,經過智能濾幀後,每天會被過(guò)濾掉的圖像幀數(shù)為86,400幀 * (2/3) = 57,600幀。與全量參與識別計算相比,濾掉了(le)大量(liàng)的無效計算,提(tí)升(shēng)了監測事件(占道經營)被發現的時(shí)效性,同時也(yě)節省了大約2/3的算力資源。

通過幀間(jiān)差(chà)分(fèn)技(jì)術實現的智能濾幀,可以提高視頻分析的效率,還能大大節省算力,這項技術對於需要實時(shí)響(xiǎng)應和持續監測的應用(yòng)場景具有重要的價值(zhí)。