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