系統整體設計方案

本系統將硬體控制器設計,圖像處理演算法設計兩大部分有機地進行結合使之能夠完成運動目標檢測。在圖像存入SDRAM前需要將圖像格式由RGB轉換為YCbCr。運動目標檢測實現系統整體框架如圖所示。

圖像處理演算法及硬體驅動

在SDRAM中存儲兩幀相鄰灰度圖像的數據,使用VGA驅動程序將兩幀數據同時從SDRAM中取出。使用中值濾波演算法將兩幀數據分別進行濾波平滑雜訊,對圖像信息進行差分。差分後的二值化像素群使用膨脹演算法拓展邊界,穩定檢測效果,通過最小包圍盒模塊確定二值化圖像邊界,畫出包圍盒方框。將方框疊加在原圖像上並輸出即可完成對運動目標的檢測。

幀間差分法的核心是對兩幀相鄰圖像進行存儲,根據數據存儲的位置大致可以分為三類,第一類是上一幀圖像與下一幀圖像分別位於兩段不同的存儲空間中。第二類是將兩幀圖像數據交叉存儲於同一段存儲空間中。第三類是將兩幀圖像存儲於同一存儲空間的高低位上如圖所示。

幀圖像存儲於同一存儲空間示意圖

與前兩種存儲方式相比,將兩幀圖像數據存儲於同一地址存儲空間中取出時序更加簡單。兩幀圖像在取出時擁有相同的行場同步信號時序,數據也自然對齊,有利於後續圖像演算法的進行。

一般地,對於同一地址空間寫入兩次數據,第一次寫入的數據將會被第二次的數據覆蓋。為了解決這個問題,一般的存儲器都會提供數據掩碼功能。通過掩碼屏蔽特定位置的數據寫入便可防止數據覆蓋。SDRAM提供了數據掩碼引腳DQM[1:0],DQM真值表如表所示,當DQML引腳為高電平時屏蔽低位元組數據的寫,當DQMH為高電平時屏蔽高位元組數據的寫入。

DQM真值表

本設計使用的SDRAM晶元存儲數據位寬為16比特。而從攝像頭採集的RGB565格式數據為16比特,SDRAM不能同時將兩幀RGB圖像存儲。因此在存入SDRAM前先將RGB格式轉換為YCbCr格式並提取亮度分量作為灰度圖像,這時圖像數據的位寬為8比特可以將兩幀圖像存於SDRAM高低位中。對於圖像數據此時應該存放於高位還是低位可以通過對圖像場同步信號的監測來實現。當檢測到場同步信號的下降沿時說明本幀顯示結束即將開始下一幀顯示。因此可以使用幀標誌信號,每一幀畫面結束時對幀標誌信號進行翻轉。通過幀標誌信號就能夠準確的計算本幀數據存放在低位還是高位。SDRAM掩碼及幀標誌控制關係如表所示。

SDRAM掩碼及幀標誌控制關係表

基於灰度的幀間差分法

幀間差分法是通過兩幀相鄰圖像間做差並選取合適的閾值對圖像進行二值化從而選取出運動的物體,演算法流程,f(x, y)為灰度差分圖像,D(x, y)為幀間差分圖像,gk(x, y)、gk-1(x, y)為相鄰兩幀灰度圖像,差分閾值為T。

將兩幀相鄰圖像對應像素進行差分並取絕對值獲得灰度差分圖像,將灰度差分圖像與預設閾值作比較,將大於閾值的像素劃分為運動物體。基於灰度的幀間差分法Matlab模擬如圖所示。

演算法效果視頻測試

視頻封面

00:04

最後

本設計基於QuartusII開發,需要本設計的整個工程的朋友,關注我的訂閱號 硅農 後台回復 視頻圖像處理,即可獲得工程的下載方式。


推薦閱讀:
相关文章