任夢茹,侯宏錄
(西安工業大學 光電工程學院,西安710021)
圖像采集與預處理系統是通過圖像傳感器獲取客觀世界的圖像信息,并對得到的圖像信息進行存儲和預處理的過程,被廣泛應用于智能交通監控領域。隨著道路車流量的不斷增加,傳統的單目圖像采集在對多目標車輛識別時,很難獲取多個目標之間的位置信息。而雙目圖像采集可以基于視差的原理獲取目標的三維信息,為進一步研究多目標車輛識別提供基礎平臺[1]。目前,圖像采集硬件平臺主要有ASIC,ARM,FPGA 和DSP。FPGA 具有體積小、并行處理等特點,其設計的實時性、靈活性也遠高于其它平臺,使其在圖像處理領域中應用廣泛。
圖像預處理是圖像處理技術的基礎環節。中值濾波作為一種常用的圖像預處理方法,能夠有效地濾除噪聲干擾,保留圖像的邊緣信息。而傳統的中值濾波算法處理速度慢, 無法滿足系統實時性要求。故在此以傳統中值濾波為基礎提出一種并行中值濾波算法,相比于傳統的濾波算法,其運算量減小了近1/2。
基于FPGA 的實時雙目圖像采集與預處理系統主要包括圖像采集、存儲、預處理和顯示等模塊,實現圖像數據的實時采集顯示與預處理。系統總體結構如圖1所示。

圖1 系統總體結構Fig.1 Overall structure of the system
系統上電后, 通過I2C 總線配置OV5640 圖像傳感器的寄存器。由圖像采集模塊實時獲取圖像傳感器采集到圖像的幀行信號、10 bit 圖像數據和像素時鐘,將圖像數據轉換成RGB 模式輸出。由于相機時鐘為50 MHz,DDR3 工作時鐘為100 MHz,需要讀寫FIFO 完成跨時鐘域操作。將采集的2 路圖像數據緩存在2 個寫FIFO 中, 在寫仲裁模塊采用輪詢的方式選擇一路圖像數據,再通過AXI 總線控制,利用MIG 核對片外存儲芯片DDR3 進行讀寫操作。同樣,在讀仲裁模塊采用輪詢的方式讀取一路圖像數據, 將讀取的圖像數據經過讀FIFO 緩存送入濾波模塊進行降噪處理。最后通過顯示模塊,在HDMI 顯示屏上實時顯示2 幀分辨率為1920×1080,幀頻為30 f/s 的圖像。
該系統選用2 個CMOS OV5640 圖像傳感器來完成雙目圖像的采集。FPGA 芯片通過I2C 總線對OV5640 進行參數配置, 配置攝像頭的分辨率為1920×1080, 輸出數據格式為RGB, 幀頻為30 f/s。CMOS OV5640 與FPGA 芯片連接如圖2所示,FP GA 芯片通過I2C 總線的時鐘線scl、 數據線sda,配置圖像傳感器的內部寄存器[2]。
當scl 為高電平,sda 從高到低時, 開始傳輸數據;scl 為高電平,sda 從低到高時, 停止傳輸數據。RGB565 格式是{R[4:0],G[5:0],B[4:0]},圖像傳感器先輸出高8 bit 數據,再輸出低8 bit 數據,將2個8 bit 數據進行拼位操作,即可得到16 bit 的RGB數據。輸出RGB 數據仿真如圖3所示, 在50 MHz的時鐘下,1 個時鐘周期輸入1 個8 bit 數據, 經過拼位操作后, 每間隔1 個時鐘周期輸出1 個16 bit數據,從而完成RGB 數據的輸出。

圖3 輸出RGB 數據仿真Fig.3 Output RGB data simulation
緩存模塊由AXI 接口控制、讀寫FIFO 控制、讀寫仲裁、MIG 核、DDR3 SDRAM 等模塊構成。DDR3 SDRAM 控制器采用XilinxMIG 核[3-4]來設計,通過AXI 總線對DDR3 執行讀寫操作。AXI 總線對DDR3 執行寫、讀操作的狀態機設計如圖4所示。
圖中, 在寫初始狀態接收到寫突發請求信號,進入寫等待狀態, 等待寫FIFO 滿足一次突發的條件后進入寫地址狀態,通過寫地址通道寫入突發地址和突發長度。在寫數據等待狀態,等待寫地址通道的READY 信號, 產生寫數據通道的VALID 信號,進入寫數據狀態,通過寫數據通道往DDR3 中寫完一包數據,進入寫反饋狀態,等待寫反饋通道的VALID 信號,再進入寫突發完成狀態,表示一次寫突發數據完成,回到初始狀態,等待下一包數據突發請求信號。

圖4 DDR3 寫操作和讀操作狀態機的設計Fig.4 Design of DDR3 write and read operation state machine
AXI 總線對DDR3 執行讀操作的過程與寫操作類似,通過讀地址和讀數據通道完成DDR3 的讀操作。
該系統中突發數據以包的形式傳輸,數據位寬64 bit,突發長度64,故一包可傳輸的數據為64×64 bit=4 kbit。由于圖像采集的時鐘頻率與DDR3 提供的時鐘頻率不同, 故調用2 個FIFO 核來解決跨時鐘域問題。采集到的2 路圖像數據分別存入寫FIFO中等待,當有寫突發數據請求時且滿足突發條件則產生一次寫突發,對2 路圖像數據采用輪詢的方式進行選擇,通過AXI 總線完成寫操作。當有讀突發數據請求時且寫入DDR3 中的數據達到4 kbit 時,就發生一次讀突發,采用輪詢方式,通過AXI 總線完成讀操作。
為提高圖像數據緩存效率,將DDR3 存儲空間128 Mbit 分為4 個bank,每個bank 存儲1 幀圖像。采用乒乓操作,其操作框架如圖5所示,圖像數據寫入bank0 時,讀取bank3 數據,bank0 寫完第1 幀圖像后,讀取bank0 同時往bank1 寫入第2 幀數據,依次按順序讀寫,提高緩存效率。

圖5 DDR3 SDRAM 兵乓操作框架Fig.5 Operation frame of DDR3 SDRAM label
中值濾波是基于排序統計理論的一種能有效抑制噪聲的非線性信號處理技術。通常采用濾波模板的方法,對模板內的像素按照像素值的大小進行全排序,找到模板內像素的中間值,其輸出為

式中:f(x,y)為原始的圖像;g(x,y)為濾波處理后的圖像;W 為二維模板。
對于系統中分辨率為1920×1080 的RGB 圖像,采用傳統中值濾波,在3×3 濾波窗口中對每一像素的R,G,B 各通道濾波取中值來替代每一像素的RGB 值,對每個通道像素點及其鄰域取中值需要有36 次的排序運算,因此運算量大,耗時長,難以實現圖像的實時處理。故在此提出一種并行中值濾波算法,采用并行處理和流水線操作,以最快的速度找出中值,滿足系統實時處理的要求[5-6]。以一個通道的3×3 濾波窗口為例,求取中間值的流水線操作,如圖6所示。

圖6 求取中間值的流水線操作Fig.6 Pipelining operation for intermediate value
步聚1在第1 級流水線上,采用并行處理,對模板內每一行的像素值由大到小進行排序,同時得到每行的最大值、 中間值和最小值。該操作需要9次比較。
步聚2在第2 級流水線上, 將上級得到的最大像素值、 中間像素值和最小像素值再次進行排序,同時得到最大像素中的最小值、中間像素中的中間值, 以及最小像素中的最大值。該操作需要9次比較。
步聚3在第3 級流水線上, 將上級輸出的3個像素再次進行排序, 獲得中間值。該操作需要3次比較。
所提出的并行中值濾波算法僅需要調用7 次三值比較器,共進行21 次排序運算,相比傳統中值濾波算法的36 次排序減小了近1/2 的計算量,從而提高數據處理速度,滿足系統實時性要求。
并行中值濾波算法根據功能劃分為3 個模塊,緩存模塊、寄存器陣列模塊和排序輸出模塊。其結構框圖如圖7所示。

圖7 并行中值濾波結構框圖Fig.7 Structure block diagram of parallel median filter
緩存模塊中設置3 個FIFO,寬度為64 bit,每個FIFO 緩存一行圖像。從DDR3 中讀出的數據固定寫入FIFO1, 寫滿后將其寫入FIFO2。當FIFO2 寫滿后,再將其寫入FIFO3 同時將FIFO1 中的數據寫入FIFO2, 即可使3 行圖像數據緩存在3 個FIFO 中。將緩存的3 行數據同時送入寄存器模板陣列,生成R,G,B 各通道的3×3 濾波模板。通過排序輸出模塊,對R,G,B3 個濾波模板中像素值進行排序,最后輸出該像素的中間值。以G 分量通道為例,其并行中值濾波仿真如圖8所示。

圖8 G 分量通道并行中值濾波仿真Fig.8 Simulation of G-component channel parallel median filter
圖中,pix_fval,pix_lval 為圖像的幀行同步信號,FIFO 中緩存的3 行數據經過3 個時鐘周期的延遲,即可得到G 通道的3×3 濾波模板data_p1…data_p9。在生成的模板上執行像素排序流水線操作,每完成一級流水線操作需要1 個時鐘周期,3 個時鐘周期即可輸出中值。
采用Verilog HDL 語言[7]編寫各子模塊程序后,基于XILINX Artix-7 系列XC7A100TFGG484-2 芯片及其軟件開發平臺Vivado 和仿真工具Questa Sim,對系統進行試驗驗證。
實時雙目圖像采集與顯示試驗如圖9所示。系統上電,圖像傳感器采集圖像信息,通過HDMI 實時顯示。試驗結果表明,該雙目圖像采集系統能實時采集圖像并顯示,為后續獲取目標三維信息提供基礎平臺。

圖9 實時雙目圖像采集與顯示試驗Fig.9 Real-time binocular image acquisition and display experiment
為了更直觀地測試該算法在FPGA 上實現的效果,利用MatLab 與Questa Sim 聯合仿真,對一幅分辨率為256×256 的彩色圖像進行軟硬件仿真對比。并行中值濾波算法處理試驗的仿真結果對比如圖10 所示。

圖10 并行中值濾波算法處理試驗Fig.10 Parallel median filtering algorithm processing experiment
試驗結果表明,采用軟、硬件方法實現的并行中值濾波效果基本一致,對椒鹽噪聲均有顯著的濾波效果。然而,在2.20 GHz 的計算機上MatLab 軟件實現中值濾波需要185 ms;用Artix-7FPGA 硬件實現的并行中值濾波算法,工作在50 MHz 時鐘頻率下僅需1.377 ms。耗時對比表明,本文設計的硬件系統處理速度遠快于軟件處理,滿足系統實時性要求。
所提出的實時雙目圖像采集與處理系統充分發揮了FPGA 的并行高速處理,以及DDR3 SDRAM大容量高速率存儲等特點,相比于軟件處理,其處理速度明顯提高。同時,實現了一種并行中值濾波算法,相比于傳統的中值濾波算法,運算量減少了約1/2, 有效地解決了實時動態圖像噪聲干擾的問題。通過試驗證明,該系統可實現實時雙目圖像采集、存儲、預處理及顯示等功能,為進一步實現智能交通監控系統中多目標車輛識別、 跟蹤等算法,奠定堅實的基礎。