齊 璐,周 強(qiáng),王志強(qiáng)
(陜西科技大學(xué) 電氣與信息工程學(xué)院,陜西 西安710021)
隨著現(xiàn)場可編程門陣列(FPGA)制造工藝和集成技術(shù)的不斷發(fā)展,利用FPGA 來設(shè)計(jì)數(shù)字硬件系統(tǒng)越來越能體現(xiàn)它在圖像處理中的強(qiáng)大優(yōu)勢。以往PC 作為圖像處理系統(tǒng),在高速實(shí)驗(yàn)等對速度要求較高的應(yīng)用場合中無法滿足實(shí)際需求;采用FPGA+數(shù)字信號(hào)處理器(DSP)相結(jié)合的系統(tǒng)[1],方法結(jié)構(gòu)較為復(fù)雜,且成本較高,容易造成資源的浪費(fèi);若以FPGA 作為核心芯片,因FPGA 本身只適合做一些大數(shù)據(jù)量,且算法簡單的運(yùn)算不適合做復(fù)雜的運(yùn)算,這樣的局限性使得它只能實(shí)現(xiàn)一些簡單的圖像預(yù)處理算法,并沒有在FPGA 中實(shí)現(xiàn)完整的圖像算法結(jié)構(gòu);還有不少方案采用可編程片上系統(tǒng)(SOPC)來完成圖像處理,但都僅僅是將SOPC 當(dāng)作一個(gè)CPU 來使用[2],所有的運(yùn)算都是在SOPC中實(shí)現(xiàn),并沒有體現(xiàn)出FPGA 的并行運(yùn)算的特點(diǎn),無法滿足系統(tǒng)實(shí)時(shí)性。
針對PC,F(xiàn)PGA+DSP,F(xiàn)PGA,SOPC 等在紙病圖像處理上的不足,本文提出了一種FPGA+SOPC 相結(jié)合的紙病圖像處理系統(tǒng),利用各自優(yōu)勢來達(dá)到實(shí)時(shí)的紙病圖像處理。紙病圖像從獲取到識(shí)別過程最關(guān)鍵的在于速度上能否滿足要求。紙病圖像由CCD 相機(jī)獲取,F(xiàn)PGA 芯片采用Altera公司的Cyclone IV 系列,用來將采集到的圖片信息進(jìn)行存儲(chǔ)、處理和顯示。將適合硬件模塊完成的運(yùn)算用Verilog HDL 編寫,讓硬件模塊能快速實(shí)現(xiàn)相對應(yīng)的功能,如圖像濾波、圖像邊緣檢測等;而對于較為復(fù)雜的運(yùn)算,如流程判斷、圖像識(shí)別等運(yùn)算則交給SOPC 采用C/C++語言實(shí)現(xiàn)。最終滿足了紙病圖像處理的快速性和穩(wěn)定性。
系統(tǒng)整體結(jié)構(gòu)主要由五部分構(gòu)成,如圖1 所示,分別為CCD 相機(jī)、FPGA 芯片、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)芯片、數(shù)/模轉(zhuǎn)換器(DAC)芯片及液晶顯示器(LCD)。其中,CCD 相機(jī)選用DALSA 公司的Spyder3 系列的線陣相機(jī);DDR2 SDRAM 采用MT47H64M16 芯片,該芯片的總存儲(chǔ)量達(dá)到1GB,SDRAM 采用IS42S16160B;FPGA 芯片采用Cyclone IV 系列芯片LCD 采用的是計(jì)算機(jī)的顯示屏。
圖1 系統(tǒng)結(jié)構(gòu)整體框圖Fig 1 Overall block diagram of system structure
紙病圖像采集是FPGA 上的SOPC 通過系統(tǒng)總線控制圖像采集模塊,圖像采集模塊再控制CCD 相機(jī)來實(shí)現(xiàn)的,將采集到的數(shù)據(jù)存儲(chǔ)在外部存儲(chǔ)器DDR2 SDRAM 中,然后SOPC 對圖像處理算法進(jìn)行判斷和分類,將適合硬件完成處理的步驟通過總線將相應(yīng)的參數(shù)和命令發(fā)送給對應(yīng)的硬件模塊,硬件模塊在完成相應(yīng)的處理后再通過總線反饋結(jié)束信號(hào)給SOPC。對于不適合硬件處理的算法則交給SOPC,由SOPC 利用其內(nèi)部的CPU 進(jìn)行運(yùn)算,這兩部分運(yùn)算是相互獨(dú)立、互不依賴的,實(shí)現(xiàn)了模塊間的并行加速。在整個(gè)紙病圖像處理系統(tǒng)中,SOPC 一直按照這樣的方法來處理,直到處理結(jié)束,處理完成后的圖像通過LCD 顯示出來,以便人工進(jìn)行圖像判斷,對算法進(jìn)行改進(jìn)和優(yōu)化,以滿足實(shí)際的應(yīng)用要求[3]。
紙病圖像處理過程可以分為圖像預(yù)處理、特征提取和紙病辨識(shí)三部分,本系統(tǒng)將FPGA 的軟硬件相結(jié)合使用,圖像預(yù)處理的工作仍然由FPGA 的Verilog HDL 來描述與執(zhí)行,特征提取與紙病辨識(shí)則由FPGA 上的SOPC 完成,計(jì)算機(jī)只承擔(dān)紙病后期處理的任務(wù),該系統(tǒng)不僅節(jié)約了成本,還使得紙病圖像處理得到了并行加速。具體過程見圖2。
圖2 基于FPGA 的紙病圖像處理系統(tǒng)框圖Fig 2 Block diagram of paper defect image processing system based on FPGA
軟硬件協(xié)同就是同時(shí)設(shè)計(jì)系統(tǒng)的硬件和軟件部分,使系統(tǒng)間的相互影響因素可以協(xié)調(diào)地完成需要實(shí)現(xiàn)的功能,提高系統(tǒng)的執(zhí)行速度,同時(shí)還增強(qiáng)了系統(tǒng)的穩(wěn)定性[4],軟硬件協(xié)同的設(shè)計(jì)流程圖如圖3 所示。
圖3 軟硬件協(xié)調(diào)設(shè)計(jì)流程圖Fig 3 Flow chart of hardware software coordination design
硬件模式下的紙病圖像預(yù)處理是指適合用硬件描述語言(HDL)來完成編寫和實(shí)現(xiàn)的圖像處理,圖像預(yù)處理一般分為濾波與邊緣檢測等。圖像預(yù)處理是圖像識(shí)別前的必要步驟,經(jīng)過預(yù)處理后的圖像為后續(xù)的處理打好基礎(chǔ)。
2.1.1 紙病圖像濾波
圖像濾波的方式多種多樣,常見的有均值濾波、高斯濾波和中值濾波。通過濾波可以減少圖像的噪聲,凸顯有效信息。一般來說,攝像機(jī)在拍攝過程中容易產(chǎn)生椒鹽噪聲,而中值濾波可以有效地去除這種噪聲[5],F(xiàn)PGA 并行的處理方式使處理速度加快,且該方式易于實(shí)現(xiàn)。
本系統(tǒng)中值濾波選用3×3 模板,利用改進(jìn)的中值濾波算法進(jìn)行處理,改進(jìn)的具體過程以數(shù)字1~9 為例,任意填在3×3 模板中進(jìn)行說明。具體過程如圖4 所示。
在模板中先依次將每一行按照從大到小排列,然后再將每一列按照從大到小排列,最后用第一列的最小值、第二列的中間值、第三列的最大值作比較,得到的中間值即為中值,該方法可以大大縮短運(yùn)算次數(shù),且適合于在FPGA 上做并行處理。
圖4 3×3 模板下的快速中值濾波Fig 4 Fast median filtering under 3×3 template
2.1.2 紙病圖像邊緣檢測
邊緣檢測是為了將紙病圖像中亮度有明顯變化的地方識(shí)別出來,Sobel 算子有很強(qiáng)的邊緣性[6],對水平和垂直方向都很敏感,且具有平滑作用,能夠提供較為精確的邊緣方向信息,本系統(tǒng)將Sobel 算子用硬件方式來實(shí)現(xiàn)。但值得注意的是,由于是用FPGA 做圖像處理,在保證實(shí)時(shí)性的同時(shí),SDRAM 只相當(dāng)于圖像的緩存器,沒有辦法去存取每一個(gè)像素的信息,所以,需要一個(gè)LineBuffer_3 模塊來緩存圖像數(shù)據(jù)。在本系統(tǒng)中利用QuartusⅡ工具所提供的參數(shù)可設(shè)置宏功能Megafunctin 中的移位寄存器宏模塊altshift_taps 實(shí)現(xiàn)了緩沖器功能。圖像數(shù)據(jù)緩存模塊LineBuffer_3通過altshift_taps 配置實(shí)現(xiàn)。如圖5 所示。
圖5 LineBuffer_3 模塊配置Fig 5 Module configuration of LineBuffer_3
經(jīng)過預(yù)處理可以將紙病圖像區(qū)域提取出來,但具體是哪一種紙病還需要進(jìn)行進(jìn)一步的處理。紙病辨識(shí)是紙病檢測過程中最為核心的部分,辨識(shí)結(jié)果的準(zhǔn)確性將直接影響紙張質(zhì)量好壞的評(píng)定,所以,分類器的選擇十分重要[7]。在本系統(tǒng)中選擇貝葉斯分類器,貝葉斯分類器在給出某些變量的條件下,能使分類所造成的平均損失最小,或分類決策的風(fēng)險(xiǎn)最小。對于待檢測紙病圖像,貝葉斯公式可以計(jì)算出該紙病圖像分屬于各類別的概率,即后驗(yàn)概率。若X 屬于哪個(gè)類的可能性最大,就把X 歸于可能性最大的那個(gè)類。貝葉斯公式如式(1)
其中,p(wi)為先驗(yàn)概率,P(X|wi)為條件概率密度,P(wi|X)為在X 出現(xiàn)條件下,樣品wi類的概率。
采用FPGA+SOPC 相結(jié)合的方法對算法進(jìn)行分析與分類,其中,適合用FPGA 硬件方式實(shí)現(xiàn)的紙病圖像預(yù)處理部分為中值濾波與邊緣檢測,而適合用SOPC 的軟件方式實(shí)現(xiàn)的紙病圖像處理是特征提取與紙病辨識(shí)。
將CCD 相機(jī)采集到的紙病圖像進(jìn)行預(yù)處理,這部分因?yàn)槠溥壿嬓暂^強(qiáng),可以用Verilog HDL 語言編寫。將程序進(jìn)行Modelsim 仿真,得到的仿真波形如圖6 所示。
圖6 中值濾波仿真波形Fig 6 Median filtering simulation waveforms
從圖6 中可以看到:該系統(tǒng)采用的快速中值濾波方法可以較為準(zhǔn)確地得到濾波結(jié)果,輸出結(jié)果與預(yù)期結(jié)果相同,說明該方法可行。經(jīng)濾波的圖像能夠?qū)⒁蛳鄼C(jī)拍攝而產(chǎn)生的椒鹽噪聲有效去除。
邊緣檢測算子采用的是Sobel 算子,將濾波后的紙病圖像再進(jìn)行邊緣檢測,得到的紙病圖像如圖7 所示,其中,(a1),(b1),(c1)為預(yù)處理前的紙病圖像,分別為邊緣裂紋、孔洞、亮斑;(a2),(b2),(c2)則為經(jīng)過圖像預(yù)處理后的紙病圖像。
圖7 經(jīng)過圖像預(yù)處理后的紙病圖像Fig 7 Paper defect image after image preprocessing
將經(jīng)過預(yù)處理的紙病圖像交由軟件部分進(jìn)行處理,系統(tǒng)將紙病辨識(shí)設(shè)計(jì)成用戶可自定義的IP 核,可以使用Qsys工具將這些IP 核添加到系統(tǒng),具體的Qsys 紙病處理系統(tǒng)如圖8 所示。
圖8 Qsys 紙病處理系統(tǒng)配置Fig 8 Configuration of Qsys paper defect treatment system
將配置后的系統(tǒng)進(jìn)行綜合,再將紙病辨識(shí)的程序?qū)懭胲浐酥校?jīng)過紙病圖像辨識(shí)后上傳給上位機(jī)進(jìn)行顯示,結(jié)果如圖9 所示。
圖9 紙病檢測系統(tǒng)界面Fig 9 Interface of paper defect detection system
從圖9 中可以看出:界面左側(cè)顯示分為上、下兩部分,上部顯示的是當(dāng)前辨識(shí)出來的紙病類型,而下部顯示的則是之前辨識(shí)出的紙病類型,歷史紙病記錄是可以翻閱查詢的。界面右側(cè)是紙張總數(shù)、不同類型紙病數(shù)量、正常紙張數(shù)量、紙病類型的顯示。
將在FPGA 硬件平臺(tái)上實(shí)現(xiàn)的紙病圖像處理過程與PC上用軟件實(shí)現(xiàn)的方式進(jìn)行比較,從而得到本系統(tǒng)與PC 性能的對比表,見表1。
表1 FPGA 與PC 算法時(shí)間比較Tab 1 Time comparison of FPGA and PC algorithms
從表1 中可以看出:用FPGA 處理紙病圖像的速度要遠(yuǎn)遠(yuǎn)小于PC方式,原因在于FPGA是并行處理,不用等到正在運(yùn)行的算法結(jié)束,而PC 則是串行方式來處理。對于更加復(fù)雜的算法來說,可使用并行運(yùn)算的算法越多,越可以體現(xiàn)出FPGA 軟硬件協(xié)同處理的優(yōu)勢。
本文提出了一種基于FPGA 的軟硬件協(xié)同實(shí)時(shí)紙病圖像處理系統(tǒng),從硬件到軟件詳細(xì)概述了該系統(tǒng)的組成、設(shè)計(jì)及實(shí)現(xiàn)。該系統(tǒng)結(jié)構(gòu)清晰,并且可以根據(jù)需要進(jìn)行定制和修改。在紙病圖像處理系統(tǒng)中使FPGA 的利用率最大化,分擔(dān)了計(jì)算機(jī)處理的數(shù)據(jù)量。通過實(shí)驗(yàn)分析可知:FPGA 的使用大大提高了紙病圖像處理的速度,通過與PC 性能的對比,表明該系統(tǒng)可以滿足紙病圖像處理的實(shí)時(shí)性要求。
[1] 陳 偉,段發(fā)階,董宇青,等.基于DSP+FPGA 分層圖像處理技術(shù)的智能相機(jī)設(shè)計(jì)[J].傳感器與微系統(tǒng),2010,29(12):111-113.
[2] 王炳健,劉上乾.基于FPGA 的紅外焦平面實(shí)時(shí)圖像處理系統(tǒng)[J].紅外與激光工程,2006,35(6):655-658.
[3] Zahir Larabi,Yves Mathieu.Efficient data access management for FPGA-based image processing SoCs[C]∥IEEE/IFIP International Symposium on Rapid System Prototyping,2009:159-164.
[4] 湯 惟,葛保健.基于FPGA 的SOPC 軟硬件協(xié)同設(shè)計(jì)[J].江漢大學(xué)學(xué)報(bào),2007,35(3):49-52.
[5] 劉慧中,湯 偉.基于FPGA 的紙病檢測預(yù)處理算法的實(shí)現(xiàn)[J].中國造紙學(xué)報(bào),2014,29(1):53-57.
[6] 楊新華,寇為剛.基于FPGA 的Sobel 算子圖像邊緣檢測算法[J].儀表技術(shù)與傳感器,2013(1):102-104.
[7] 院金彪,周 強(qiáng).基于樸素貝葉斯分類器的紙病離線靜態(tài)辨識(shí)方法研究[J].中國造紙學(xué)報(bào),2014,29(1):58-62.