潘海鴻,徐大斌,王耀瑋,董秦漢,梁旭斌
(廣西大學 a.機械工程學院;b.工程實踐與訓練中心,南寧 530004)
工業自動化生產線中有大量的零件需要識別和分揀,傳統的方法是由人工來完成,但人工操作存在工作量大、效率低下、出錯率高等問題[1]。通過機器視覺對零件進行識別和分類,可極大地提高生產線自動化程度[2-3]。機器視覺檢測被廣泛應用在質量檢測、機器人抓取位置判斷、字符信息提取(零件型號識別)、產品數據采集等方面[4-5]。
目前對字符信息提取研究較多,Islam R等[6]提出基于HOG和SVM的車牌字符提取與識別算法,字符識別準確率達94.6%。陳甦欣等[7]針對環狀零件表面字符檢測,使用卷積神經網絡和SVM對字符進行分類識別,識別準確率95%以上。李陽等[8]利用NCC模板匹配準確的特點快速匹配到輪胎上的固定編號,驅動機器人完成分揀工作,識別準確率96%左右。Oni O J等[9]研究獲取一組約魯巴標準打印文本的掃描圖像,開發出一種適用于該圖像的光學字符識別模型,準確率為96.862%。Bora M B等[10]使用CNN-ECOC和SVM進行手寫字符識別,準確率最高達到97.71%。上述研究的識別對象背景清晰,工況環境較好,使用普通的2D相機即可進行識別。但在實際工業環境中,環境較復雜,上述方法具有局限性。
在實際工業現場對汽車發動機缸蓋表面字符(型號、鑄件號、狀態標識等信息)識別存在以下難點:①缸蓋是黑鐵鑄造,表面涂有防銹油,使用光源打光拍攝時,缸蓋表面發生漫反射導致拍攝效果很差。②缸蓋表面起伏較大,而字符區域較小,使用2D相機拍攝時字符特征不明顯。③因鑄造時精度要求不高,缸蓋表面字符凸起不明顯,相鄰字符間互相粘連,造成字符識別難度大。為此,提出基于線結構光的發動機缸蓋表面字符識別方法。設計并搭建一套基于結構光掃描的系統用于識別缸蓋表面字符。該系統利用激光三角測量法計算得到缸蓋表面字符的深度圖像,并采用YOLOv4識別出缸蓋字符的信息,通過實驗驗證所提出的方法對缸蓋表面字符識別的準確率。
激光結構光具有能量集中、單色性好、不易受外界環境光影響等優點,為此引入線結構光解決以上汽車發動機缸蓋表面字符識別難的問題。基于線結構光的3D相機成像穩定,可準確獲取物體圖像,尤其針對缸蓋表面字符凸起高度較小的情況,可直接提取頂部像素數據進行處理。
線結構光測量系統的工作原理以激光三角法為基礎[11],如圖1所示,通過激光器投射結構光到被測物體表面形成一條結構光條紋,使用CCD攝像機采集結構光條紋的形變圖像計算被測物的坐標和輪廓信息。

圖1 結構光測量系統模型
結構光投影在被測物體表面π1上,點P為線結構光上一點。設P在相機坐標系下坐標為(xc,yc,zc),其在相機成像平面π2上映射的像點為P′,P′在像素坐標系下的坐標為(u,v)。根據相機的成像模型,有式(1)成立:
(1)
其中,s>0為投影尺度因子;dx、dy分別為圖像x和y方向單位像素的物理尺寸(mm/pixel);(u0,v0)為圖像坐標系原點在像素坐標系下的坐標;f為相機焦距。因點P在線結構光平面方程Axc+Byc+Czc+D=0上,其中{A,B,C,D}為結構光平面參數,可得式(2)。
(2)
聯立式(1)與式(2)可得到式(3),至此即可求解被測物體上的任意點P在相機坐標系下的坐標。
(3)
圖像預處理是圖像信息提取的關鍵步驟,通過圖像預處理可以將圖像中需要的信息突顯出來,縮短信息提取時間,提高檢測結果的準確性和有效性。拍攝圖像時由于光照條件、拍攝角度、平臺抖動等不可避免的因素為圖像帶來了模糊和噪聲,所得圖像不能直接使用,需對圖片進行濾波降噪等一系列預處理。
針對相機拍攝得到的圖像進行預處理包括以下幾個步驟:
(1)圖像降噪:受外界環境影響,相機拍照所得圖像噪點較多,使用高斯濾波降噪,得到低噪點灰度圖。
(2)圖像增強:由于相機導出的原圖是深度圖,字符特征不明顯,需要對圖像進行增強處理來突顯字符特征,在這里使用直方圖均衡化處理。
(3)傾斜校正:相機拍攝的圖片難免有所傾斜,這對字符的識別率會有影響,使用Hough變換轉正字符方向。
YOLO(You Only Look Once)[12]基于一個單獨的端到端網絡,創造性地將候選區和對象識別這兩個階段合二為一,如圖2所示,輸入一次圖像就能識別出對象以及它們的位置。YOLOv4具有更大的網絡輸入分辨率,更深的網絡層,更多的參數,更快的檢測速度,更高的檢測精度。YOLOv4可以適用于單GPU訓練,它通過單一網絡即可進行預測[13]。為此,采用YOLO實現對目標的自動檢測,能夠快速定位識別。

圖2 YOLO目標檢測網絡結構
字符識別具體流程為:
(1)輪廓儀實時采集圖像:使六軸機器人帶著3D激光輪廓儀以v(mm/s)的速度水平移動,拍攝得到字符區域的深度圖像。
(2)圖像預處理:輪廓儀得到的原圖是16位單通道深度圖。使用OpenCV計算機視覺庫和C++對圖像進行降噪、圖像增強和傾斜校正處理。
(3)YOLOv4識別:在windows10 64位,CPU型號為Intel(R) Core(TM) i9-9900K,顯卡型號為NVDIA Geforce RTX 2060,內存16GB的計算機上進行神經網絡訓練(學習率置為0.01,訓練次數為100 000次)。
(4)輸出識別結果:輸出識別的字符和置信度。
搭建的基于線結構光的發動機缸蓋表面字符識別系統如圖3所示,將3D激光輪廓儀(ATC5-2040CS-23-63)安裝在六軸機器人末端,使輪廓儀距離字符高度保持在90 mm~110 mm的區間內。通過機器人移動帶動輪廓儀掃描缸蓋字符區域,得到深度圖像。識別對象為廣西某公司的發動機缸蓋,如圖4所示。

圖3 基于線結構光的發動機缸蓋表面字符識別系統

圖4 發動機缸蓋圖
3D激光輪廓儀80 mm/s的速度水平移動,拍攝的深度圖原圖如圖5a所示,圖像處理后的字符特征較明顯,如圖5b所示。

(a)深度圖原圖 (b)圖像處理后圖5 圖像處理前后對比
圖5b中圖像字符灰度值與背景灰度值非常接近,難以對其進行前景背景分離,且字符間還出現粘連情況,采用傳統圖像處理算法較難識別圖中的字符。采用YOLOv4實現對字符識別,其能自動定位字符區域并進行分割,輸出所識別字符和置信度判斷。
將圖像預處理后制作成數據集,訓練集樣本數為92個。YOLOv4訓練完成后,用25個測試樣本驗證字符的識別正確率和檢測時間,見表1。圖6是部分圖像的字符識別結果,對于圖6c、圖6d、圖6e鑄造字符輪廓不明顯也能準確識別。系統對缸蓋表面字符的平均識別正確率達到99.677 9%,每張圖片的檢測時間大約50 ms。其中,識別字母的平均正確率為99.573 1%,識別數字的平均正確率為99.815 5%。表明所設計的系統能夠獲得較好的識別效果。如果有更多的訓練樣本,識別正確率還會進一步提升。

(a) KJ10 (b) J56

(c) BK21 (d) K06C

(e) BL24圖6 部分圖像字符識別結果

表1 部分字符識別結果統計

續表
針對目前發動機缸蓋表面字符識別的難題,搭建設計一套線結構光發動機缸蓋表面字符識別系統。從實際工程應用出發,結合激光三角測量法和深度卷積神經網絡YOLOv4算法對發動機缸蓋表面字符進行識別。實驗結果表明,該方案能夠快速識別出缸蓋表面的型號、鑄件號、狀態標識等信息,平均識別準確率達到99.6%以上。將其應用于生產線不同型號缸蓋的識別和分揀,可提高分揀效率,提高整個生產、檢測流程的效率。該方法可適用于字符表面反光較強、字符前景背景色對比度不明顯、字符之間相互粘連、字符外形輪廓不清晰等情況的字符識別,具有十分重要的應用價值和實際意義。