崔博文 , 張洚宇 , 周 鵬 , 黃文杰 , 劉月秋
(新疆科技學院,新疆 庫爾勒 841000)
中國西北地區自然環境條件惡劣,沙漠戈壁廣布,該地區在極端大風天氣的影響下,使橫穿荒漠地區的道路飽受風沙侵擾。以蘆葦作為原材料的高立式蘆葦沙障是防沙治沙的主要工程設施之一,其因具有優良的性能和低廉的價格,被廣泛使用[1]。近年來,石河子大學葛云教授團隊研發的蘆葦束沙障捆扎機彌補了當前階段蘆葦束捆扎裝備的空白,實現了高立式蘆葦沙障捆扎的機械化,極大地減輕了工人的勞動強度[2]。
研究表明,具有一定間隙(即蘆葦束與蘆葦束之間要具有一定的間距,如圖1所示中的蘆葦高立式沙障)的蘆葦高立式沙障防沙效果十分理想[3]。為進一步提高蘆葦束捆扎的機械效率和合格率,需要對捆扎的蘆葦高立式沙障間隙進行檢測計算,課題組提出了基于OpenCV機器視覺技術的蘆葦高立式沙障合格率檢測系統。以蘆葦高立式沙障捆扎機制造出的蘆葦沙障為研究對象,通過對蘆葦高立式沙障拍攝并進行圖像處理,測量相鄰蘆葦束之間的間隙,從而達到檢測蘆葦高立式沙障合格率的目的。

圖1 保護橋墩的蘆葦高立式沙障
試驗選擇博斯騰湖的冬收蘆葦作為樣品,并使用沙障蘆葦束捆扎機進行編織,如圖2所示。隨機選取編織完成的一段蘆葦沙障作為研究對象[4]。

圖2 機器制作的蘆葦高立式沙障
構建機器視覺系統的硬件包括工業相機、光照箱、光源系統、光電門和計算機。
該系統的工作原理分為三部分:蘆葦沙障的圖像采集、圖像預處理和高立式蘆葦沙障蘆葦均勻程度檢測及合格率判斷。
考慮到蘆葦沙障本身顏色較淺,選用深色背景能與試驗材料呈現明顯的顏色差異,故采集圖像時,選用了深綠色背景布作為背景。
圖像采集的步驟為:在傳送帶上設置光電門,將光電門與工業相機通過外觸發模式相連,調整光源照射角度,保證圖像清晰度。將編織完成的蘆葦沙障置于傳送帶上并啟動,當光電門傳感器感應到其光照度改變時,觸發工業相機進行圖像采集,再將得到的圖像保存至計算機,導入課題組所開發的蘆葦沙障檢測系統。該系統使用Python的CV模塊對圖像進行灰度化和二值化等初步數字化處理,再通過numpy構建矩陣判斷圖像邊界并進行蘆葦束輪廓劃分,最后通過獲取不同位置的蘆葦束水平中點進行間隙和均勻程度的測量進而達到檢測其合格率的目的[5]。
1.3.1 圖像灰度化處理
灰度圖像也稱為單色圖像。圖像灰度化具有簡化矩陣、提高處理速度、避免條帶失真的效果,因而在圖像處理的過程中,常把采集到的RGB圖像進行灰度化處理,運行效率得到顯著提高[6-7]。本試驗采取的CV_RGB2GRAY方式的轉換公式如式(1)所示,效果如圖3所示。

圖3 灰度化處理

1)F(x,y)是點(x,y)轉換后的灰度圖像像素點灰度值。
2)R,G,B分別是點(x,y)在原始圖像中像素點紅色,綠色,藍色分量。
1.3.2 圖像二值化處理
在圖像預處理過程中,對灰度圖像進行二值化處理是一種較為常見方法。本項目采用自適應的方法獲取閾值,把大于閾值的像素灰度設置為灰度極大值,小于閾值的像素灰度設置為灰度極小值,從而實現二值化。經二值化處理過的圖像矩陣數據減少,提高了數據的處理速度,能更好地提取到目標圖像的輪廓[8],方便判斷目標邊界。效果如圖4所示,二值化處理公式如式(2)所示。


圖4 二值化處理后的圖片
1.3.3濾波處理
為保留原始圖像特征,去除可能對試驗結果造成干擾的隨機噪聲,提高試驗結果的準確性,故采用中值濾波法濾除圖像中的噪聲。中值濾波采用非線性的方式,它在平滑脈沖噪聲方面非常有效,同時它可以保護圖像尖銳的邊緣,選擇適當的點替代污染點的值,處理效果較好,對椒鹽噪聲的處理表現良好,降噪后結果如圖5所示[7]。

圖5 濾波處理
將采集到的蘆葦沙障圖像進行灰度化及二值化的處理后[4],以圖像的長寬像素為基準(分別用H和W表示),構建一個H*W的矩陣。再將二維矩陣一維化,即將原圖像在水平方向進行投影。初始化一個與圖像寬W相等數值長度的數組Pro,用于記錄每行中的點(dot)個數。通過循環遍歷整個圖像,找尋點(dot),從而確定每束蘆葦的邊界。從數組Pro中定位到該蘆葦沙障的左右邊界,以該邊界作為畫取直線的起點與終點。再從該數組中取相鄰邊界定位中點并記錄數值,以記錄下的每束蘆葦中點為錨點、左右邊界為直線的起點與終點,繪制N條線段,將此線段作為計算蘆葦束孔隙間距的基準。
再根據相鄰中點位置的距離,計算出相鄰蘆葦束間隙,并將其結果導入進新創建的dis數組中,以此數組測量蘆葦束均勻程度,進而得到蘆葦沙障的合格率的判斷結果,并在系統中進行反饋。流程圖如圖6所示。

圖6 檢測程序流程圖
對每束蘆葦和相鄰蘆葦束間隙進行編號,共m束,蘆葦束上存在所繪制出的每條線段所產生的m個中點,故編號為1的蘆葦束與編號為m的蘆葦束存在(m-1)個間隙數值,以此(m-1)個數值作為計算蘆葦束均勻程度的操作數,將該組操作數代入總體標準偏差計算公式(3),計算結果即為用于標識蘆葦束均勻程度的參數。預設關于均勻程度的閾值,以該閾值為界限,對均勻程度進行判定并反饋結果。

1)D(X)即用于標識蘆葦束均勻程度的參數。
2)xi即第i與第i+1束蘆葦的間隙距離。
3)-x即m-1個間隙距離的平均值。
將采集到的蘆葦沙障圖像進行灰度化和二值化等預處理,再使用中值濾波降噪的方法去除多余噪聲,以便將每束蘆葦視為邊界輪廓連續[9]、無毛邊等噪聲干擾的圖像信息[10]。根據蘆葦沙障的邊緣形狀計算其面積,再對基于水平投影所獲得的多束蘆葦的完整輪廓進行中點選取,并繪制線段進行間隙測距,以此測距結果為基礎進而計算樣品的均勻程度,從而得到關于蘆葦束的合格率的檢測結果。將此程序運算結果與人工測算數值進行比對,從而判定課題組所設計程序的準確性及普適程度。
3.2.1 人工測量數據采集
對于蘆葦高立式沙障采用人工測量法,如圖7所示,在蘆葦徑向隨機區進行6次測量,記錄下結果,并計算相鄰兩蘆葦束間距方差D(X1),如表1所示。

表1 人工測量數據采集表

圖7 蘆葦間距人工測量
3.2.2 基于OpenCV圖像處理測量數據采集
基于Python語言,以numpy和CV2為主模塊對蘆葦沙障圖像進行處理[10],得到蘆葦沙障邊界及蘆葦沙障輪廓等目標區域。將圖像預處理后的結果導入課題組所開發的程序中,得到以中點間的距離為測量標準的蘆葦束間隙,如圖8所示,并計算相鄰兩蘆葦束間距方差D(X2),如表2所示。

表2 基于OpenCV圖像處理測量數據采集表

圖8 基于OpenCV圖像處理蘆葦間距測量
采用圖像處理的方式,可以精準快速地提取蘆葦束邊緣特征信息,定位中點并以像素點為單位進行相鄰蘆葦束間隙的測量。對人工測量及程序測算兩種方案獲取的間隙值的方差進行誤差率計算,將處理的數據代入公式(4),處理后的數據如表3所示。

課題組以博斯騰湖冬收蘆葦為材料,選用蘆葦高立式沙障捆扎機制作的蘆葦高立式沙障作為研究對象,對基于OpenCV圖像處理的相鄰蘆葦束間距進行測算,從而進行蘆葦束均勻程度的判別,通過上述方式來判定蘆葦沙障打捆機所產出的沙障合格率。本文所開發程序的測算結果與人工測量結果相對比,總體誤差σ在13%以內,屬于可接受的范圍,總體能較好地反映出蘆葦高立式沙障是否合格。在蘆葦高立式沙障制作的全程機械化研發中,本文具有一定的指導意義,為后續的閉環反饋系統、完善檢測裝置提供了前期的研究基礎。