摘 要: 采用FPGA搭建圖像處理系統(tǒng),通過硬件算法實現(xiàn)圖像的流水線及并行處理,實現(xiàn)了對具有特定顏色的物體的識別與跟蹤。整個系統(tǒng)工作于像素頻率,避免了算法的程序跑飛現(xiàn)象,使系統(tǒng)的可靠性大為提高,較好地保持了系統(tǒng)的低功耗特性,且優(yōu)于DSP等串行處理器結(jié)合軟件算法來實現(xiàn)的方法。
0 引言
近年基于FPGA硬件技術(shù)的視頻圖像處理系統(tǒng)被廣泛地應(yīng)用于視頻智能監(jiān)控、智能交通系統(tǒng)、視頻采集和跟蹤系統(tǒng)等[1]。作為機(jī)器視覺的一個重要研究方向,動態(tài)目標(biāo)檢測在視頻智能監(jiān)控、智能交通系統(tǒng)等方面得到了越來越多的應(yīng)用[2]。通常圖像識別與跟蹤算法可以通過軟件或者硬件來實現(xiàn),但出于成本及開發(fā)難度的考慮,圖像識別與跟蹤一般由軟件來實現(xiàn)。
在高速、高分辨率的情況下,傳統(tǒng)軟件的串行處理算法不足以應(yīng)對大量的運算以及嚴(yán)格的時間要求,而采用硬件算法則可以實現(xiàn)并行或者流水的運算結(jié)構(gòu),大大地加快了運算速度[3]。目前可采用硬件實現(xiàn)的主要方案包括:DSP數(shù)字信號處理器、專用的集成圖像處理芯片、FPGA和配合的相關(guān)電路。與其他方案相比,使用FPGA芯片豐富的硬件資源以及硬件可重構(gòu)性,可大大提高圖像識別跟蹤系統(tǒng)的靈活性和通用性。
本設(shè)計通過使用可編程邏輯器件和硬件算法進(jìn)行圖像處理以實現(xiàn)對圖像中特定目標(biāo)進(jìn)行識別和跟蹤,并通過并行和流水線結(jié)構(gòu)算法大大加快圖像處理的速度,使得處理速率與輸入時鐘同步,真正地做到了無延時處理。
1 系統(tǒng)整體功能概述
本設(shè)計中采用Altera公司的EP2C8系列FPGA作為系統(tǒng)核心。圖像從30萬像素CMOS攝像頭輸入,F(xiàn)PGA負(fù)責(zé)圖像處理以及接口管理,因攝像頭與VGA接口的幀率不同,所以使用SDRAM作為幀緩沖。高速視頻DAC芯片ADV7123負(fù)責(zé)把RGB圖像數(shù)據(jù)轉(zhuǎn)換成模擬量,以實現(xiàn)VGA輸出。系統(tǒng)的框架圖如圖1所示,整個系統(tǒng)采用5 V直流供電,可以通過AS或者JTAG接口進(jìn)行調(diào)試以及程序的下載。通過鍵盤可以切換系統(tǒng)的工作狀態(tài),改變圖像的處理效果。
2 硬件設(shè)計
要實現(xiàn)圖像處理,首先要搭建好圖像的采集系統(tǒng),實現(xiàn)對輸入圖像正確的顯示。由于系統(tǒng)處理的數(shù)據(jù)量大,速度快,對硬件電路的設(shè)計以及器件布局布線都有較高的要求。
2.1 FPGA外圍電路設(shè)計
FPGA的外圍電路包括時鐘電路、復(fù)位電路、JTAG以及AS調(diào)試接口。本設(shè)計提供40 MHz和50 MHz時鐘輸入,50 MHz時鐘可通過PLL倍頻到100 MHz作為SDRAM時鐘,也可分頻到25 MHz作為CMOS攝像頭時鐘;而40 MHz作為后備時鐘。JTAG接口可把配置數(shù)據(jù)下載到FPGA的內(nèi)部RAM上,并可以通過SignalTap嵌入式邏輯分析儀對FPGA時序進(jìn)行分析。AS接口則可以把配置數(shù)據(jù)之間固化到串行EPROM上,使FPGA上電后自動配置。
2.2 VGA接口設(shè)計
VGA接口芯片本質(zhì)上是三路獨立的高速DA,負(fù)責(zé)把數(shù)字化的圖像數(shù)據(jù)轉(zhuǎn)換成模擬量,以供顯示器顯示。為了阻抗匹配,模擬輸出端需并聯(lián)75 Ω電阻,DAC輸出電流的最大值由偏置電位器決定,通過調(diào)節(jié)電位器,可以調(diào)節(jié)輸出圖像的最大亮度。
2.3 SDRAM外圍電路設(shè)計
SRAM在存儲器中速度最快、最穩(wěn)定、操作最方便,但是由于其成本高,一般靜態(tài)存儲器只適用于存儲容量小、存儲速度要求高的場合。而SDRAM相對于SRAM制造成本低很多,隨著技術(shù)的進(jìn)步,SDRAM的速度越來越快,容量越來越大,穩(wěn)定性也越來越好。在視頻圖像處理中SDRAM主要用作數(shù)據(jù)緩存,也就是FPGA對SDRAM操作最頻繁的為讀命令、寫命令,在這兩個命令中間插接激活、預(yù)充電、猝發(fā)終止、刷新等命令[4]。
SDRAM的主要作用是把經(jīng)過處理后的圖像數(shù)據(jù)以30 S/s的速率進(jìn)行緩存,然后再以60 S/s的速率讀取到VGA接口輸出。采用16 bit字寬的SDRAM,讀寫時鐘為100 MHz。SDRAM總帶寬為100 MHz,其中攝像頭寫入占用12.5 MHz帶寬,VGA讀取占用25 MHz帶寬,剩余的62.5 MHz帶寬可留作圖像處理使用。
3 算法設(shè)計
采用基于顏色的目標(biāo)識別算法從背景中分割目標(biāo)并動態(tài)標(biāo)記,該算法實現(xiàn)簡單,但對圖像的質(zhì)量要求較高。由于CMOS攝像頭輸出的圖像噪點較多,尤其在光照不足的情況下,因此圖像的預(yù)處理工作顯得尤為重要[5]。系統(tǒng)總體算法結(jié)構(gòu)如圖2所示。
預(yù)處理采用3×3的平滑濾波器對圖像進(jìn)行濾波。將處理后的圖像與樣品顏色進(jìn)行比較,當(dāng)圖像與樣品顏色的R、G、B分量的差值在一定范圍內(nèi)時,圖像像素被標(biāo)記為白色,否則標(biāo)記為黑色,最終實現(xiàn)圖像的二值化。包圍盒對噪點非常敏感,在進(jìn)行包圍操作前,再對圖像進(jìn)行一次濾波處理。包圍盒的作用是找出目標(biāo)圖像像素的最小坐標(biāo)以及最大坐標(biāo),通過這兩個坐標(biāo)即可計算出目標(biāo)的中心位置。
3.1 圖像平滑濾波器設(shè)計
傳統(tǒng)的軟件算法在實現(xiàn)濾波操作時,需要先把輸入和輸出圖像都緩沖到幀緩存中去,對于每個輸出像素,算法獲取輸入圖像對應(yīng)窗口的像素并用濾波函數(shù)計算來取得輸出值。由于每個輸出都需要讀取對應(yīng)窗口的輸入像素,勢必占用極大的內(nèi)存帶寬,并且處理性能會受到內(nèi)存帶寬的限制。由于每個輸入像素都會被多個窗口所利用,故可以先對輸入圖像進(jìn)行緩存,以便在后續(xù)的窗口中被重新利用[6]。本設(shè)計使用流水處理的方法,實現(xiàn)濾波算法的加速計算,算法結(jié)構(gòu)如圖3所示。
3.2 圖像二值化
在第一個時鐘的上升沿,攝像頭輸入的16 bit圖像數(shù)據(jù)先分割為R、G、B三個分量,分別為5 bit、6 bit、 5 bit,分別與樣本顏色的對應(yīng)分量進(jìn)行比較,通過減法器獲得對應(yīng)的誤差絕對值,下一個時鐘上升沿,這三個誤差的絕對值再與對應(yīng)的閾值進(jìn)行比較,最后把比較結(jié)果進(jìn)行與運算,作為最終輸出。整個二值化操作的流水線延時為兩個時鐘周期。圖4為其中一個處理通道的簡化表示。本設(shè)計的二值化操作是在RGB色彩空間上進(jìn)行的,只有在R、G、B三個通道上同時滿足條件的像素點才會被設(shè)為最大值。
3.3 圖像腐蝕與膨脹
圖像的腐蝕操作能夠輕易地濾除面積小于窗口的孤立噪點而不影響圖像本身的清晰度,經(jīng)過腐蝕后目標(biāo)圖像會變小,需要膨脹操作來補(bǔ)償腐蝕的影響,與平滑濾波器相類似。其實現(xiàn)方法如圖5所示,經(jīng)過行緩沖的像素數(shù)據(jù)依次進(jìn)入窗口,通過對窗口內(nèi)所有像素進(jìn)行與運算來實現(xiàn)腐蝕,進(jìn)行或運算來實現(xiàn)膨脹,其效果如圖6所示。
3.4 包圍盒設(shè)計
一組像素的包圍盒是指能夠包圍所有像素的最小矩形,本設(shè)計在進(jìn)行包圍操作之前已經(jīng)先對圖像進(jìn)行二值化分割,故只需要找出每一幀圖像中目標(biāo)像素橫縱坐標(biāo)的最大值和最小值即可實現(xiàn)對圖像的包圍操作。
4 結(jié)論
經(jīng)過處理后的圖像有VGA接口輸出,其效果如圖7所示。由于采用了硬件算法實現(xiàn)的并行以及流水結(jié)構(gòu),大大加快了圖像的處理速度,處理速度為900萬像素每秒,流水線延時約為64 ?滋s。通過動態(tài)流水線結(jié)構(gòu),系統(tǒng)可以把每一步中間處理的結(jié)果直接輸出到VGA,這樣就可以獨立地觀察每一步處理的實際效果。通過對比發(fā)現(xiàn),若關(guān)閉圖像預(yù)處理,則圖像中噪點明顯增多,包圍盒出現(xiàn)晃動,說明圖像的預(yù)處理操作能夠提高識別和跟蹤的準(zhǔn)確度和穩(wěn)定性。
由于使用硬件算法,從本質(zhì)上避免了傳統(tǒng)軟件算法的程序跑飛現(xiàn)象,使得系統(tǒng)的可靠性大為提高。為了提高處理速度,傳統(tǒng)軟件算法往往只能通過提高系統(tǒng)的時鐘實現(xiàn),然而過高的時鐘頻率意味著高功耗和干擾,而本設(shè)計通過流水線結(jié)構(gòu),使整個處理系統(tǒng)工作于像素頻率,同時也保持了系統(tǒng)的低功耗特性。
參考文獻(xiàn)
[1] 鄭俊波,蘇成悅,何榕禮,等.Android終端及FPGA控制的智能家居系統(tǒng)[J]。微型機(jī)與應(yīng)用,2014,33(5):93-95.
[2] 向厚振,張志杰,王鵬.基于FPGA視頻和圖像處理系統(tǒng)的FIFO緩存技術(shù)[J].電視技術(shù),2012,36(9):134-135.
[3] MARUYAMA T, YAMAGUCHI Y. How fast is an FPGA image processing[J]。 IEICE Technical Report, 2008,108(48):83-88.
[4] 田豐,鄧建國,李巍,等.SDRAM控制器的設(shè)備與VHDL實現(xiàn)[J]。電子技術(shù)應(yīng)用,2010,36(2):74-77.
[5] OLSON T, SANFORDCARL W. Real-time multistage IR image-based tracker[J]. The International Society for Optical Engineering,2011,58(112):56-57.
[6] 王德勝,康令州.基于FPGA的實時圖像采集與預(yù)處理[J].電視技術(shù),2011,35(3):38-41.
編輯:jq
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602997 -
圖像識別
+關(guān)注
關(guān)注
9文章
520瀏覽量
38267 -
目標(biāo)跟蹤
+關(guān)注
關(guān)注
2文章
88瀏覽量
14881
發(fā)布評論請先 登錄
相關(guān)推薦
評論