目標檢測 一 背景差分法

2021-08-31 11:54:20 字數 1273 閱讀 7821

目標檢測是將運動的物體從背景中檢測出來,人們希望設計能適用於各種監控環境,不受光照、天氣等外界因素影響的目標檢測演算法。但這種演算法難免複雜度大,現有一些演算法大多是針對某一類問題提出的,主要包括背景減法、相鄰幀差法和光流法等

1.1背景減法

背景減法(backgroundsubtraction)是目前運動目標檢測的主流方法,其基本思想是將當前每一幀影象與事先儲存或實時獲取的背景影象相減,計算出與背景偏離超過一定閥值的區域作為運動區域。該演算法實現簡單,相減結果直接給出目標的位置、大小、形狀等資訊,能夠提供關於運動目標區域的完整描述,特別是對於攝像機靜止的情況,背景減法是實現運動目標實時檢測和提取的首選方法。

背景減法實現的關鍵是背景模型的獲取和更新。背景獲取演算法通常要求在場景中存在運動目標的情況下獲取背景影象,更新過程使背景能夠適應場景的各種變化和干擾,如外界光線的改變,背景中物件的擾動和固定物件的移動,陰影的影響等。一種典型的背景建模方法是用混合高斯模型描述背景影象畫素值的分布,目標檢測過程中判斷影象的當前畫素值是否符合該分布,若是被判為前景點,否則為背景點。同時根據新獲取的影象,對背景影象引數進行自適應更新。該方法能夠可靠處理光照變化、背景混亂運動的干擾以及長時間的場景變化等。在此基礎上,對背景、靜止目標和運動目標三者採取不同的更新策略,以減弱背景更新過程中運動目標對背景的影響。

1.2 bs演算法

opencv提供的bs演算法:

以下**將通過gmm和knn兩種方法,實現了實時檢測運動目標效果的對比。

**:

#include #include using namespace std;

using namespace cv;

int main(int argc, char** argv)

mat kernel = getstructuringelement(morph_rect, size(3, 3), point(-1, -1));

// intialization bs

ptrpmog2 = createbackgroundsubtractormog2();

//ptrpknn = createbackgroundsubtractorknn();

mat tmp_frame;

mat bsmaskmog2, bsmaskknn;

for (;;)

cap.release();

return 0;

}

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

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

運動目標檢測 背景減法

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

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...