目標檢測入門 幀差法,光流法和背景減法

2021-08-22 12:10:57 字數 2949 閱讀 8710

運動目標檢測的方法有很多種。根據背景是否複雜、攝像機是否運動等環境的不同,演算法之間也有很大的差別。其中最常用的三類方法是:幀間差分法、背景減法、光流場法。下面對這三類方法進行介紹,通過實驗結果,對它們各自的演算法效能進行分析,為進一步的目標檢測演算法研究建立良好的基礎。

幀間差分法(temporal difference)就是借鑑了上述思想。由於場景中的目標在運動,目標的影像在不同影象幀中的位置不同。該類演算法對時間上連續的兩幀或三幀影象進行差分運算,不同幀對應的畫素點相減,判斷灰度差的絕對值,當絕對值超過一定閾值時,即可判斷為運動目標,從而實現目標的檢測功能。

n和fn−1,兩幀對應畫素點的灰度值記為f

n(x,y)和f

n−1(x , y),按照式2.13將兩幀影象對應畫素點的灰度值進行相減,並取其絕對值,得到差分影象d

n:設定閾值t,按照式2.14逐個對畫素點進行二值化處理,得到二值化影象rn'。其中,灰度值為255的點即為前景(運動目標)點,灰度值為0的點即為背景點;對影象rn'進行連通性分析,最終可得到含有完整運動目標的影象rn。

兩幀差分法適用於目標運動較為緩慢的場景,當運動較快時,由於目標在相鄰幀影象上的位置相差較大,兩幀影象相減後並不能得到完整的運動目標,因此,人們在兩幀差分法的基礎上提出了三幀差分法。

n和fn−1,三幀對應畫素點的灰度值記為f

n+1(x , y) 、f

n(x , y) 和f

n−1(x , y) , 按照式2.13分別得到差分影象d

n+1和d

n,對差分影象d

n+1和dn按照式2.15進行與操作,得到影象dn',然後再進行閾值處理、連通性分析,最終提取出運動目標。 

在幀間差分法中,閾值 t 的選擇非常重要。如果閾值t選取的值太小,則無法抑制差分影象中的雜訊;如果閾值t選取的值太大,又有可能掩蓋差分影象中目標的部分資訊;而且固定的閾值t無法適應場景中光線變化等情況。為此,有人提出了在判決條件中加入對整體光照敏感的新增項的方法,將判決條件修改為:

其中, n 

a為待檢測區域中畫素的總數目,λ為光照的抑制係數,a可設為整幀影象。新增項

圖 2-5 是採用幀間差分法對**序列 lab 序列進行運動目標檢測的實驗結果,(b)圖是採用兩幀差分法的檢測結果,(c)圖是採用三幀差分法的檢測結果。lab序列中的目標運動較快,在這種情況下,運動目標在不同影象幀內的位置明顯不同,採用兩幀差分法檢測出的目標會出現「重影」的現象,採用三幀差分法,可以檢測出較為完整的運動目標。

綜上所述,幀間差分法的原理簡單,計算量小,能夠快速檢測出場景中的運動目標。但由實驗結果可以看出,幀間差分法檢測的目標不完整,內部含有「空洞」,這是因為運動目標在相鄰幀之間的位置變化緩慢,目標內部在不同幀影象中相重疊的部分很難檢測出來。幀間差分法通常不單獨用在目標檢測中,往往與其它的檢測演算法結合使用。

背景減法(background subtraction)是當前運動目標檢測技術中應用較為廣泛的一類方法,它的基本思想和幀間差分法相類似,都是利用不同影象的差分運算提取目標區域。不過與幀間差分法不同的是,背景減法不是將當前幀影象與相鄰幀影象相減,而是將當前幀影象與乙個不斷更新的背景模型相減,在差分影象中提取運動目標。

背景減法的運算過程如圖2-6所示。首先利用數學建模的方法建立一幅背景影象幀b,記當前影象幀為f

n,背景幀和當前幀對應畫素點的灰度值分別記為b(x,y )和f

n(x , y ) ,按照式2.17將兩幀影象對應畫素點的灰度值進行相減,並取其絕對值,得到差分影象d n:

設定閾值 t ,按照式2.18逐個對畫素點進行二值化處理,得到二值化影象 rn'。其中,灰度值為255的點即為前景(運動目標)點,灰度值為0的點即為背景點;對影象 rn'進行連通性分析,最終可得到含有完整運動目標的影象rn。

背景減法計算較為簡單,由於背景影象中沒有運動目標,當前影象中有運動目標,將兩幅影象相減,顯然可以提取出完整的運動目標,解決了幀間差分法提取的目標內部含有「空洞」的問題。

利用背景減法實現目標檢測主要包括四個環節:背景建模,背景更新,目標檢測,後期處理。其中,背景建模和背景更新是背景減法中的核心問題。背景模型建立的好壞直接影響到目標檢測的效果。所謂背景建模,就是通過數學方法,構建出一種可以表徵「背景」的模型。獲取背景的最理想方法是在沒有運動目標的情況下獲取一幀「純淨」的影象作為背景,但是,在實際情況中,由於光照變化、雨雪天氣、目標運動等諸多因素的影響,這種情況是很難實現。

實現思想:

利用光流場法實現目標檢測的基本思想是:首先計算影象中每乙個畫素點的運動向量,即建立整幅影象的光流場。如果場景中沒有運動目標,則影象中所有畫素點的運動向量應該是連續變化的;如果有運動目標,由於目標和背景之間存在相對運動,目標所在位置處的運動向量必然和鄰域(背景)的運動向量不同,從而檢測出運動目標。

通過計算光流場得到的畫素運動向量是由目標和攝像機之間的相對運動產生的。因此該類檢測方法可以適用於攝像機靜止和運動兩種場合。但是光流場的計算過於複雜,而且在實際情況中, 由於光線等因素的影響,目標在運動時,其表面的亮度並不是保持不變的,這就不滿足光流基本約束方程的假設前提,導致計算會出現很大的誤差。光流場法很少應用於實際的

OpenCV運動目標檢測背景差法和幀差法的理解

上圖使用absdiff影象減法函式,如下 二值化腐蝕膨脹學習,幀差法和背景差法對比測試 include includeusing namespace cv using namespace std int main int argc,char ar 幀差法也是使用absdiff影象減法函式,只不過是相...

python opencv 幀差法目標檢測

author qq群686070107 import cv2 import numpy as np camera cv2.videocapture 0 引數0表示第乙個攝像頭 if camera.isopened print open else print 攝像頭未開啟 size int camer...

運動目標檢測 光流法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!1950年gibson首先提出了光流的概念,光流 optical flow 法是空間運動物體在觀測成像面上的畫素運動的瞬時速度。物體在運動的時候,它在影象上對應點的亮度模式也在做相應的運動,這種影象亮度模式的表觀運動就是光流。光流的研究就是利用影象...