劉慧忠 湯 偉
(陜西科技大學(xué)電氣與信息工程學(xué)院,陜西西安,710021)
現(xiàn)代造紙機(jī)的幅寬可以超過(guò)9 m,速度最高達(dá)到1800 m/min。紙機(jī)車速提高后將面臨紙張出現(xiàn)更多缺陷的風(fēng)險(xiǎn)。與此同時(shí),人們對(duì)紙張的要求也越來(lái)越高[1]。目前的機(jī)器視覺檢測(cè)設(shè)備集合了高速CCD相機(jī)與計(jì)算機(jī),但是紙病檢測(cè)過(guò)程中處理的數(shù)據(jù)量非常大,而且實(shí)時(shí)性要求高?;谲浖姆椒ǎ捎谟?jì)算機(jī)是串行結(jié)構(gòu),在計(jì)算速度和算法效率方面存在局限性[2]。許多紙病圖像處理操作本身是并行的,而FPGA提供的可編程硬件本身也是并行的[3- 4]?;贔PGA和計(jì)算機(jī)的紙病檢測(cè)系統(tǒng)可以利用FPGA對(duì)圖像進(jìn)行預(yù)處理,“分揀”出有紙病的圖像送到計(jì)算機(jī)再進(jìn)行進(jìn)一步的識(shí)別,即計(jì)算機(jī)只需對(duì)有紙病的圖像進(jìn)行識(shí)別,判斷是何種紙病。
紙張生產(chǎn)過(guò)程中,各種外界因素造成的常見外觀紙病有黑斑、塵埃、孔洞、亮斑、劃痕、邊緣裂縫、褶皺等[5]。因?yàn)楣I(yè)現(xiàn)場(chǎng)環(huán)境的原因,CCD相機(jī)采集到的紙病圖像會(huì)含有噪聲,所以需要先對(duì)紙病圖像進(jìn)行濾波,然后檢測(cè)經(jīng)過(guò)濾波處理后的紙病圖像的邊緣,最后確定紙病位置。因此,紙病圖像的預(yù)處理過(guò)程主要為:濾波→邊緣檢測(cè)→質(zhì)心定位。
基于FPGA和計(jì)算機(jī)的紙病檢測(cè)系統(tǒng)的圖像預(yù)處理包括圖像濾波、圖像邊緣檢測(cè)和紙病質(zhì)心定位。利用DSP Builder工具對(duì)圖像預(yù)處理算法進(jìn)行設(shè)計(jì),可以通過(guò)Altera公司的FPGA實(shí)現(xiàn)。
本研究采用串行流水的3X3滑動(dòng)窗口采集圖像每個(gè)像素點(diǎn)的灰度。3X3滑動(dòng)窗口設(shè)計(jì)如圖1所示,其中,Delay模塊是延遲一個(gè)時(shí)間單位的寄存器,Memory Delay模塊是640個(gè)時(shí)間單位的延遲(圖片像素640×480)。r1~r3_d2代表滑動(dòng)窗口中的9個(gè)像素點(diǎn)的灰度。
中值濾波是一種非線性數(shù)字濾波器技術(shù),用于去除圖像中的噪聲。中值濾波的基本原理是檢查輸入信號(hào)中的采樣并判斷它是否代表了信號(hào),使用奇數(shù)采樣組成的觀察窗實(shí)現(xiàn)這項(xiàng)功能,讓周圍的像素接近真實(shí)值,從而消除孤立的噪聲點(diǎn)[6]。方法是將窗口中的數(shù)值進(jìn)行排序,用中值作為輸出值,然后重復(fù)上述過(guò)程。基于DSP Builder的中值濾波算法模型如圖2所示,將9個(gè)數(shù)值分為3組,分別求出每組的最大值、最小值、中值,再求出3個(gè)最大值中的最大值、3個(gè)中值中的中值、3個(gè)最小值中的最小值,最后求得上一步得出的3個(gè)數(shù)值中的中值,輸出結(jié)果。
圖像邊緣是圖像的最基本特征,是指圖像灰度局部變化顯著的地方。一幅圖像可以看作是圖像灰度的連續(xù)函數(shù)的取樣點(diǎn)矩陣,而圖像邊緣就是圖像灰度函數(shù)變化較大的地方。梯度是描述函數(shù)變化的一種度量,函數(shù)在某點(diǎn)的變化最大,就是在該點(diǎn)的梯度最大。在一維情況下,階躍邊緣與圖像的一階導(dǎo)數(shù)局部峰值有關(guān)[7]。
圖1 3X3滑動(dòng)窗口模型
圖2 中值濾波算法模型
圖3為Prewitt邊緣檢測(cè)算子。圖3中的Sx和Sy分別是Prewitt邊緣算子在水平方向和垂直方向的卷積核,它們分別與P5鄰域每個(gè)像素做卷積。雖然是對(duì)P5這個(gè)像素做卷積,卻必須同時(shí)知道P1~P9這幾個(gè)點(diǎn)的像素。
圖3 Prewitt邊緣檢測(cè)算子
由此可以知道P5點(diǎn)在水平方向的梯度公式為:
Gx=x1×P1+x2×P2+x3×P3+x4×P4+x5×P5+x6×P6+x7×P7+x8×P8+x9×P9
(1)
P5點(diǎn)在垂直方向的梯度公式與上式基本相同,只是P5鄰域上的每個(gè)像素與Sy上的每個(gè)點(diǎn)相乘。
圖4 邊緣檢測(cè)算法模型
圖5 質(zhì)心定位算法模型
圖6 對(duì)黑斑和劃痕紙病的仿真分析
Prewitt算子的水平方向和垂直方向的梯度公式可以用式(2)表示:
Gx=(P3+P6+P9)-
(P1+P4+P7)
Gy=(P7+P8+P9)-
(P1+P2+P3)
(2)
由此可計(jì)算得出圖像中P5每個(gè)鄰域中點(diǎn)梯度,再將該點(diǎn)的水平方向和垂直方向的梯度取絕對(duì)值后相加得|Gx|+|Gy|。Threshold可通過(guò)對(duì)圖像灰度作直方圖分析,再借助一定的經(jīng)驗(yàn)反復(fù)調(diào)整就可以得出。如果|Gx|+|Gy|大于Threshold,則該像素被定義為邊界像素,像素的灰度替換為255(白色),否則為一般像素,像素的灰度替換為0(黑色),從而實(shí)現(xiàn)了邊緣檢測(cè)。圖4為基于DSP Builder的邊緣檢測(cè)算法模型。
質(zhì)心定位是將目標(biāo)的質(zhì)心作為表征目標(biāo)的靜態(tài)參量,目的是獲得目標(biāo)區(qū)域的質(zhì)心位置,并將質(zhì)心坐標(biāo)輸出。目標(biāo)質(zhì)心即目標(biāo)區(qū)域的中心點(diǎn)。質(zhì)心定位方法包括:二值化質(zhì)心定位、灰度加權(quán)質(zhì)心定位算法和灰度平方加權(quán)質(zhì)心定位方法等。
二值化質(zhì)心定位方法是較為簡(jiǎn)單的方法,它將目標(biāo)成像點(diǎn)匹配窗口中的灰度圖像,根據(jù)選定的閾值轉(zhuǎn)換為二值圖像。二值圖像質(zhì)心計(jì)算如式(3):
(3)
式中,xm和ym為目標(biāo)質(zhì)心坐標(biāo),xi和yi為第i個(gè)像素的坐標(biāo),n為要計(jì)算的質(zhì)心窗口內(nèi)的像素個(gè)數(shù)。
HIL(Hardware-in-the-Loop)硬件在環(huán)仿真測(cè)試系統(tǒng)是實(shí)際控制器加虛擬對(duì)象的半實(shí)物仿真系統(tǒng)[8]。它可以加快模型所生成代碼的仿真速度,驗(yàn)證VHDL代碼的實(shí)時(shí)性和所生成的VHDL代碼在實(shí)際硬件中運(yùn)行的正確性[8- 9]。常見的紙病有黑斑、劃痕、孔洞和褶皺等。以黑斑和劃痕紙病為例進(jìn)行硬件在環(huán)測(cè)試實(shí)驗(yàn)。在原圖中加入椒鹽噪聲,然后經(jīng)過(guò)濾波、邊緣檢測(cè)、定位處理,結(jié)果如圖6所示。
由圖6可知,中值濾波對(duì)椒鹽噪聲有很好的去除效果,邊緣檢測(cè)可以清楚地檢測(cè)出紙病的邊緣,質(zhì)心定位算法可以對(duì)紙病的位置進(jìn)行定位。
由于ModelSim仿真結(jié)果與實(shí)際硬件的實(shí)現(xiàn)結(jié)果差別很小,所以可以通過(guò)ModelSim中的時(shí)間點(diǎn)間隔計(jì)算處理圖像的大致時(shí)間。圖像中值濾波部分所需處理時(shí)間為615552個(gè)周期,邊緣檢測(cè)部分處理時(shí)間為307204個(gè)周期,質(zhì)心定位處理時(shí)間為928個(gè)周期,設(shè)計(jì)時(shí)鐘周期為20 ns,預(yù)處理的總時(shí)間約為18.5 ms,能夠滿足實(shí)時(shí)性的要求。
利用DSP Builder工具設(shè)計(jì),基于FPGA和計(jì)算機(jī)的紙病檢測(cè)系統(tǒng)圖像預(yù)處理算法,可以實(shí)現(xiàn)如黑斑、劃痕等紙病圖像的濾波、邊緣檢測(cè)和質(zhì)心定位。利用FPGA計(jì)算速度快的特點(diǎn)可降低紙病檢測(cè)系統(tǒng)的成本,而且,仿真實(shí)驗(yàn)結(jié)果表明,基于FPGA的紙病預(yù)處理可以滿足紙病檢測(cè)系統(tǒng)實(shí)時(shí)性的要求。
參 考 文 獻(xiàn)
[1] 張 輝, 王淑梅, 程金蘭, 等. 我國(guó)制漿造紙裝備科學(xué)技術(shù)的發(fā)展[J]. 中國(guó)造紙, 2011, 30(4): 55.
[2] 劉 勇, 周 強(qiáng), 劉 濤, 等. 基于FPGA的紙病預(yù)處理系統(tǒng)[J]. 中國(guó)造紙, 2013, 32(8): 47.
[3] 原 魁, 何文浩, 肖 晗. 基于FPGA的嵌入式圖像處理系統(tǒng)設(shè)計(jì)[M]. 北京: 電子工業(yè)出版社, 2013.
[4] Richard Williams. Increase Image Processing System Performance with FPGAs[J]. Xcell Journal, 2004, 16(2): 10.
[5] 陳文凱. 基于機(jī)器視覺的紙病檢測(cè)算法研究與集成[D]. 南京: 南京林業(yè)大學(xué), 2009.
[6] 張旭明, 徐濱士, 董世運(yùn). 用于圖像處理的自適應(yīng)中值濾波[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2005, 17(2): 295.
[7] 陳勇濱, 王永麗. 基于閾值分割與邊緣檢測(cè)的對(duì)象輪廓提取方法研究[J]. 成都信息工程學(xué)院學(xué)報(bào), 2010, 25(3): 246.
[8] Tim Harriss, Richard Walke, Bart Kienhuis, et al. Compilation From Matlab to Process Networks Realized in FPGA[J].Design Automation for Embedded Systems, 2002(4): 385.
[9] 彭滋霖, 陽(yáng)春華. Matlab/Simulink到VHDL代碼的轉(zhuǎn)換研究及其實(shí)驗(yàn)配置[J]. 微電子技術(shù), 2007(4): 186.