宋 寧 , 尚振宏 ,劉 輝 , 舒國鋒
(1.昆明理工大學 信息工程與自動化學院,云南 昆明 610000;2.昆明理工大學 云南省計算機技術應用重點實驗室,云南 昆明 610000)
運動目標檢測是目標識別、跟蹤的難點和關鍵環(huán)節(jié),目標提取的好壞直接影響處理結果。而在運動目標檢測中遇到最多的問題是提取的前景不準確,受環(huán)境影響噪聲較多,且陰影難消除。很多文獻也提出了改進方法,常用的經典算法有:背景差分、混合高斯背景模型、幀差法等。背景差分[1]首先構建一個背景圖像,然后利用當前幀圖像與背景圖像相減,得到差分圖像,通過閾值分割來提取目標。混合高斯模型[2]使用K個(基本為3~5個)高斯模型來表征圖像中各個像素點的特征,在新一幀圖像獲得后更新混合高斯模型,用當前圖像中的每個像素點與混合高斯模型匹配,如果成功,則判定該點為背景點,否則為前景點?;旌细咚贡尘澳P蜋z測運動目標易出現陰影,而對陰影的去除目前存在較大困難。幀差法通過視頻流中相鄰兩幀或3幀圖像相減,根據差分圖像來檢測目標。常用的相鄰差分法檢測目標存在兩幀目標重疊部分不易檢測、出現虛假目標等問題。一般來說,圖像的邊緣信息不易受噪聲和亮度突變的影響。本文提出一種邊緣差分的思想,將傳統(tǒng)Sobel算子邊緣檢測應用到彩色圖像邊緣檢測,將邊緣檢測與幀間差分相結合,很好地克服了陰影以及噪聲的影響,經形態(tài)學處理最后得到較為清晰準確的運動目標。
邊緣檢測算法的基本步驟為:濾波、增強、檢測和定位。經典的檢測算法主要采用梯度算子,常用的梯度算子有Sobel算子、Prewitt算子、Canny算子、Laplacian算子和LOG算子[3]等。
Sobel算子把重點放在接近于模板中心的像素點,是邊緣檢測器中最常用的算子之一。
1.1.1 Sobel算法原理
由于圖像邊緣附近的亮度變化比較大,因此把那些鄰域內灰度超過某個值的像素點當作邊緣點。算法的主要步驟如下。
(1)分別將兩個方向模板沿著圖像從一個像素移動到另一像素,并將像素的中心與某個像素位置相重合;
(2)將模板內的系數與其圖像上相對應的像素值相乘;(3)將所有相乘的值相加;
(4)將兩個卷積的最大值賦給圖像中對應模板中心位置的像素作為該像素新的灰度值;
(5)選取合適的閾值TH,若新像素灰度值≥TH,則判斷該像素點為圖像邊緣點。
Sobel算子也是一種梯度幅值[4],其梯度計算公式為:
其中,Gx、Gy分別為像素的水平方向梯度和垂直方向梯度。
圖1(a)為一幅圖像的 3×3區(qū)域,圖 1(b)和圖 1(c)分別為Sobel算子水平方向和垂直方向的梯度算子,則圖1(a)中z5像素點的水平方向和垂直方向梯度向量可近似計算為:
圖1 圖像3×3區(qū)域及水平和垂直方向的梯度
1.1.2 Sobel算子彩色圖像邊緣檢測的實現和改進
本文算法針對彩色圖像,建立水平方向和垂直方向的彩色分量圖[5],具體步驟如下。
(1)遍歷一幅彩色圖像,取圖像上像素的顏色值;
(2)將像素的R、G、B灰度值分別賦給水平方向和垂直方向彩色分量圖對應像素的R、G、B值;
(3)分別計算原圖像中像素的R、G、B分量在水平和垂直方向與模板(掩膜)卷積的累加值,卷積模板選用上述Sobel核,Sobel算子使用權重2的思想是通過突出中心點的作用而達到平滑的目的;
(4)將累加值除以某個權重,取絕對值賦給上述分量圖的 R、G、B 值;
(5)用式(1)計算該像素的 R、G、B梯度值,賦給原圖像對應的R、G、B值,得到彩色邊緣圖像。
Sobel算子利用像素的上、下、左、右鄰域的灰度值加權算法,算法利用圖1(a)所示的模板分別與圖 1(b)和圖1(c)所示的兩個核做卷積,一個核對垂直邊緣影響最大,而另一個核對水平邊緣影響最大。該方法不但產生較好的檢測效果,而且對噪聲具有平滑作用,可以提供較為精確的邊緣,因此選用Sobel算子進行邊緣檢測,結合后面的幀差分,可以得到準確、良好的邊緣輪廓圖像[6]。
幀間差分[7]主要利用視頻序列中連續(xù)的兩幀或幾幀圖像的差異來檢測運動目標。幀間差分的表達式為:
其中,In(x,y)表示在第 n幀(x,y)處的像素灰度值;In-1(x,y)表示在第 n-1幀(x,y)處的像素灰度值;Dn(x,y)表示差分后在(x,y)處的像素灰度值;Bn(x,y)表示差分圖像二值化后像素灰度值;T為設定的閾值。
當運動目標速度較慢時,目標變化可能不大,幀間差分會產生孤立點的噪聲。為避免目標丟失,可選取連續(xù)3幀或4幀圖像兩兩相減進行與運算,得到運動目標。本文采用連續(xù)4幀圖像進行差分。連續(xù)4幀差分是相鄰兩幀差分算法的一種改進方法,它選取連續(xù)4幀的圖像,消除兩幀差分目標重疊部分不易檢測的缺點,從而提取精確的運動目標輪廓信息。
設視頻圖像序列中連續(xù) 4幀圖像分別為In(x,y)、In+1(x,y)、In+2(x,y)、In+3(x,y),將第 1 幀圖像與第 3 幀圖像、第2幀與第4幀圖像作差分:
對得到的差值圖像選取適當的閾值T進行二值化,得到的二值化圖像為:
在每一個點(x,y)處將得到的二值圖像邏輯相與,得到二值圖像Bn(x,y):
本文算法的流程如圖2所示。
用本文提出的改進Sobel算子彩色圖像邊緣檢測方法從視頻流中提取連續(xù)的4幀圖像,得到它們的邊緣圖像,然后用上述4幀差分的思想作邊緣圖像的隔幀差分,得到準確、噪聲很小的運動目標邊緣輪廓。
2.3.1 腐蝕運算
腐蝕是指用某種形狀的基元對一個圖像進行探測,以便找出在圖像中能夠放下該基元的區(qū)域。集合A被集合 B腐蝕,表示為AΘB,其定義為
式中,?表示子集關系。A為輸入元素,B為結構元素。AΘB由將B平移x但仍包含在A內的所有 x點組成。如果將B看作模板,那么AΘB則由在平移模板的過程中所有可以填入A內部的模板的原點組成。
腐蝕的方法:用B的中心點與A上的每一點依次比較,若B上所有點都在A內,則保留該點,否則,刪除該點。
2.3.2 膨脹運算
膨脹定義為:
膨脹通過相對結構元素的所有點平移輸入圖像,然后計算其并集得到。如果結構元素為一個圓盤,那么膨脹可填充圖像中的小孔以及在圖像邊緣處的小凹陷部分。
膨脹的方法:用B的中心點與A上的點以及A周圍的點逐個比較,若B上有一個點落在A中,則該點就為黑點。
對運動物體的目標輪廓進行形態(tài)學處理,選取自定義的結構元素進行腐蝕膨脹操作,從而將運動目標完整地檢測出來。
對比傳統(tǒng)Sobel算子灰度邊緣檢測和本文方法,對室外行人運動視頻流進行檢測,結果如圖3所示。左邊一列分別為原圖第20幀、第50幀、第100幀,中間為傳統(tǒng)Sobel算子灰度邊緣檢測結果,右邊一列為本文提出的Sobel算子彩色邊緣檢測結果。
3幀圖像經形態(tài)學處理后的結果如圖4所示。
從視頻流中截取3幀圖像,分別使用傳統(tǒng)Sobel算子和本文算法作邊緣差分,可以看出,傳統(tǒng)Sobel算子灰度邊緣檢測結果邊緣較粗,邊緣部分噪聲較多,造成交叉處的輪廓不清晰;而用本文方法檢測得到的運動行人邊緣較細,提取出的邊緣輪廓精確,最后通過形態(tài)學操作填充輪廓,便可得到噪聲較少的運動行人。相比于其他算法,該方法在行人陰影較大的場景有著其顯著優(yōu)勢,能很好地克服陰影帶來的影響,精確檢測到行人。
[1]于仕琪,劉瑞禎.OpenCV教程:基礎篇[M].北京:北京航空航天大學出版社,2007.
[2]PONG P K T K,BOWDEN R.An improved adaptive back ground mixture model for real-time tracking with shadow detection[C].Proceedings of 2nd European Workshop on Advanced Video Based Surveillance Systems,AVBS01.Kluwer Academic Publishers,2001:1-5.
[3]段瑞玲,李慶詳,李玉和.圖像邊緣檢測方法研究綜述[J].光學技術,2005,31(3):415-419.
[4]GONZALEZ R C,WOODS R E.數字圖像處理(第二版)[M].阮秋琦,阮宇智,譯.北京:電子工業(yè)出版社,2007.
[5]黃偉,周鳴爭,李小牛.一種基于四元數的彩色圖像邊緣檢測改進算法[J].計算機技術與發(fā)展,2008,18(3):121-124.
[6]甘明剛,陳杰,劉勁,等.一種基于三幀差分和邊緣信息的運動目標檢測方法[J].電子與信息學報,2010(4):894-897.
[7]朱明旱,羅大庸,曹倩霞.幀間差分與背景差分相融合的運動目標檢測算法[J].計算機測量與控制,2005,13(3):215-217.