崔博文 , 張洚宇 , 周 鵬 , 黃文杰 , 劉月秋
(新疆科技學(xué)院,新疆 庫爾勒 841000)
中國西北地區(qū)自然環(huán)境條件惡劣,沙漠戈壁廣布,該地區(qū)在極端大風(fēng)天氣的影響下,使橫穿荒漠地區(qū)的道路飽受風(fēng)沙侵?jǐn)_。以蘆葦作為原材料的高立式蘆葦沙障是防沙治沙的主要工程設(shè)施之一,其因具有優(yōu)良的性能和低廉的價格,被廣泛使用[1]。近年來,石河子大學(xué)葛云教授團(tuán)隊研發(fā)的蘆葦束沙障捆扎機彌補了當(dāng)前階段蘆葦束捆扎裝備的空白,實現(xiàn)了高立式蘆葦沙障捆扎的機械化,極大地減輕了工人的勞動強度[2]。
研究表明,具有一定間隙(即蘆葦束與蘆葦束之間要具有一定的間距,如圖1所示中的蘆葦高立式沙障)的蘆葦高立式沙障防沙效果十分理想[3]。為進(jìn)一步提高蘆葦束捆扎的機械效率和合格率,需要對捆扎的蘆葦高立式沙障間隙進(jìn)行檢測計算,課題組提出了基于OpenCV機器視覺技術(shù)的蘆葦高立式沙障合格率檢測系統(tǒng)。以蘆葦高立式沙障捆扎機制造出的蘆葦沙障為研究對象,通過對蘆葦高立式沙障拍攝并進(jìn)行圖像處理,測量相鄰蘆葦束之間的間隙,從而達(dá)到檢測蘆葦高立式沙障合格率的目的。
圖1 保護(hù)橋墩的蘆葦高立式沙障
試驗選擇博斯騰湖的冬收蘆葦作為樣品,并使用沙障蘆葦束捆扎機進(jìn)行編織,如圖2所示。隨機選取編織完成的一段蘆葦沙障作為研究對象[4]。
圖2 機器制作的蘆葦高立式沙障
構(gòu)建機器視覺系統(tǒng)的硬件包括工業(yè)相機、光照箱、光源系統(tǒng)、光電門和計算機。
該系統(tǒng)的工作原理分為三部分:蘆葦沙障的圖像采集、圖像預(yù)處理和高立式蘆葦沙障蘆葦均勻程度檢測及合格率判斷。
考慮到蘆葦沙障本身顏色較淺,選用深色背景能與試驗材料呈現(xiàn)明顯的顏色差異,故采集圖像時,選用了深綠色背景布作為背景。
圖像采集的步驟為:在傳送帶上設(shè)置光電門,將光電門與工業(yè)相機通過外觸發(fā)模式相連,調(diào)整光源照射角度,保證圖像清晰度。將編織完成的蘆葦沙障置于傳送帶上并啟動,當(dāng)光電門傳感器感應(yīng)到其光照度改變時,觸發(fā)工業(yè)相機進(jìn)行圖像采集,再將得到的圖像保存至計算機,導(dǎo)入課題組所開發(fā)的蘆葦沙障檢測系統(tǒng)。該系統(tǒng)使用Python的CV模塊對圖像進(jìn)行灰度化和二值化等初步數(shù)字化處理,再通過numpy構(gòu)建矩陣判斷圖像邊界并進(jìn)行蘆葦束輪廓劃分,最后通過獲取不同位置的蘆葦束水平中點進(jìn)行間隙和均勻程度的測量進(jìn)而達(dá)到檢測其合格率的目的[5]。
1.3.1 圖像灰度化處理
灰度圖像也稱為單色圖像。圖像灰度化具有簡化矩陣、提高處理速度、避免條帶失真的效果,因而在圖像處理的過程中,常把采集到的RGB圖像進(jìn)行灰度化處理,運行效率得到顯著提高[6-7]。本試驗采取的CV_RGB2GRAY方式的轉(zhuǎn)換公式如式(1)所示,效果如圖3所示。
圖3 灰度化處理
1)F(x,y)是點(x,y)轉(zhuǎn)換后的灰度圖像像素點灰度值。
2)R,G,B分別是點(x,y)在原始圖像中像素點紅色,綠色,藍(lán)色分量。
1.3.2 圖像二值化處理
在圖像預(yù)處理過程中,對灰度圖像進(jìn)行二值化處理是一種較為常見方法。本項目采用自適應(yīng)的方法獲取閾值,把大于閾值的像素灰度設(shè)置為灰度極大值,小于閾值的像素灰度設(shè)置為灰度極小值,從而實現(xiàn)二值化。經(jīng)二值化處理過的圖像矩陣數(shù)據(jù)減少,提高了數(shù)據(jù)的處理速度,能更好地提取到目標(biāo)圖像的輪廓[8],方便判斷目標(biāo)邊界。效果如圖4所示,二值化處理公式如式(2)所示。
圖4 二值化處理后的圖片
1.3.3濾波處理
為保留原始圖像特征,去除可能對試驗結(jié)果造成干擾的隨機噪聲,提高試驗結(jié)果的準(zhǔn)確性,故采用中值濾波法濾除圖像中的噪聲。中值濾波采用非線性的方式,它在平滑脈沖噪聲方面非常有效,同時它可以保護(hù)圖像尖銳的邊緣,選擇適當(dāng)?shù)狞c替代污染點的值,處理效果較好,對椒鹽噪聲的處理表現(xiàn)良好,降噪后結(jié)果如圖5所示[7]。
圖5 濾波處理
將采集到的蘆葦沙障圖像進(jìn)行灰度化及二值化的處理后[4],以圖像的長寬像素為基準(zhǔn)(分別用H和W表示),構(gòu)建一個H*W的矩陣。再將二維矩陣一維化,即將原圖像在水平方向進(jìn)行投影。初始化一個與圖像寬W相等數(shù)值長度的數(shù)組Pro,用于記錄每行中的點(dot)個數(shù)。通過循環(huán)遍歷整個圖像,找尋點(dot),從而確定每束蘆葦?shù)倪吔?。從?shù)組Pro中定位到該蘆葦沙障的左右邊界,以該邊界作為畫取直線的起點與終點。再從該數(shù)組中取相鄰邊界定位中點并記錄數(shù)值,以記錄下的每束蘆葦中點為錨點、左右邊界為直線的起點與終點,繪制N條線段,將此線段作為計算蘆葦束孔隙間距的基準(zhǔn)。
再根據(jù)相鄰中點位置的距離,計算出相鄰蘆葦束間隙,并將其結(jié)果導(dǎo)入進(jìn)新創(chuàng)建的dis數(shù)組中,以此數(shù)組測量蘆葦束均勻程度,進(jìn)而得到蘆葦沙障的合格率的判斷結(jié)果,并在系統(tǒng)中進(jìn)行反饋。流程圖如圖6所示。
圖6 檢測程序流程圖
對每束蘆葦和相鄰蘆葦束間隙進(jìn)行編號,共m束,蘆葦束上存在所繪制出的每條線段所產(chǎn)生的m個中點,故編號為1的蘆葦束與編號為m的蘆葦束存在(m-1)個間隙數(shù)值,以此(m-1)個數(shù)值作為計算蘆葦束均勻程度的操作數(shù),將該組操作數(shù)代入總體標(biāo)準(zhǔn)偏差計算公式(3),計算結(jié)果即為用于標(biāo)識蘆葦束均勻程度的參數(shù)。預(yù)設(shè)關(guān)于均勻程度的閾值,以該閾值為界限,對均勻程度進(jìn)行判定并反饋結(jié)果。
1)D(X)即用于標(biāo)識蘆葦束均勻程度的參數(shù)。
2)xi即第i與第i+1束蘆葦?shù)拈g隙距離。
3)-x即m-1個間隙距離的平均值。
將采集到的蘆葦沙障圖像進(jìn)行灰度化和二值化等預(yù)處理,再使用中值濾波降噪的方法去除多余噪聲,以便將每束蘆葦視為邊界輪廓連續(xù)[9]、無毛邊等噪聲干擾的圖像信息[10]。根據(jù)蘆葦沙障的邊緣形狀計算其面積,再對基于水平投影所獲得的多束蘆葦?shù)耐暾喞M(jìn)行中點選取,并繪制線段進(jìn)行間隙測距,以此測距結(jié)果為基礎(chǔ)進(jìn)而計算樣品的均勻程度,從而得到關(guān)于蘆葦束的合格率的檢測結(jié)果。將此程序運算結(jié)果與人工測算數(shù)值進(jìn)行比對,從而判定課題組所設(shè)計程序的準(zhǔn)確性及普適程度。
3.2.1 人工測量數(shù)據(jù)采集
對于蘆葦高立式沙障采用人工測量法,如圖7所示,在蘆葦徑向隨機區(qū)進(jìn)行6次測量,記錄下結(jié)果,并計算相鄰兩蘆葦束間距方差D(X1),如表1所示。
表1 人工測量數(shù)據(jù)采集表
圖7 蘆葦間距人工測量
3.2.2 基于OpenCV圖像處理測量數(shù)據(jù)采集
基于Python語言,以numpy和CV2為主模塊對蘆葦沙障圖像進(jìn)行處理[10],得到蘆葦沙障邊界及蘆葦沙障輪廓等目標(biāo)區(qū)域。將圖像預(yù)處理后的結(jié)果導(dǎo)入課題組所開發(fā)的程序中,得到以中點間的距離為測量標(biāo)準(zhǔn)的蘆葦束間隙,如圖8所示,并計算相鄰兩蘆葦束間距方差D(X2),如表2所示。
表2 基于OpenCV圖像處理測量數(shù)據(jù)采集表
圖8 基于OpenCV圖像處理蘆葦間距測量
采用圖像處理的方式,可以精準(zhǔn)快速地提取蘆葦束邊緣特征信息,定位中點并以像素點為單位進(jìn)行相鄰蘆葦束間隙的測量。對人工測量及程序測算兩種方案獲取的間隙值的方差進(jìn)行誤差率計算,將處理的數(shù)據(jù)代入公式(4),處理后的數(shù)據(jù)如表3所示。
課題組以博斯騰湖冬收蘆葦為材料,選用蘆葦高立式沙障捆扎機制作的蘆葦高立式沙障作為研究對象,對基于OpenCV圖像處理的相鄰蘆葦束間距進(jìn)行測算,從而進(jìn)行蘆葦束均勻程度的判別,通過上述方式來判定蘆葦沙障打捆機所產(chǎn)出的沙障合格率。本文所開發(fā)程序的測算結(jié)果與人工測量結(jié)果相對比,總體誤差σ在13%以內(nèi),屬于可接受的范圍,總體能較好地反映出蘆葦高立式沙障是否合格。在蘆葦高立式沙障制作的全程機械化研發(fā)中,本文具有一定的指導(dǎo)意義,為后續(xù)的閉環(huán)反饋系統(tǒng)、完善檢測裝置提供了前期的研究基礎(chǔ)。