楊婭洲,張志偉,史瑞忠,趙輝
(中北大學信息與通信工程學院,山西太原, 030051)
隨著現代電子技術的不斷發展,在圖像采集和處理領域,CMOS圖像傳感器逐漸被大多數人所接受。CMOS圖像傳感器的集成度高,操作更加便捷,相較于CCD圖像傳感器有了更大的改進。此外CMOS圖像傳感器在抗輻射性能,系統復雜程度和可靠性,非破壞性讀出方式,優化的曝光控制都要優于CCD[1-3]。結合上述的分析比較,本系統設計將使用CMOS圖像傳感器作為圖像的采集。
FPGA是一種在線可編程的硅芯片,可以根據設計的需求在線更改設計的電路。FPGA可以由硬件描述語言設計出要實現的電路功能,然后編譯工具可以自動生成電路結構,FPGA的內部也會自動的布局布線,搭建電路。與ASIC專用電路相比,FPGA是一種半定制的開發芯片,它的開發周期短,可以反復擦除程序,反復更改代碼,直到設計出最優的需求電路,但是ASIC專用集成電路,開發流程復雜,不易開發。FPGA的另一個優點是并行執行機制,與基于處理器的系統串行執行不同。基于處理器的系統的任務切換由中斷優先級控制,面臨著嚴格限時的任務相互取占的風險。而FPGA的內部設計是基于硬件電路的思想,是真正意義上并行執行操作,符合實際電路的設計過程,每次執行都是為實現某一電路功能,可以減少處理器系統多線程帶來的不穩定性。由于FPGA并行數據的處理能力十分強大,在數據的傳輸過程中又很高速、穩定[4],所以FPGA更加適合作為主控芯片。
本系統以FPGA作為主控芯片,首先通過FPGA配置CMOS圖像傳感器的設置參數,如曝光補償,自動對焦,圖像增益等,盡可能使采集到的圖像最佳。CMOS圖像傳感器采集外界的圖像信息,圖像信息通過IIC總線[5]送入FPGA系統,然后FPGA系統將處理之后圖像信息緩存在SDRAM中。經過處理后的圖像信息通過USB接口傳到PC機上,在計算機上用上位機軟件可以實現圖像的實時顯示和保存。本設計系統框圖如圖1所示。

圖1 系統整體框圖
本此設計的主控芯片使用的是Cyclone IV系列的EP4 CE10E22C8芯片,該芯片具有10320個邏輯單元,414Kbit RAM,654個邏輯塊,IO口的標準電壓為3.3V,集成了加法器和乘法器,該芯片完全滿足設計需求。而且芯片的功耗低,性價比高,適合用來批量生產和使用。CMOS圖像傳感器選用豪威公司的OV5640攝像頭,該圖像傳感器可以達到500W像素,具有自動對焦和防抖技術可以清楚的采集到圖像信息。由于主控芯片基于SRAM結構,在電路掉電后無法保存數據和程序,所以需要配置一片外的flash芯片,配置芯片選用EPCS4,在quartus II軟件中生成jic類型的文件后,可以通過下載器USB Blaster下載到flash中固化程序。時鐘部分使用了24M的有源晶振,CLK0和CLK1為FPGA提供時鐘,USB_CLK為CY7C68013芯片提供時鐘。供電部分選用USB輸入的5V電源經過LDO芯片AMS1117-3.3、 AMS1117-1.2和AMS1117-2.5。輸出的3.3V電壓為VCCIO端口BANK電源和其它電路的工作電源。輸出的1.2V電壓為VCCIOINT供電,輸出的2.5V電壓為PLL所在的BANK單獨供電。
圖像的傳輸模塊采用USB2.0[6],在接口驅動的部分采用了 USB 驅動芯片 CY7C68013A-56LFXC,它集成了 8051 微控制器和可編程的外圍接口,在傳出數據時可以通過相應的寄存器設置完成傳輸方向,傳輸速度的配置。USB2.0的數據傳輸率可達到56Mbytes/s。
SDRAM采用型號為MT48LC16M16A2的芯片。它具有16bits 的數據位寬,256M的存儲容量。為了保證圖像的實時性和幀率的穩定性,對于圖像的緩存采用了乒乓存儲方式,當上一幀圖像數據輸出時,下一幀圖像數據也可以同時緩存,這種緩存模式可以保證圖像顯示的不間斷性和顯示出來的圖像完整性。
FPGA使用 Quartus Ⅱ軟件作為開發工具,軟件程序開發使用 Verilog HDL 語言設計。
FPGA內部模塊的具體設計如圖2所示。

圖2 FPGA 內部的模塊
OV5640攝像頭采用的兩線式SCCB總線,和IIC總線協議基本一致,把OV5640攝像頭看作IIC器件。本次設計可以用IIC配置模塊主要是通過對IIC總線的操作實現對OV5640攝像頭參數的配置和控制,IIC通信協議分為起始信號、結束信號、應答信號。當SCL為高電平時,SDA由高電平向低電平跳變,FPGA向OV5640攝像頭發送一個起始信號,等待OV5640攝像頭應答。待FPGA收到應答信號之后,開始寫入OV5640攝像頭器件地址。FPGA再次收到應答信號之后,開始寫入OV5640攝像頭的寄存器地址加數據。待FPGA收到應答信號之后,開始對OV5640攝像頭的下一個寄存器寫入數據。配置OV5640攝像頭參數的數據傳輸結束之后。FPGA會向OV5640攝像頭發送一個停止信號,此時在SCL信號為高電平時,SDA信號從低電平拉高為高電平。總線又回到空閑狀態。
圖像采集模塊主要是用來采集初始的圖像數據,用于后續的處理模塊調用。在圖像灰度化的算法中,把一個具有 RGB三個顏色通道的圖像數據轉換為只有一個灰度通道的圖像數據,第一步是把RGB565通過verilog語法的位拼接轉成RGB888。


img_y0即為要提取的灰度值,通過灰度化計算只是過濾掉了圖像的顏色信息,而不改變改變圖像的其他特征,極大的保證了圖像的完整性。圖像的灰度化是保留原有像素的透明度的,即透明度不參與像素的運算,極大的保證了圖像的完整性。圖像灰度化模塊首先用三個寄存器分別對RGB三個不同顏色數據進行存儲,然后根據灰度化的公式對三個顏色的數據進行計算得到一個灰度化的值,計算過程中用到FPGA的乘法器和移位寄存器等。經過灰度化的圖像數據可以減少后期二值化處理[7]的運算量。下一步是圖像的二值化處理。圖像二值化是將圖像上的像素點的灰度值根據設定的閾值設置為白色或黑色,使圖像顯示黑白效果,凸顯出圖像的特征信息,為后續應用進一步簡化計算量。這里我們以8bit表示的灰度圖像為例,灰度值的范圍為0~255,二值化就是通過選取適當的閾值,與圖像中的256個亮度等級進行比較。本次設計將閾值設為70,如果亮度值大于設定的閾值70,像素點就設置為白色(255),如果亮度值低于閾值70,像素點就設置為黑色(0)。從而明顯地反映出圖像的整體和局部特征,處理之后的圖像數據通過FIFO接入SDRAM緩存模塊,用來供外部設備讀取。
在本次設計中FIFO1完成二值化數據和 SDRAM 控制器之間的異步數據發送和同步,FIFO2 完成 SDRAM 控制器和USB傳輸模塊之間的異步數據發送和同步。
本系統的上位機使用賽普拉斯公司 USB Control 來實現圖像的顯示和保存。使用 Signal Tap II 抓取的經過FPGA處理的8位圖像數據如圖3所示。實驗結果用深綠色水杯進行測試,實時采集到1280×1024 分辨率下 20 幀的原圖像,如圖3所示。經過FPGA處理之后的圖像結果如圖4所示。由于FPGA的并行處理能力強大,運行速度快,可以快速處理采集到的圖像,同時通過USB的高速傳輸使采集的圖像實時顯示在PC機上,可以更加精準的保存實時圖像。

圖3 Signal Tap II 數據

圖4 實時采集的原圖像

圖5 經過FPGA處理之后的圖像
本設計將FPGA、CMOS圖像傳感器、USB等電子器件集成在一塊,可以彌補傳統工業相機體積龐大,操作不便的缺點。同時FPGA高速的并行處理能力,不僅可以節省圖像采集和處理的時間,而且采集數據更加可靠穩定。經過實測,采集圖像的實時性高,延遲低,分辨率高。