運動元素提取,基於幀間差分與背景差分

2022-09-17 06:03:09 字數 3904 閱讀 9995

對於某些運動元素的提取,我們仍然可以依據靜態影象提取的方法,比如r-g分量差提取等,前提是目標有某些獨有的特徵。考慮一幅運**像——

目標是運動的,背景是禁止的,目標以紅色為主,背景含有區域性靜止的紅色。像這種情況單從靜態方法分析就很難了。

對於類似上述的影象,最簡單的提取方法是幀間差分與背景差分。這兩種演算法過程簡單,但侷限性也明顯:幀間差分容易濾掉靜止的元素,但提取的

影象會不完整(有時會只有目標的輪廓),而且比較依賴幀速,幀速慢容易導致ghost現象(提取到兩個目標),幀速快可能誤判為靜止元素而被濾除。背

景差分可以提取比較完整的目標,但背景的更新是個難題(如原本的運動體在視野範圍靜止後需要將其歸入背景,原本靜止的運動體開始運動後需要將其從

背景裡剔除,並且背景的更新同時還要保證提取的完整性)。

對於幀間差分,通常採用三幅影象的後向差分,可以很好地避免ghost現象;而背景差分可以用兩幅影象與背景差分,將差分結果的相同部分在背景裡

更新。本文只**最基本的演算法實現。

幀間差分:

下圖是三幅影象的合成圖,可以看到左邊紅車的位移,右邊紅車完全靜止,如果採用r-g分量不能單獨提取出運動車輛。採用三幀間差分的效果左圖:

背景差分:

依然以上面例子為例(省去靜止的紅車),選擇三幅影象。

首先是三次位移的背景,第一次直接取第一幅影象,這裡採用r-b分量差來灰度化(避免斑馬線的干擾),後兩幅都是更新所得:

然後是三次讀取的原影象,採用r-b分量差來灰度化:

最後是背景差分提取的結果:

需要說明的是,這三幅圖選得並不連續,如果連續的話,存在車重疊現象,這樣比較難更新背景,可能會有更好地演算法來消除這個bug!

以下是matlab**測試**:

%三幀間差分

%自更新的背景差分

function backgrounddiff(videofile,start_index,end_index,step,thres)

video=videoreader(videofile);

frame_amount=video.numberofframe;

width=video.width;

height=video.height;

if (end_index>frame_amount)

end_index=frame_amount; %防止索引出界

background(j,k)=curframe(j,k);%更新背景

opencv利用幀差法背景差分實現運動目標檢測

本博文主要介紹背景差法與幀差法 背景差法 就是用原影象減去背景模型,剩下的就是前景影象,即運動目標 幀差法 就是利用相鄰的兩幀或者三幀影象,利用畫素之間的差異性,判斷是否有運動目標 背景減法基本步驟 原圖 背景 閾值處理 去除雜訊 腐蝕濾波 膨脹連通 查詢輪廓 外接矩形 橢圓 圓 乙個攝像頭 inc...

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

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

幀間差分自適應

一 目標提取 對 序列中相鄰 兩幀影象進 行幀間差 分得到運 動區域影象 運動區 域圖形與 背景影象進 行差分提 取出運動目 標影象,運 動目標影象與閾值 比較得到 二值化影象 a 對ak i,j 中每一對相鄰兩幀影象進行差分處理,獲得幀差影象dk i,j b 將幀差影象dk i,j 與背景影象bk...