<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設計應用 > 基于CNN的紅外圖像預處理系統(tǒng)的研究與設計

          基于CNN的紅外圖像預處理系統(tǒng)的研究與設計

          ——
          作者:王思睿 王暕來 楊春玲 時間:2007-08-16 來源:電子產(chǎn)品世界 收藏

          摘要:本文設計了一個以為核心處理器實現(xiàn)紅外視頻圖像數(shù)字預處理的系統(tǒng),利用Altera公司提供的DE2開發(fā)板,把系統(tǒng)大部分的功能模塊集成在一片 上,大大優(yōu)化了整個系統(tǒng)的性能。該方案采用Altera公司推出的低成本、高密度的Cyclone Ⅱ系列,提高了系統(tǒng)的設計靈活性。IP核的開發(fā),充分利用了在圖像處理方面的優(yōu)勢,提高了整個系統(tǒng)的處理效率。實現(xiàn)了的一種高效數(shù)字實現(xiàn)方案,并且采用分布式算法可以提供更高的運行速度。

          關鍵詞 ;細胞神經(jīng)網(wǎng)絡;FPGA;

          引言

          紅外視頻圖像數(shù)字預處理系統(tǒng)是紅外焦平面陣列探測器必備的后處理電路,對成像質量有很大的影響。隨著紅外弱小目標檢測技術開始廣泛應用于制導、跟蹤、自動控制、人工智能等諸多領域,這些應用對紅外成像質量的要求越來越高。因此,研究紅外視頻圖像數(shù)字預處理系統(tǒng)有很大的意義[1-2]。本文從細胞神經(jīng)網(wǎng)絡模型研究開始,將細胞神經(jīng)網(wǎng)絡的模型、算法研究與具體的圖像處理特別是在圖像中的應用緊密結合,充分將理論和實踐聯(lián)系起來。將設計好的模板應用到圖像的中,利用FPGA的并行性特點,建立基于CNN的紅外圖像預處理系統(tǒng),用于進行實時的圖像處理。

          該系統(tǒng)硬件電路包括兩路視頻A/D,數(shù)據(jù)緩沖同步FIFO,F(xiàn)PGA,數(shù)據(jù)存儲、顏色空間轉換等功能模塊。系統(tǒng)能夠完成對IRFPA信號的正確讀出,并將讀出的視頻模擬信號經(jīng)A/D轉換器轉換為數(shù)字信號,經(jīng)FIFO緩沖后進入存儲器,之后經(jīng)過中心數(shù)字信號處理器進行必要的處理(邊緣提取),最后輸出標準的VGA模擬視頻信號,傳送到顯示器。

          1 圖像預處理實現(xiàn)原理分析

          紅外圖像預處理的目的在于,改善圖像數(shù)據(jù),抑制不需要的變形或者增強某些對于后續(xù)處理重要的圖像特征,為后續(xù)的目標識別與跟蹤提供方便。這里做的預處理為邊緣提取,即對處于最低抽象層次上的圖像所進行的操作,此時處理的輸入輸出為亮度圖像。這些圖像是與傳感器抓取到的原始數(shù)據(jù)同類的,通常是用圖像函數(shù)值矩陣表示的亮度圖像。整個系統(tǒng)的核心處理部分是由細胞神經(jīng)網(wǎng)絡IP核實現(xiàn)的。

          細胞神經(jīng)網(wǎng)絡(Cellular Neural Network,CNN)是以神經(jīng)網(wǎng)絡的聯(lián)接方式為背景,具有實時信號處理能力的大規(guī)模非線性模擬電路。從結構上講,CNN類似于細胞自動機,即細胞神經(jīng)網(wǎng)絡中的每一個胞元僅與它的鄰近胞元相連接,相連胞元之間存在直接通信,而非鄰近胞元之間不直接聯(lián)接,但是由于連續(xù)時間下的動態(tài)傳播,可以間接影響不相鄰的胞元。理論上,可以定義任何維數(shù)的細胞神經(jīng)網(wǎng)絡,但是因為處理圖像的需要,這里只考慮二維的情況。一個二維的 細胞神經(jīng)網(wǎng)絡結構形式如圖1所示,用 表示第i行第j列的細胞。胞元的狀態(tài)方程為:

          由上式可知,在CNN應用使用空間不變的系數(shù)的情況下,整個網(wǎng)絡的功能由2個 的矩陣 和 ,以及胞元偏移值I決定。矩陣A和B分別稱為反饋模版和控制模版。胞元結構見圖2所示。

          圖1   3x3規(guī)模的細胞神經(jīng)網(wǎng)絡結構

          圖2  CNN結構圖

          在圖像處理中,無論是灰度圖像還是二值圖像,每一個像素的值均為離散量化的,采用CNN進行圖像處理時,存在對其輸入與輸出量化的問題。在 的二維圖像中,不失一般性地設它的任意一點值為 ,通常對于二值圖像, 僅取兩個整數(shù)值,即 ;而對灰度圖像則 為灰度值,以8比特灰度圖像為例 。在CNN系統(tǒng)中,其輸入為 ,輸出為 ,因而在處理二值圖像時,需要使原來的 映射為 ,但必須注意這種映射為:原來的0映射為1(純黑色),原來的1映射為-1(純白色)。而處理灰度圖像時,首先要對輸入與輸出的值域 進行256級的均勻量化,然后使 映射到這個均勻量化的 中,同樣必須注意:原來的0映射為1(純黑色),原來的255映射為-1(純白色),其余灰度值均按照由小到大的順序依次映射到由1到-1這個由大到小的量化體系中[3-5]。

          2 總體方案選擇

          系統(tǒng)的工作流程如圖2所示,從CCD傳來的數(shù)字視頻信號及其控制信號首先通過圖像采集模塊,從而篩選出有效的數(shù)據(jù),然后通過RAW2RGB模塊,利用插值算法得到每個像素點的R、G、B數(shù)據(jù)。為了便于CNN模塊進行核心處理,在進行邊緣提取操作前,把圖像數(shù)據(jù)從RGB顏色空間轉換為YCbCr顏色空間,針對Y分量進行處理。處理后的數(shù)據(jù)再經(jīng)過YCbCr2RGB模塊轉換為RGB數(shù)據(jù)從而提供給VGA模塊,供LCD顯示。

          圖2 紅外圖像預處理系統(tǒng)工作流程

          整個的核心部分在于CNN模塊,在圖像邊緣提取中使用的算法主要是經(jīng)典的微分算子,微分算法在硬件中很難實現(xiàn),將CNN應用于灰度圖像邊緣提取的算法,是因為CNN是一種基于神經(jīng)元局域連接的神經(jīng)網(wǎng)絡并行處理器[3], 硬件上可以采用相同的電路元件陣列來設計CNN并行處理器,這種陣列同構的電路設計有利于VLSI實現(xiàn)。故采用粒子群算法訓練CNN的模板,進行邊緣提取。

          雖然在細胞神經(jīng)網(wǎng)絡中允許任意規(guī)模的鄰域,隨著模板尺寸的增大,硬件實現(xiàn)的難度也隨之增大。受限于目前的VLSI技術,胞元之間的互聯(lián)只能是局部的。本文中,規(guī)定采用3x3鄰域,即模板A、模板B都是3x3的矩陣,且它們的系數(shù)都是實系數(shù)。因為目前大多數(shù)圖像處理針對的都是灰度級圖像,所以細胞神經(jīng)網(wǎng)絡胞元的輸入范圍被限定在[-1,+1]之間,-1代表白色像素,1代表黑色像素,其余的值代表二者之間的灰度值。這里采用定點數(shù),因為在硬件實現(xiàn)中,定點數(shù)具有更高的速度和更低廉的成本,特別是在調用FPGA中的乘法底層原語時。

          單個胞元的串行硬件實現(xiàn)結構,完成一次胞元狀態(tài)更新的運算至少需要9個時鐘周期。為了提高速度,可以在計算胞元狀態(tài)更新時采用并行結構,如圖3所示,通過采用流水線結構,完成一次胞元狀態(tài)的更新只需要1個時鐘周期。本文采用并行結構在FPGA中實現(xiàn)細胞神經(jīng)網(wǎng)絡。

          圖3 CNN 并行實現(xiàn)結構框圖

          3 硬件設計

          圖像數(shù)據(jù)采集模塊用于實現(xiàn)圖像數(shù)據(jù)的捕捉,根據(jù)圖像傳感器MT9M011輸出數(shù)據(jù)時序,當視頻捕捉開始鍵按下時,該模塊開始接收數(shù)據(jù),在獲得有效像素數(shù)據(jù)的同時也接收了消隱期的圖像數(shù)據(jù),所以設置了輸出數(shù)據(jù)有效信號,用以在接下來的RAW2RGB模塊把有效數(shù)據(jù)和非有效數(shù)據(jù)區(qū)分開來。

          3.1 RAW2RGB模塊的設計

          MT9M011采用的是Bayer型CFA(Color Filter Array,顏色濾波陣列),由于該圖像傳感器的分辨率為1280x1024,這里采用的插值算法,每四個像素合并為一個像素,像素值的變化如圖4所示,這樣經(jīng)過RAW2RGB模塊后,圖像的分辨率變?yōu)樵瓉淼囊话?,?40x512。

          該模塊的硬件實現(xiàn)框圖如圖5所示。其中control模塊由兩個狀態(tài)機組成,分別是ram_wr_state和ram_rd_state。ram_wr_state狀態(tài)機負責產(chǎn)生RAM的寫使能和寫地址。當輸入數(shù)據(jù)有效時,把輸入的像素數(shù)據(jù)依次交替存儲在2個RAM中,構成類似乒乓操作的結構。這個狀態(tài)機負責產(chǎn)生RAM的寫使能和寫地址。ram_rd_state的狀態(tài)機負責產(chǎn)生RAM的讀使能和讀地址。

          圖4 顏色插值算法示意圖

          圖5 RAW2RGB模塊的硬件結構框圖

          這里為了便于檢驗算法的正確性,適當?shù)膶?shù)字視頻流進行了一些簡化。由于編程時采用參數(shù)化設計,所以這并不會對系統(tǒng)的設計產(chǎn)生影響。這里假定待處理的原始數(shù)據(jù)每行只有12個像素,以兩行數(shù)據(jù)為例,經(jīng)過處理后的數(shù)據(jù)(每個像素包含R、G、B三種顏色分量),每行只包含6個像素,減少了一半,同樣行數(shù)也變?yōu)樵瓉淼?/2。這樣,當?shù)却幚淼膱D像分辨率為1280x1024時,經(jīng)過該模塊后的圖像分辨率變?yōu)?40x512。圖7為經(jīng)過顏色插值后的實際輸出,與圖6經(jīng)過顏色插值后的預期輸出相比較可以看出,該顏色插值模塊的設計完全達到了預期的要求。

          圖6 經(jīng)過顏色插值后的預期輸出

          圖7 經(jīng)過顏色插值后的實際輸出

          3.2 顏色空間轉換模塊的硬件設計

          YCbCr坐標與RGB坐標之間的關系如下:

           
                                                       (1)
          有三種方案實現(xiàn)此模塊設計,第一種方案采用Verilog語言對該轉換公式進行行為描述;第二種方案采用FPGA芯片內的RAM構造乘法器查找表,將轉換公式內所有可能的中間結果存放在存儲器中。該系統(tǒng)需要9個乘法器查找表,每個乘法器查找表的深度是1k,將操作數(shù)R、G、B作為地址訪問存儲器,得到的輸出數(shù)據(jù)就是乘法運算的結果。查找表乘法器的速度只局限于所使用存儲器的存取速度。第三種方案是對第一種方案進行改進,采用流水線結構實現(xiàn)此系統(tǒng)設計,大大提高了運算速度。本文采用第三種方案。流水線處理是高速設計中的一個常用設計手段。充分利用了硬件內部并行性,增加數(shù)據(jù)處理能力。這種流水線作業(yè)是在幾個步驟中執(zhí)行運算的功能單元的序列。每個功能單元接受輸入,生成的輸出則是緩沖器存儲的輸出。實現(xiàn)流水線結構的方法很簡單,只要在每個運算部件(包括乘法器和加減法器)的輸出以及系統(tǒng)的輸入輸出之間加上寄存器緩存即可。利用流水線技術的顏色空間轉換實現(xiàn)框圖如圖8所示。一個數(shù)字系統(tǒng)的最高時鐘頻率受限于寄存器與寄存器之間的最大門延遲,如果不在每個運算部件的輸出后面加上寄存器緩存,則寄存器與寄存器之間的最大門延遲為輸入RGB信號到輸出YCbCr信號之間的延遲。由于輸入RGB信號到輸出YCbCr信號之間存在大規(guī)模的組合邏輯電路,因此延遲很大。采用流水線結構之后,寄存器與寄存器之間的組合邏輯電路規(guī)模變小了,因此延遲變小,從而可以提高系統(tǒng)時鐘。 

          圖8  利用流水線技術的顏色空間轉換實現(xiàn)框圖

          波形仿真如圖9所示。由波形圖可以看到,相比于輸入,輸出結果延遲5個時鐘周期出現(xiàn),這是使用流水線結構造成的結果。例如輸入(R,G,B)=(1023,1023,1023),在5個時鐘周期后輸出(Y,Cb, Cr)=(944,514,514)。雖然輸出延遲了5個時鐘周期,但每計算一個像素顏色轉換仍只需要1個時鐘周期。

          圖9  RGB2YCbCr模塊仿真輸出

          同理,可以采用方案2,即FPGA芯片內的RAM構造乘法器查找表,可以實現(xiàn)YCbCr向RGB的顏色空間轉換。波形仿真如圖10所示。由波形圖可以看到,相比于輸入,輸出結果延遲3個時鐘周期出現(xiàn),這是使用寄存器鎖存造成的結果。例如輸入(Y,Cb, Cr)=(944,514,514),在3個時鐘周期后輸出(R,G,B)=(1023,1021,1023)。雖然輸出延遲了3個時鐘周期,但每計算一個像素顏色轉換仍只需要1個時鐘周期。

          圖10  YCbCr2RGB模塊仿真輸出

          3.3 細胞神經(jīng)網(wǎng)絡的IP核設計

          根據(jù)CNN的理論,模板中的權數(shù)分別對應了待處理像素周圍的八個像素,所以在對某個像素進行處理之前,必須先讀入該點周圍的八個像素點,即某個像素點的結果不僅同本身像素有關,而且同鄰域點像素灰度值有關。因為采用的CMOS圖像傳感器每行640個像素。因此構造3

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();