【數字圖像處理】幀差法與Kirsch邊緣檢測實現運動目標識別與分割


本文鏈接:https://blog.csdn.net/qq_18234121/article/details/82763385

作者:凍人的藍鯨梁思成

視頻分割算法可以從時域和空域兩個角度考慮。時域分割算法利用視頻流時域連續性,通過 相鄰幀的時域變化來檢測運動目標。在攝像頭靜止的情況下,常用的方法有幀差法減背景法

        幀差法比較直觀實用,對光照的變化干擾不敏感,但是 對目標的檢測不准確,對於緩慢運動的目標甚至可 能無法提取出目標邊界,對於快速運動的目標提取 出的目標區域又過大。減背景法容易得到目標的准 確描述,對靜止和非靜止的目標都適用,但是背景更新的計算量比較大,還必須建立合適的模型,同時在 背景大幅運動的場合也不適用。

        空域分割算法利用圖像的空域屬性( 顏色、 亮度、紋理以及邊緣信息等) 來提取視頻對象。例 如基於邊緣的目標提取算法,雖然算法能檢測出精 確的圖像邊緣,但是檢測過程存在較大的盲目性,檢 測出的邊緣不僅包括所需要的運動目標的邊緣,連 背景中的靜止物體的邊緣也一並被檢測出來,這就 給目標分割帶來困擾。

 

1.運動目標檢測

采集某一時間段里的視頻序列圖像,設f( x,y, t) 表示t時刻當前幀,其前后相鄰的兩幀分別用 f( x,y,t - 1) 和f( x,y,t + 1) 表示。t時刻相鄰兩幀之間作差分運算:

  |f(x,y,t)-f(x,y,t-1)|<T            背景
  |f(x,y,t)-f(x,y,t-1)|>=T           前景
  其中f(x,y,t),f(x,y,t-1)分別為t,t-1時刻對應像素點的像素值,T為閾值。

以下圖為例:

 

 

 

       僅根據兩幀序列圖像間的差分來檢測運動目標存在許多問題。如圖1 所示,d、e 兩幀圖像差分的結果中,由於相鄰兩幀之間的差分並不完全是運動目標,上一幀被運動目標覆蓋的背景,會在下一幀顯露出來,並被誤判為前景目標,這樣導致得到的運動目標區域包括背景區域,因此會比實際運動區域大。

      在實際應用中,為了后續的運動分析與理解,總希望得到最准確的運動目標,因此本文中采用三幀差分代替兩幀差分來實現運動目標檢測。三幀差分法利用兩幀差分結果Dt,t-1 ( x,y,t) 和 Dt,t + 1 (x,y,t) 的“與”運算確定當前幀f( x,y,t ) 中運動目標邊緣D3( x,y,t) ,即

 

 

 

其中,× 為與運算。圖1 是一段subway 視頻,圖1f為得到的運動目標邊緣D3(x,y,t) ,可以看出三幀差分法有效地解決了運動目標的遮擋和背景重現問題,得到了准確的運動目標邊緣,並且在一定的程度上抑制了光照、陰影以及噪聲的影響。

------------------------------------------------------------------------分界線----------------------------------------------------------------------------------------

       經過“與”運算后運動區域中的噪聲得到了一 定程度的抑制,但在D3(x,y,t) 中還存在着部分孤 立的噪聲點,若不加處理將影響對運動目標的有效 檢測。可用鄰域平均、中值濾波和高斯低通濾波等方法來抑制噪聲。

       對於鄰域平均法,如把求灰度平均值的鄰域取得太大,或反復進行若干次操作,則會使圖像模糊,圖像的質量也會隨之降低。中值濾波不僅能有效濾除圖像中的孤立噪聲點,與鄰域平均法相比還能有效保護邊界信息。圖2為中值濾波前后的效果圖。鄰域S 采用大小為3 × 3 的窗口。

 

 

 

2.邊緣檢測方法之Kirsch邊緣檢測

        該算法既能保持圖像的邊緣細節又具有一 定的抗噪聲能力,有效地克服了經典的一階和二階微分邊緣檢測算子對噪聲敏感的缺點。雖然該算法計算開銷比較大,但它可以產生最大的梯度邊界。 Kirsch 算子從8 個方向對圖像邊緣信息進行提取。 詳細的邊緣檢測算法描述如下: 首先獲得如圖3 所示的8個濾波模板。

 

 

 

       下一步的操作有點繞,具體是:將這八個模板依次在圖像中一點(x,y)處進行濾波,那么會產生八個值,選出其中的最大值Fmax。按這種取值方法,得到了整幅圖的濾波值。

       由fmax ( x,y ) 組成濾波圖像,基於濾波圖像中的極值點可得到極值點圖像FImax ( x,y) ,FImax ( x,y) 定義為:

FI ( x,y) 表示圖像中( x,y) 處的像素值,若 ( x,y ) 在濾波圖像中是極值點,則FI ( x,y ) = fmax ( x,y ),否則FI( x,y ) = 0。

根據極值點圖像FImax和預設的閾值T,可得到邊緣圖像EI,EI 定義為:

 

EI( x,y) 表示邊緣圖像中( x,y) 處的像素值,若FI( x,y) > T,則EI( x,y) = 1,否則,EI( x,y) = 0

       在邊緣檢測時,一些重要的邊緣細節由於干擾或對比度不足變得模糊、微弱。直接利用Kirsch 邊 緣檢測獲得的邊緣線容易出現斷點,效果不是很理 想。本文中通過圖像邊緣連續性檢測來調節閾值 T,從而得到連通的圖像邊緣。通常在邊緣不連續的地方,象素值會有較大的差異,文中用4 × 4 的方向模板計算目標點周圍6個方向上的差值,當最大差值超過某個門限值時,則可認為該點為不連續點,由此來檢測圖像邊緣的不連續性。通過該算法在抑制噪聲、保證邊緣連續性的同時較好地保護了低強度的邊緣細節,獲得了令人滿意的效果。算法流程圖如左圖,預設的閾值T 取不同值的情況下,邊緣檢測效果如右圖所示。

 

       閾值T決定着邊緣定位的精度和邊緣的連續。T較小時,邊緣定位精度高,連續性差,低強度的邊緣細節被漏檢;T 較大時,情況正好相反,因此,要根據需要調節閾值T。

 

 

3.運動目標分割

設D3(x,y) 是經過中值濾波后由三幀差分得到的運動區域掩模,EI(x,y,t) 是由Kirsch 邊緣檢測算法得到的當前幀的邊緣掩模,則最終的運動目標邊緣圖Mt為:

 

結果下圖所示:

        由圖6可以看出,將時空域相結合可以准確的檢測出運動目標的邊緣,有效地克服了陰影問題。但所得到的邊緣仍存在不連續的問題,需要對運動對象邊緣進行連接。

 

4.目標提取

        文中采用自適應數學形態學對圖像邊緣進行連接,對每一個端點,用自適應橢圓結構元素進行自適應膨脹運算,結構元素的大小和方向可根據像素的局部特性如斜率、曲率進行調整,得到膨脹后閉合的運動目標邊緣B( x,y,t ) ,因為經過膨脹處理,原圖像邊緣難免會變寬,因此需要對處理后的B( x,y,t) 圖像結合EI( x,y,t ) 重新進行邊緣定位,得到最終的閉合的運動目標邊緣O(x,y,t) :

 

最后,對閉合的運動目標邊界O(x,y,t) 進行區域填充,得到運動目標的二值掩模圖像,將其與當前幀f( x,y,t) 相結合,便實現了對運動目標的分割,結果上面右圖 所示。與圖1中基於幀差法的分割結果相比較其定位精度高,分割效果好

 

5.結論和小結

        文中采用的方法綜合利用了時域和空域的檢測結果來提高分割性能。幀差法提取運動信息的突出特點是實現簡單、運算速度快,而且由於相鄰幀間環境亮度變化很小,受光照突變影響較小,具有較強的魯棒性。結合改進的Kirsch 邊緣檢測算法和基於形態學的邊緣連接算法,有效地消除了三幀差分帶來的“重影”和“空洞”現象,提取了關於運動目標更為完整的區域。實驗表明,本算法能夠快速響應實際場景的變化,准確、有效地進行運動對象分割。

原文參考地址:http://suo.im/4LuhH4

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM