進入主題之前,先聊聊計算機視覺。
計算機視覺是指利用攝像頭和電腦識別、跟蹤和測量目標,并進行圖像處理,使其適合人眼觀察或儀器檢測。作為一個科學學科,計算機視覺模擬生物視覺,旨在實現圖像和視頻的“識別”和“理解”。
計算機視覺通過“理解”和“識別”,模仿人類視覺系統的能力,以便能夠理解和解釋我們環境中的視覺信息,此能力亦使其成為許多行業和應用的關鍵技術。

計算機視覺領域已形成相對成熟的核心技術,催生出完整的產業鏈,滲透到了國民經濟和居民生活的方方面面。本文所談濾幀技術是此領域的核心技術之一,通過該技術實現圖像幀的篩選與過濾,目前普遍應用于視頻的識別與理解。
基于視頻的應用已非常廣泛,特別是在公共安全方面,公安系統的”天網”即非常有代表性,假如當時現場有一套密集人群分析系統,首爾梨泰院的踩踏事件就不會發生。(可以通過對區域內單位面積人員數量進行分析)

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

如上圖所示, “視頻截幀成圖像幀——圖像幀篩選——篩選好的圖像幀進行預測和識別”構成視頻識別與理解的“通常鏈路”,無論是識別、測量、檢測還是定位,基本上都是基于該鏈路實現。濾幀技術在視頻截幀成圖像之后,主要承擔了圖像幀篩選。大量的實時監控場景和海量的視頻數據,使得圖像幀篩選成為了不可或缺的環節。
濾幀的價值在于,通過濾幀技術的預處理和篩選,可以從視頻流中提取出最有用的圖像幀,以滿足對應的需求,同時提高效率、節省計算資源、節省存儲空間。這在實時視頻監控、視頻摘要、視頻壓縮、視頻索引和快速瀏覽等應用中很有用,對濾幀技術的探討和研究具有重要意義。
針對濾幀技術的訴求主要取決于具體應用場景和需求。不同的技術和算法可用于滿足不同的目標,以下總結濾幀技術的5種常用的實現方法:
幀間差分法:該技術通過比較連續幀之間的像素差異來檢測圖像的內容變化。通過計算當前幀與前一幀之間的差異,可以獲得圖像內容的變化情況。這對于剔除冗余幀圖像、剔除重復幀圖像和實現最優幀圖像篩選非常有用。
光流估計法:光流估計是一種通過分析圖像中的像素運動模式來獲取運動信息的技術。具體算法包括基于亮度約束的光流方法(如Lucas-Kanade光流)、基于匹配的光流方法(如基于相關性的光流)和基于能量優化的光流方法(如Horn-Schunck光流、TV-L1光流)等。通過計算相鄰幀之間的光流向量,可以獲得圖像中的運動信息。這對于檢測和篩選具有顯著運動的幀非常有用。
背景建模法:通過對視頻序列進行背景分析和理解,可以識別出重要的背景變化和關鍵事件。背常用的算法包括高斯混合模型、自適應背景模型、基于梯度的背景建模和基于學習的背景建模。這些算法通過建立背景模型,利用像素值、梯度等信息來識別前景對象?;诒尘胺治龅臑V幀方法可以根據場景的變化情況選擇關鍵幀。
目標檢測算法:利用目標檢測算法,可以識別視頻中的特定目標或關鍵物體。通過選擇包含特定目標的幀作為關鍵幀,可以提取出重要的內容。算法具體實現包括基于深度學習的目標檢測算法(如Faster R-CNN、YOLO、SSD等)和基于傳統特征的目標檢測算法(如Haar特征和HOG特征結合的級聯分類器)等。
運動分析法:通過分析視頻序列中的運動模式和變化,可以選擇具有顯著運動的幀作為關鍵幀。常見的支持算法有運動向量分析、運動邊緣檢測和運動分割。運動向量分析計算像素的位移,運動邊緣檢測捕捉運動物體的邊緣,運動分割將像素劃分為運動和靜止部分。這些算法可以根據應用需求選擇關鍵幀,提取視頻序列中的顯著運動信息。
上述濾幀技術可以單獨應用或結合使用,具體取決于應用場景和需求。根據實際情況,還可以使用其他濾波技術或自定義算法來實現特定的濾幀效果。
場景案例:某街道的占道經營實時監控
場景分析:在該場景下,需通過攝像頭實時監控指定街道位置是否有小攤販在街道上違規占道經營。該街道在下午6點至次日凌晨2點這8小時的時間段,經常出現占道經營的情況。然而,在凌晨2點到當天下午6點之間的這16小時之間,街道占道經營非常少。
技術分析:典型的視頻分析類型應用,濾幀的訴求是最優幀篩,即剔除重復的截幀圖像和冗余的截幀圖像,篩選出圖像內容有變化的截幀圖像,用于識別是否有小攤販占道經營,可選擇幀間差分技術。
數據準備:選取該街道其中一路攝像頭,選取2天的監控視頻數據。


幀間差分技術流程引入如上圖所示,圖中灰色背景框內的流程即為幀間差分,幀間差分的實現,主要分為四個核心步驟:
第一步:計算前后幀差分圖
首先,針對前后兩幀的圖像進行作差。計算方法是將當前幀與上一幀之間的絕對差異值計算出來,生成一幅差分圖。這可以通過opencv庫中的主函數Absdiff實現。openCV是是由Intel公司于1999年開發并在2000年首次發布的,后來由Willow Garage和Itseez等公司提供支持和貢獻,這是一個開源的計算機視覺庫,提供了豐富的圖像處理和計算機視覺算法的實現。差分圖有助于突出圖像中發生變化的區域,如下圖,將差分圖像轉換為灰度圖像。第一幀圖像作為背景,沒有人,第二幀圖像有人出現,通過運算,得到了占道經營的整體輪廓:

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

第三步:計算直方圖的均方根值
計算直方圖的均方根值(RMS),以代表兩張圖之間的差異值。均方根值(RMS)是一種用來衡量信號幅值的度量方法,其計算過程包括先平方和,再求平均值,然后開方。RMS 值可以有效地描述圖像差異程度,其計算公式如下:


在得到的計算結果中,RMS值越大,表示兩張圖像的差異程度越大。
第四步:比較閾值和差異值
最后,需要將計算出的差異值(RMS值)與預設的閾值進行比較。如果差異值大于閾值,則認為前后圖像發生了變化;如果差異值小于閾值,則認為圖像無變化。閾值可以根據不同場景的敏感度進行人工干預設置。閾值越小,對于圖像變化(如光線、細小動作等)越敏感。
本例選用的是中敏感度識別,閾值為0.3
注:具體閾值可根據事件在視頻畫面中的占比等實際場景情況設計閾值
案例占道經營監測中,有1/3的時間存在明顯的變化需要進行實時計算和分析。幀間差分技術過濾無變化的圖像幀的比例為2/3。以每秒截取一幀圖像的頻率計算,一天的總幀數為24小時 * 3600秒/小時 = 86,400幀。根據上述比例,經過智能濾幀后,每天會被過濾掉的圖像幀數為86,400幀 * (2/3) = 57,600幀。與全量參與識別計算相比,濾掉了大量的無效計算,提升了監測事件(占道經營)被發現的時效性,同時也節省了大約2/3的算力資源。

通過幀間差分技術實現的智能濾幀,可以提高視頻分析的效率,還能大大節省算力,這項技術對于需要實時響應和持續監測的應用場景具有重要的價值。