劉小園
(羅定職業(yè)技術(shù)學(xué)院,羅定 527200)
數(shù)字圖像處理技術(shù)發(fā)展迅速,應(yīng)用于各個(gè)行業(yè)和領(lǐng)域,已成為當(dāng)前研究的熱點(diǎn)課題。數(shù)字圖像處理方法的研究源于兩個(gè)主要應(yīng)用領(lǐng)域:其一是為了便于人們分析而對(duì)圖像信息進(jìn)行改進(jìn);其二是為使機(jī)器自動(dòng)理解而對(duì)圖像數(shù)據(jù)進(jìn)行存儲(chǔ)、傳輸及顯示。人們的研究熱點(diǎn)主要在于對(duì)算法處理方便,由于數(shù)字圖像的海量信息和復(fù)雜算法實(shí)現(xiàn)時(shí)的反復(fù)運(yùn)算,對(duì)于單線程的CPU來說要付出昂貴的代價(jià)。而FPGA的靈活性和強(qiáng)大的并行處理能力能以較小的硬件開銷實(shí)現(xiàn)圖像的處理過程。人們已在近期內(nèi)開展這方面的研究,文獻(xiàn)[1]討論了用FPGA實(shí)現(xiàn)快速中值濾波算法,分析利用Sobel算子和系統(tǒng)級(jí)并行流水線進(jìn)行圖像邊緣檢測(cè)硬件電路設(shè)計(jì)的優(yōu)點(diǎn)和可行性。文獻(xiàn)[2]應(yīng)用提高程序效率、實(shí)現(xiàn)快速運(yùn)算的一種方法,并設(shè)計(jì)了一個(gè)利用中值濾波進(jìn)行圖像預(yù)處理的系統(tǒng),之后進(jìn)行了仿真和實(shí)驗(yàn)驗(yàn)證。所見研究都集中于圖像預(yù)處理方面,而在圖像最終識(shí)別方面研究甚少。
本文以實(shí)際項(xiàng)目鈔票流轉(zhuǎn)智能監(jiān)控系統(tǒng)為依托,利用CIS(接觸式圖像傳感器)獲取鈔票、支票和轉(zhuǎn)賬單的圖像信息,由FPGA和ARM組成了實(shí)時(shí)圖像處理識(shí)別系統(tǒng),利用FPGA構(gòu)建了各種噪聲去除、圖像增強(qiáng)、圖像預(yù)處理、模板匹配等圖像硬件處理器,實(shí)現(xiàn)對(duì)26個(gè)英文字母和10個(gè)阿拉伯?dāng)?shù)字的實(shí)時(shí)識(shí)別。在匹配算法的基礎(chǔ)上,利用FPGA大規(guī)模的布爾代數(shù)并行計(jì)算特性,實(shí)現(xiàn)了識(shí)別的時(shí)鐘周期級(jí)別的識(shí)別速度。在大幅度降低了硬件成本的同時(shí)大幅度提高了識(shí)別的速度。由于鈔票流轉(zhuǎn)智能監(jiān)控系統(tǒng)特殊的工作要求,圖像采集是由高速CIS來完成的。CIS采集與其它圖像傳感器不同,它成像物距幾乎為零,按照實(shí)物與圖像1:1的比例來完成的,所以采集到的字符圖像大小縮放和形變非常小,為后期的識(shí)別減少了大量的圖形校正工作。在實(shí)驗(yàn)過程中加入定位裝置以后,經(jīng)過幾千次的采集實(shí)驗(yàn),均未出現(xiàn)字符圖像較大形變的現(xiàn)象。
中值濾波既能消除圖像中的噪聲,而且還能較好地保持圖像的邊緣。因此,本系統(tǒng)采用中值濾波來降噪。中值濾波的基本原理是把數(shù)字圖像中一點(diǎn)的值用該點(diǎn)的一個(gè)鄰域(即濾波窗口)中各點(diǎn)值的中值代替。所以,在實(shí)際的中值濾波設(shè)計(jì)中,主要的工作就是確定鄰域形狀及大小,選擇合理的方法找出中值即可。根據(jù)實(shí)際處理速度、處理效果和器件資源要求,本文選用的是3×3鄰域窗口。傳統(tǒng)的中值濾波算法,是使用冒泡法對(duì)濾波窗口內(nèi)像素值排序找出中值來實(shí)現(xiàn)的,需經(jīng)過12級(jí)的比較排序找出中值,也就是說,至少要經(jīng)過12個(gè)時(shí)鐘周期的延時(shí)。本文所使用的排序方法對(duì)傳統(tǒng)方法進(jìn)行了改進(jìn)[3],它基于三輸入排序單元(每個(gè)三輸入單元又是由若干二輸入單元構(gòu)成)。其指導(dǎo)思想并不是對(duì)整個(gè)鄰域窗口內(nèi)所有的像素值進(jìn)行排序,而是直接找出其中的最大值、最小值和中間值,并不管其他像素值的排列順序。排序過程如1圖所示。
圖1 排序過程圖
這種方法比前一種方法減少了邏輯資源的占用,卻和前一種方法一樣能找出中值。本設(shè)計(jì)模塊共進(jìn)行了三級(jí)排序操作,每一級(jí)采用了流水線緩存技術(shù),使得每一組3×3鄰域窗口內(nèi)的輸入像素值在每一時(shí)鐘節(jié)拍都得到處理,保證了模塊的處理頻率。
銳化處理主要是突出圖像中的細(xì)節(jié)或者增強(qiáng)被模糊了的細(xì)節(jié),這些模糊是圖像采集時(shí)不可避免的?;谖⒎值募?xì)節(jié)銳化濾波器是應(yīng)用很廣而又相對(duì)容易實(shí)現(xiàn)的銳化濾波器,其中二階微分處理對(duì)細(xì)節(jié)有較強(qiáng)的響應(yīng),對(duì)線的響應(yīng)階梯性強(qiáng),非常適合字符識(shí)別圖像的銳化處理。拉普拉斯算子是一種各向同性二階微分濾波器,其響應(yīng)與圖像的突變方向無關(guān)[4]。二元圖像函數(shù)f(x, y)的拉普拉斯變換定義為:
在x軸和y軸方向上的離散形式可表示為:2f=[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]-4f(x,y)
如以3×3掩模為基礎(chǔ)(原圖如圖2所示),將對(duì)角線上的項(xiàng)也加以考慮,其銳化效果將更加明顯(如圖3所示),拉普拉斯的離散形式表達(dá)式為:
圖像二值化的關(guān)鍵在于閾值T的選擇既門限處理。設(shè)圖像f(x,y),有筆劃的部分的f(x,y)小,白背景部分的f(x,y)大。二值化可以通過設(shè)定灰度閾值來完成,即當(dāng)f(x,y)值比預(yù)定閾值大時(shí),看成背景,以0表示;否則看成筆劃,以1表示。這樣,經(jīng)過門限處理后,各點(diǎn)重新表示為:
由于人民幣號(hào)碼字符與背量灰度差異較大,所以二值化閾值T的可選擇范圍較廣。取T=158對(duì)圖3的處理如圖4所示。
圖4 二值化后
號(hào)碼字符的垂直切分,就是從垂直方向上將號(hào)碼中的字符分離開來。最基本的分割原理基于字符間存在一個(gè)垂直投影值接近于0的區(qū)域這一特征。因?yàn)橛袃煞N類型,應(yīng)先在系統(tǒng)內(nèi)制定兩個(gè)切分模板M1,M2,再?gòu)臉?biāo)準(zhǔn)模板中派生出一系列子模板M'。子模板用于垂直切分位置的匹配。設(shè)子模板M'中有k個(gè)字符,于是有k+1條切分線。設(shè)切分線在垂直投影直方圖H上對(duì)應(yīng)的位置分別是:s1,s2,…,s(k+1)。切分線si的切分權(quán)重為wi,對(duì)應(yīng)的直方圖投影為mi。決策函數(shù)f定義為
水平切分就是要確定號(hào)碼上每個(gè)字符的上下邊界。當(dāng)垂直切分完成后,由垂直切分線可以確定某個(gè)字符所在的垂直方向的條形區(qū)域。把這一區(qū)域向水平方向作投影,就能確定字符的大致水平邊界。以此計(jì)算各個(gè)字符的高度并統(tǒng)計(jì)相近高度的字符數(shù),從而找到具有最多字符個(gè)數(shù)的相似組。凡與相似組相近高度的字符區(qū)設(shè)置為有效。
字符規(guī)一化包括位置和大小兩方面。位置處理又分重心和外框處理兩種。重心歸一化后字符的重心位于圖像中心;外框歸一化是將字符的外框移到圖像的規(guī)定位置上。重心計(jì)算是全局的,抗干擾能力強(qiáng),不會(huì)造成字形失真,但對(duì)一些分布不勻的字符如9、6等失真;邊框搜索是局部性的,易受干擾影響,因此可考慮在邊框搜索的基礎(chǔ)上結(jié)合重心處理[5]。大小歸一化采用了二值圖像快速采樣的線性算法,建立坐標(biāo)映射關(guān)系表。原始圖像(大小為Col*Row)中(x.y)處的像素點(diǎn)在規(guī)一化圖像(大小為Size*Size)中對(duì)應(yīng)的坐標(biāo)(X,Y)有如下關(guān)系:
在識(shí)別的過程中,本文運(yùn)用FPGA的異或門來判別實(shí)現(xiàn),從而進(jìn)一步大幅度地提高了識(shí)別的速度。在進(jìn)行識(shí)別之前的切分階段已經(jīng)將字符的尺寸統(tǒng)一為高7像素,寬5像素,字符模板的尺寸也按照這樣的要求事先設(shè)計(jì)好。
將字符模板T疊放在待測(cè)圖S上。比較T和S的內(nèi)容。若兩者一致,則T和S之差為零,可用以下測(cè)度來衡量T和S的相似度。
上述匹配過程如果由CPU來完成,對(duì)每一個(gè)像素點(diǎn)只能串行操作,而且每一個(gè)像素點(diǎn)的匹配都需要3-4個(gè)總線周期。這樣就占用了大量的時(shí)間和硬件資源,使系統(tǒng)的成本大幅上升。FPGA的布爾代數(shù)運(yùn)算突出,具有高速并行運(yùn)算能力,總線帶寬幾乎不受限制,而且成本很低。如果我們構(gòu)建一個(gè)由異或門組成的矩陣來完成匹配的過程,那么一次匹配就只需要一個(gè)時(shí)鐘周期就可以完成。如果我們構(gòu)建25個(gè)匹配矩陣(人民幣實(shí)際只用了除V以外的25個(gè)大字英文字母),就可以在一個(gè)時(shí)鐘周期內(nèi)完成一個(gè)字符識(shí)別的匹配過程。
由圖5可見,匹配矩陣的匹配結(jié)果直接由35位位加法器完成,CPU只需檢測(cè)XSD[6..0]的結(jié)果就可以得出相似度最高的字母。
圖5 加法器
圖像識(shí)別處理的實(shí)時(shí)應(yīng)用越來越多,如人臉識(shí)別、高速票據(jù)處理等。傳統(tǒng)的實(shí)時(shí)圖像處理算法和方法實(shí)現(xiàn)的代價(jià)太高,而且同樣的算法在不同的實(shí)現(xiàn)平臺(tái)上實(shí)時(shí)性也會(huì)有巨大差異。此外,真正實(shí)用的實(shí)時(shí)系統(tǒng)不僅能夠滿足核心的算法設(shè)計(jì)要求,而且還適應(yīng)于不同的應(yīng)用場(chǎng)合。比如可以擴(kuò)展系統(tǒng)使之具備信號(hào)輸入模塊、實(shí)時(shí)控制模塊、網(wǎng)絡(luò)通信模塊等等。一個(gè)圖像識(shí)別系統(tǒng)的處理時(shí)間,一方面和算法所采用的實(shí)現(xiàn)策略有關(guān),另一方面也和系統(tǒng)的架構(gòu)和硬件性能有關(guān)。對(duì)于實(shí)時(shí)圖像識(shí)別系統(tǒng)的實(shí)現(xiàn),基于計(jì)算機(jī)CPU體系結(jié)構(gòu)和操作系統(tǒng)不適合實(shí)時(shí)大量的圖像快速處理的要求;而面向算法的高性能DSP處理器的并行結(jié)構(gòu)相對(duì)于微機(jī)而言開發(fā)周期比較長(zhǎng),算法的靈活性也比較差。綜合考慮開發(fā)成本、靈活性、實(shí)時(shí)性以及系統(tǒng)的集成度等方面因素,本文采用了ARM+FPGA系統(tǒng),能很好的滿足高速實(shí)時(shí)圖像處理的要求。
[1] 王耀南.計(jì)算機(jī)圖像處理與識(shí)別技術(shù)[J].2001,6,1.
[2] 胡愛明,周孝寬.車牌圖像的快速匹配識(shí)別方法[M].計(jì)算機(jī)工程與應(yīng)用,2003.
[3] 方翰華,陳新華,沈國(guó)新,焦?jié)h明.基于FPGA圖像濾波算法硬件化設(shè)計(jì)[J].電子測(cè)量技術(shù),2009,12:68-71.
[4] Rafacel C.Gonzalez,Richard E.Woods Digital Image Processing Second Edition,2007.
[5] 王欣,殷肖川,周翔翔.一種改進(jìn)的模版匹配識(shí)別算法[M].計(jì)算機(jī)工程與應(yīng)用,2007.