本文設計了一個以FPGA為核心處理器實現紅外視頻圖像數字預處理的系統,利用Altera公司提供的DE2開發(fā)板,把系統大部分的功能模塊集成在一片FPGA 上,大大優(yōu)化了整個系統的性能。
該方案采用Altera公司推出的低成本、高密度的Cyclone Ⅱ系列FPGA,提高了系統的設計靈活性。細胞神經網絡IP核的開發(fā),充分利用了細胞神經網絡在圖像處理方面的優(yōu)勢,提高了整個系統的處理效率。實現了細胞神經網絡的一種高效數字實現方案,并且采用分布式算法可以提供更高的運行速度。
引言
紅外視頻圖像數字預處理系統是紅外焦平面陣列探測器必備的后處理電路,對成像質量有很大的影響。隨著紅外弱小目標檢測技術開始廣泛應用于制導、跟蹤、自動控制、人工智能等諸多領域,這些應用對紅外成像質量的要求越來越高。因此,研究紅外視頻圖像數字預處理系統有很大的意義[1-2]。本文從細胞神經網絡模型研究開始,將細胞神經網絡的模型、算法研究與具體的圖像處理特別是在圖像邊緣檢測中的應用緊密結合,充分將理論和實踐聯系起來。將設計好的模板應用到圖像的邊緣檢測中,利用FPGA的并行性特點,建立基于CNN的紅外圖像預處理系統,用于進行實時的圖像處理。
該系統硬件電路包括兩路視頻A/D,數據緩沖同步FIFO,FPGA,數據存儲、顏色空間轉換等功能模塊。系統能夠完成對IRFPA信號的正確讀出,并將讀出的視頻模擬信號經A/D轉換器轉換為數字信號,經FIFO緩沖后進入存儲器,之后經過中心數字信號處理器進行必要的處理(邊緣提取),最后輸出標準的VGA模擬視頻信號,傳送到顯示器。
1 圖像預處理實現原理分析
紅外圖像預處理的目的在于,改善圖像數據,抑制不需要的變形或者增強某些對于后續(xù)處理重要的圖像特征,為后續(xù)的目標識別與跟蹤提供方便。這里做的預處理為邊緣提取,即對處于最低抽象層次上的圖像所進行的操作,此時處理的輸入輸出為亮度圖像。這些圖像是與傳感器抓取到的原始數據同類的,通常是用圖像函數值矩陣表示的亮度圖像。整個系統的核心處理部分是由細胞神經網絡IP核實現的。
細胞神經網絡(Cellular Neural Network,CNN)是以神經網絡的聯接方式為背景,具有實時信號處理能力的大規(guī)模非線性模擬電路。從結構上講,CNN類似于細胞自動機,即細胞神經網絡中的每一個胞元僅與它的鄰近胞元相連接,相連胞元之間存在直接通信,而非鄰近胞元之間不直接聯接,但是由于連續(xù)時間下的動態(tài)傳播,可以間接影響不相鄰的胞元。理論上,可以定義任何維數的細胞神經網絡,但是因為處理圖像的需要,這里只考慮二維的情況。一個二維的 細胞神經網絡結構形式如圖1所示,用 表示第i行第j列的細胞。胞元的狀態(tài)方程為:
由上式可知,在CNN應用使用空間不變的系數的情況下,整個網絡的功能由2個的矩陣和,以及胞元偏移值I決定。矩陣A和B分別稱為反饋模版和控制模版。胞元結構見圖2所示。
圖13x3規(guī)模的細胞神經網絡結構
圖2CNN結構圖
在圖像處理中,無論是灰度圖像還是二值圖像,每一個像素的值均為離散量化的,采用CNN進行圖像處理時,存在對其輸入與輸出量化的問題。在的二維圖像中,不失一般性地設它的任意一點值為,通常對于二值圖像,僅取兩個整數值,即;而對灰度圖像則為灰度值,以8比特灰度圖像為例。在CNN系統中,其輸入為,輸出為,因而在處理二值圖像時,需要使原來的映射為,但必須注意這種映射為:原來的0映射為1(純黑色),原來的1映射為-1(純白色)。而處理灰度圖像時,首先要對輸入與輸出的值域進行256級的均勻量化,然后使映射到這個均勻量化的中,同樣必須注意:原來的0映射為1(純黑色),原來的255映射為-1(純白色),其余灰度值均按照由小到大的順序依次映射到由1到-1這個由大到小的量化體系中[3-5]。
2總體方案選擇
系統的工作流程如圖2所示,從CCD傳來的數字視頻信號及其控制信號首先通過圖像采集模塊,從而篩選出有效的數據,然后通過RAW2RGB模塊,利用插值算法得到每個像素點的R、G、B數據。為了便于CNN模塊進行核心處理,在進行邊緣提取操作前,把圖像數據從RGB顏色空間轉換為YCbCr顏色空間,針對Y分量進行處理。處理后的數據再經過YCbCr2RGB模塊轉換為RGB數據從而提供給VGA模塊,供LCD顯示。
圖2紅外圖像預處理系統工作流程
整個的核心部分在于CNN模塊,在圖像邊緣提取中使用的算法主要是經典的微分算子,微分算法在硬件中很難實現,將CNN應用于灰度圖像邊緣提取的算法,是因為CNN是一種基于神經元局域連接的神經網絡并行處理器[3],硬件上可以采用相同的電路元件陣列來設計CNN并行處理器,這種陣列同構的電路設計有利于VLSI實現。故采用粒子群算法訓練CNN的模板,進行邊緣提取。
雖然在細胞神經網絡中允許任意規(guī)模的鄰域,隨著模板尺寸的增大,硬件實現的難度也隨之增大。受限于目前的VLSI技術,胞元之間的互聯只能是局部的。本文中,規(guī)定采用3x3鄰域,即模板A、模板B都是3x3的矩陣,且它們的系數都是實系數。因為目前大多數圖像處理針對的都是灰度級圖像,所以細胞神經網絡胞元的輸入范圍被限定在[-1,+1]之間,-1代表白色像素,1代表黑色像素,其余的值代表二者之間的灰度值。這里采用定點數,因為在硬件實現中,定點數具有更高的速度和更低廉的成本,特別是在調用FPGA中的乘法底層原語時。
單個胞元的串行硬件實現結構,完成一次胞元狀態(tài)更新的運算至少需要9個時鐘周期。為了提高速度,可以在計算胞元狀態(tài)更新時采用并行結構,如圖3所示,通過采用流水線結構,完成一次胞元狀態(tài)的更新只需要1個時鐘周期。本文采用并行結構在FPGA中實現細胞神經網絡。
圖3CNN并行實現結構框圖
3硬件設計
圖像數據采集模塊用于實現圖像數據的捕捉,根據圖像傳感器MT9M011輸出數據時序,當視頻捕捉開始鍵按下時,該模塊開始接收數據,在獲得有效像素數據的同時也接收了消隱期的圖像數據,所以設置了輸出數據有效信號,用以在接下來的RAW2RGB模塊把有效數據和非有效數據區(qū)分開來。
3.1RAW2RGB模塊的設計
MT9M011采用的是Bayer型CFA(ColorFilterArray,顏色濾波陣列),由于該圖像傳感器的分辨率為1280x1024,這里采用的插值算法,每四個像素合并為一個像素,像素值的變化如圖4所示,這樣經過RAW2RGB模塊后,圖像的分辨率變?yōu)樵瓉淼囊话?,?40x512。
該模塊的硬件實現框圖如圖5所示。其中control模塊由兩個狀態(tài)機組成,分別是ram_wr_state和ram_rd_state。ram_wr_state狀態(tài)機負責產生RAM的寫使能和寫地址。當輸入數據有效時,把輸入的像素數據依次交替存儲在2個RAM中,構成類似乒乓操作的結構。這個狀態(tài)機負責產生RAM的寫使能和寫地址。ram_rd_state的狀態(tài)機負責產生RAM的讀使能和讀地址。
圖4顏色插值算法示意圖
圖5RAW2RGB模塊的硬件結構框圖
這里為了便于檢驗算法的正確性,適當的對數字視頻流進行了一些簡化。由于編程時采用參數化設計,所以這并不會對系統的設計產生影響。這里假定待處理的原始數據每行只有12個像素,以兩行數據為例,經過處理后的數據(每個像素包含R、G、B三種顏色分量),每行只包含6個像素,減少了一半,同樣行數也變?yōu)樵瓉淼?/2。這樣,當等待處理的圖像分辨率為1280x1024時,經過該模塊后的圖像分辨率變?yōu)?40x512。圖7為經過顏色插值后的實際輸出,與圖6經過顏色插值后的預期輸出相比較可以看出,該顏色插值模塊的設計完全達到了預期的要求。
圖6經過顏色插值后的預期輸出
圖7經過顏色插值后的實際輸出
3.2顏色空間轉換模塊的硬件設計
YCbCr坐標與RGB坐標之間的關系如下:
(1)
有三種方案實現此模塊設計,第一種方案采用Verilog語言對該轉換公式進行行為描述;第二種方案采用FPGA芯片內的嵌入式RAM構造乘法器查找表,將轉換公式內所有可能的中間結果存放在存儲器中。該系統需要9個乘法器查找表,每個乘法器查找表的深度是1k,將操作數R、G、B作為地址訪問存儲器,得到的輸出數據就是乘法運算的結果。查找表乘法器的速度只局限于所使用存儲器的存取速度。第三種方案是對第一種方案進行改進,采用流水線結構實現此系統設計,大大提高了運算速度。
本文采用第三種方案。流水線處理是高速設計中的一個常用設計手段。充分利用了硬件內部并行性,增加數據處理能力。這種流水線作業(yè)是在幾個步驟中執(zhí)行運算的功能單元的序列。每個功能單元接受輸入,生成的輸出則是緩沖器存儲的輸出。實現流水線結構的方法很簡單,只要在每個運算部件(包括乘法器和加減法器)的輸出以及系統的輸入輸出之間加上寄存器緩存即可。利用流水線技術的顏色空間轉換實現框圖如圖8所示。
一個數字系統的最高時鐘頻率受限于寄存器與寄存器之間的最大門延遲,如果不在每個運算部件的輸出后面加上寄存器緩存,則寄存器與寄存器之間的最大門延遲為輸入RGB信號到輸出YCbCr信號之間的延遲。由于輸入RGB信號到輸出YCbCr信號之間存在大規(guī)模的組合邏輯電路,因此延遲很大。采用流水線結構之后,寄存器與寄存器之間的組合邏輯電路規(guī)模變小了,因此延遲變小,從而可以提高系統時鐘。
圖8利用流水線技術的顏色空間轉換實現框圖
波形仿真如圖9所示。由波形圖可以看到,相比于輸入,輸出結果延遲5個時鐘周期出現,這是使用流水線結構造成的結果。例如輸入(R,G,B)=(1023,1023,1023),在5個時鐘周期后輸出(Y,Cb,Cr)=(944,514,514)。雖然輸出延遲了5個時鐘周期,但每計算一個像素顏色轉換仍只需要1個時鐘周期。
圖9RGB2YCbCr模塊仿真輸出
同理,可以采用方案2,即FPGA芯片內的嵌入式RAM構造乘法器查找表,可以實現YCbCr向RGB的顏色空間轉換。波形仿真如圖10所示。由波形圖可以看到,相比于輸入,輸出結果延遲3個時鐘周期出現,這是使用寄存器鎖存造成的結果。例如輸入(Y,Cb,Cr)=(944,514,514),在3個時鐘周期后輸出(R,G,B)=(1023,1021,1023)。雖然輸出延遲了3個時鐘周期,但每計算一個像素顏色轉換仍只需要1個時鐘周期。
圖10YCbCr2RGB模塊仿真輸出
3.3細胞神經網絡的IP核設計
根據CNN的理論,模板中的權數分別對應了待處理像素周圍的八個像素,所以在對某個像素進行處理之前,必須先讀入該點周圍的八個像素點,即某個像素點的結果不僅同本身像素有關,而且同鄰域點像素灰度值有關。因為采用的CMOS圖像傳感器每行640個像素。因此構造3×3模板的關鍵在于構造行延時器。視頻圖像中像素來自非均勻校正后的串行數據流,因此FPGA可以以并行流水方式實現該模板[6]。構成3×3模板的硬件結構如圖11所示:
圖113×3模板的硬件結構
如圖所示,視頻輸入圖像經過由RAM組成的3×3模板后進入卷積模塊,最后輸出結果。由于采用了流水工作方式,因此在進行圖像處理時,并不需要存儲整幀圖像,只要存儲模板操作中的領域像素點。
卷積的實現方式一般有MAC(MultiplyandAccumulate乘加法)和DA(DistributeAlgorithm分布式算法)。MAC法一般直接使用乘法加法進行運算,目前有些FPGA中帶有內部乘法器資源,即硬件乘法器。分布式算法將復雜的多位數乘積轉變?yōu)楹唵蔚摹芭c”操作,而且乘位權數的轉變?yōu)橐莆徊僮?,有效地提高了運算速度,降低了結構的復雜度。采用分布式算法實現卷積計算。在細胞神經網絡中采用該算法具有以下優(yōu)點:減小存儲單元的大小,實現存儲單元內容共享,減小數據總線位寬。為了節(jié)省FPGA片上資源采用串行分布式算法[7]。
串行方法的實現是先從最低位開始,用所有個輸入量的最低位對DA查找表進行尋址,得到了一個部分積,將其右移一位即將其乘以2-1后,放到寄存器當中,同時,個輸入量的次低位己經開始對DA查找表尋址得到另一個部分積,與右移一位后的上一個部分積相加,再重復上一步,直到所有的位數都己經尋址一遍。特別要注意,在補碼輸入的情況下,在最高位尋址得到的值不是與上一個右移一位后的部分積相加,而是相減。這樣最后得到的值就是我們需要的結果,由此可以得到全串行DA模式。由上可知,完成一次運算需要個時鐘周期。
圖12串行分布式算法原理圖
3.4VGA模塊
該模塊的功能是將經過處理的信號顯示在顯示器上,這個過程與信號處理中的過程是相反的,將數字信號按照電視信號的制式組成合乎時序、格式要求的信號,并加入用于控制的各種同步信號。為了便于檢驗VGA時序的正確性,適當的對VGA時序進行了一些簡化。由于編程時采用參數化設計,所以這并不會對系統的設計產生影響。仿真圖如圖13所示,符合預期的時序要求。
圖13VGA時序仿真圖
4圖像處理結果
圖14圖像處理結果顯示
結論
本文采用FPGA實現紅外圖像預處理算法,能夠將結構簡單,計算量大的算法從DSP中分離出來,保證DSP有足夠的時間完成目標識別、跟蹤等其它任務。FPGA給用戶提供了很大的自由度去實現所設計的專用集成化數字電路。其簡單的外圍電路,高度靈活的用戶現場編程方式,現場定義高容量數字單片系統的能力,能夠重復燒寫、反復修改的新穎功能,意味著無須更改電路,只要改寫FPGA內部程序,整個系統又可實現新功能。本文以圖像邊緣提取為基本的應用目標,選擇細胞神經網絡作為主要的研究對象,對CNN的理論、應用和硬件實現進行了系統的研究。
本文的特色在于:
1.提出了將細胞神經網絡應用到二值圖像上的算法,在二值圖像的基礎上,提出了基于CNN的灰度圖像邊緣提取算法。仿真結果表明:CNN提取的結果比較整齊有序,對邊緣提取的連續(xù)性較好。
2.提出了細胞神經網絡的一種高效數字實現方案,采用比特串行的分布式算法來實現胞元的狀態(tài)更新。采用該架構實現的細胞神經網絡減少了硬件資源的占用以及總線的位寬。與細胞神經網絡的模擬實現方式相比較,數字實現方案由于采用了分布式算法可以占用更小的面積,從而提供更高的運行速度。
3.用Verilog對CNN進行描述,并由FPGA搭建實驗平臺進行實現,實驗結果表明:該模型能較好的對圖像進行實時邊緣提取處理。對CNN的Verilog描述為CNN的硬件實現研究又向前邁進了一步,在數字圖像中,用FPGA搭建的CNN可以大大的提高圖像的實時處理速度。