天天看點

用MATLAB實作對運動物體識别與跟蹤

不得不說matlab的圖像處理函數有點多,但速度有時也是出奇的慢。還是想c的指針,雖然有點危險,但速度那是杠杠的。

第二個matlab程式,對運動物體的識别與追蹤。

這裡我們主要運用幀差法實作運動物體與背景圖像的分離,由于視訊中的物體較為簡單,我們隻對兩幀圖像取幀差(也是為了提高速度)

對于運動物體的提取我們運用了matlab裡自帶的函數bwareaopen

bwareaopen(src,int),src為二值圖像,int為設定的聯通域的大小,是對幀差法,在轉化為二值的圖像進行操作,結果是将大小小于設定的int的連通域置為0;

對于第一幀與第二幀圖像運動物體的坐标的提取我們用了自帶的regionprops函數

regionprops(src,’‘)其中src為傳入的二值圖像,’‘内的為你所需要的屬性

具體屬性可以檢視matlab的help

用MATLAB實作對運動物體識别與跟蹤

這裡我們選用了其中的centroid屬性,傳回的時連通域的質心坐标,注傳回的第一個值為橫坐标,第二個值為縱坐标~

對于運動物體的追蹤我們用了質心追蹤,

在第一二三兩幀的幀間差的運動物體的質心求出來後,将質心做差得到的向量預測下一幀間差運動物體可能到達的位置,接下來在對這個位置進行局部的找質心,再做差如此循環。

追蹤大緻如圖(畫的不好):

用MATLAB實作對運動物體識别與跟蹤

這個相對與全局再次進行bwareaopen,regionprops,速度應該會快一下,而且這是進行局部地搜尋是以可以減小背景,或其他噪聲的影響。

用MATLAB實作對運動物體識别與跟蹤

如圖為直接進行幀間差分後的轉化的二值圖像,即使噪聲很大用局部追蹤也能跟上。

具體代碼:

fanction:

draw-rect

追蹤效果:

用MATLAB實作對運動物體識别與跟蹤
用MATLAB實作對運動物體識别與跟蹤

時間:

用MATLAB實作對運動物體識别與跟蹤

注(畫框函數引用網上現有的)

可能是matlab問題,這段視訊為4k,無法直接讀取,是以隻能将其轉化為圖檔逐幀讀取。

結果是還是太慢,而且不能預讀取,好像用這個無法實時,可能與圖檔為4k也有點關系有點傷

繼續閱讀