葉潤東 姚佳岷 魏宇昕 林雪晴 陳志偉 張偉榮



摘 ?要:運用基于OpenCV的機器視覺,研究檢測齒輪瑕疵生產流水線,采用CCD工業相機獲取實時圖像,通過基于OpenCV研發的算法,對齒輪進行灰度化、濾波、二值化、形態學運算等預處理后,剔除背景圖像的影響,獲得清晰的齒輪輪廓圖,然后對齒輪輪廓圖進行篩選,檢測齒輪的瑕疵,并且把有瑕疵齒輪位置傳送給SCARA機械臂,機械臂夾取瑕疵品。機器視覺算法與機械臂相結合,實現齒輪的自動檢測。
關鍵詞:OpenCV;機器視覺;齒輪瑕疵檢測;圖像處理;流水線生產
中圖分類號:TP391.4 ? ? 文獻標識碼:A
Abstract: This research studies the production line of detecting gear defects by using machine vision based on OpenCV. The real-time images are obtained by CCD (Charge-Coupled Device) industrial camera. After preprocessing the gear with grayscale, filtering, binarization and morphological operation based on OpenCV, the influence of background image is eliminated, and the clear gear profile is obtained. Then, the gear profile is screened to detect the teeth, and the positions of the defective gears are transmitted to the SCARA (Selective Compliance Assembly Robot Arm) manipulator, which picks up the defective products. In this way, the automatic detection of gears is realized through combining machine vision algorithm and the manipulator.
Keywords: OpenCV; machine vision; gear defect detection; image processing; assembly line production
1 ? 引言(Introduction)
隨著我國制造業的高速發展和市場需求的加劇,中國成為繼美國、日本和歐洲之后的全球第四大制造業市場。制造業發展的歷程證明,導致制造業技術和創造產業的重大進步的是關鍵技術的突破。然后,基于機器視覺的高速智能檢測技術一直是制約著中國制造業的發展的瓶頸,是制造業發展繼續突破的關鍵技術[1]。
機器視覺采用CCD工業攝像機的實時抓拍生產線上的零件圖像[2],通過圖像處理分析后,獲取零件的外形及位置等信息,反饋到子環節的機械臂,告知機械臂進行下一步操作[3]。機器視覺應用廣泛,于工件識別檢測等領域有著極其重要的地位,能高效彌補人工檢測勞動強度大且效率低的傳統人工檢測弊端。
產品檢驗和定位技術是工業上產中的重要環節,所有制造業行業都需要對產品進行識別和分類,尤其在多樣的生產環境的企業中,車間的自動化水平和智能程度直接決定該企業的生產效率。OpenCV被廣泛運用于工業生產的機器視覺研究中,具有實現簡單、效率高、通用性好的特點[4]。
2 ? 環境準備(Environmental preparation)
為減小外界無關環境影響導致算法計算量的繁雜度,通過搭建檢測黑箱,側向打光補充黑箱內光線環境,運用CCD工業攝像機抓拍圖像。環境模型圖參照圖1檢測黑箱。
3 ? 圖像預處理(Image preprocessing)
圖像采集過程中,由于傳送帶上的污漬劃痕,以及齒輪上的刮痕等因數會產生不利于檢測結果的噪點。因此,對實時抓拍的原始圖像進行灰度化、濾波、二值化、形態學處理去除背景[5],流程圖參照圖2圖像處理過程。
3.1 ? 灰度化
抓拍原始圖像,然后采用加權平均法對原始圖像進行灰度化處理[6],得到處理后圖像,灰度化效果參照圖3灰度化處理,所敘述灰度化處理計算公式為:
其中,為像素點為坐標為的灰度結果,R為紅色通道數據,G為綠色通道數據,B為藍色通道數據。
3.2 ? 高斯濾波除噪
抓拍的圖像包含各種各樣的噪聲,為減少后續圖像處理和輪廓計算復雜度,需要對圖像進行濾波除噪。圖像濾波指在盡量保留圖像細節特征的條件下對目標圖像的噪聲進行抑制。根據圖像的能量大部分集中在低頻和中頻的幅度譜中,而較高頻段的信息則會被大量的噪聲淹沒,為簡約后續圖像處理,消除抓拍時混入的噪聲。
主要濾波有線性濾波和非線性濾波,其中線性濾波有方框濾波、均值濾波、高斯濾波,非線性濾波有中值濾波和雙邊濾波。根據頻率,還分低通濾波器和高通濾波器,之外還有在特定頻率通過的帶通濾波器,特定頻率阻止通過的帶阻濾波器,以及允許所有頻率的全通濾波器。
高斯濾波指以高斯函數作為濾波函數進行濾波操作,高斯低通是模糊,高斯高通是銳化。高斯濾波對整幅圖像進行加權平均計算,每個像素值都由其本身和領域內其他的像素經過加權平均得到結果。在灰度化后對圖像進行高斯濾波,其計算公式為:
其中,σ表示方差。高斯濾波處理后圖像參照圖4高斯濾波處理。
3.3 ? 二值化
在濾波之后根據圖像與背景占據不同灰度等級范圍,設定閾值進行二值化處理,對齒輪與背景進行分割。通過適當閾值處理圖像,使處理后圖像的集合性質只有與像素值為0或255的點的位置信息相關,不在涉及像素的多級值。
圖像信息計算信號值原理圖參照圖5二值化計算。
圖5中Src為輸入源信號值,Dst為計算后信號值。二值化處理后圖像參照圖6二值化處理。
3.4 ? 形態學運算
經過二值化處理后,提取的目標中會存在偽目標圖像的問題,或者進行多個目標同時處理時,多個目標物中間存在粘連或是斷裂現象的問題。為區分所提取的目標物,對不同目標特征進行描述與計算,再次運用形態學運算進行計算。
形態學運算指先進行膨脹運算,對二值化圖像中存在的細小斷裂點進行連接,再進行腐蝕運算,消除圖像邊界,去除圖像中細小連接點[7]。
腐蝕是一種消除連通域的邊界點,使邊界向內收縮的處理。腐蝕運算的計算公式為:,處理原理示意圖參照圖7腐蝕運算。
膨脹是將與目標圖像區域的背景點整合到改目標圖像中,使目標圖像邊界向外擴張的處理。膨脹運算的計算公式為:,處理示意圖參照圖8膨脹運算。
其中,結構B是用來膨脹A,S是用來腐蝕X,結構B和S為矩陣結構。
4 ? 齒輪輪廓處理(Gear profile treatment)
4.1 ? 計算齒輪輪廓
計算圖像邊緣的算法算子有Rebert算子、Prewitt算子、Sobel算子、Laplacian算子和Canny算子。其中,Canny邊緣檢測算子是一個非常普遍且高效的算子。Canny算子先對灰度化后的圖像使用高斯濾波器進行平滑,計算圖像平滑后每個像素點的梯度幅值和梯度方向。梯度方向用于細化邊緣,當梯度幅值不高于梯度方向的兩個鄰點的梯度幅值,則抑制該像素響應,達到邊緣細化的目的。
Canny算子使用兩個幅值閾值,高閾值和低閾值。高閾值用來檢測梯度幅值大的強邊緣,低閾值用來檢測梯度幅值小的弱邊緣。邊緣細化后,跟蹤具有高幅值的輪廓,從滿足高閾值的邊緣像素開始,順序跟蹤連續的輪廓段,把與強邊緣相連的弱邊緣連接起來,可得到目標圖像的邊緣輪廓。Canny邊緣檢測算法的基本過程參照圖9Canny邊緣檢測。
Canny算子具有參數較少、計算效率高、得到的邊緣連續完整、Gauss濾波的尺度的選擇和雙閾值的選擇等優點。
4.2 ? 提取齒輪輪廓
根據Canny算子運算后,采用Findcontours方法進行輪廓獲取[8],輪廓經檢測后,邊緣計算由計算出極大值點,根據過零點信息和圖像梯度計算出上下極限位置,構成frame等信息,根據這些信息把輪廓檢測后得到的數據進行篩選,去除零散不符合要求的輪廓后,把計算后的輪廓保存在構建的多維數組中稍待后面進行計算處理。
設定特定雙閾值,篩選輪廓信息,把低于低閾值的輪廓信息組刪去,低于閾值的輪廓信息為生產線上刮痕等痕跡的輪廓信息;把高于高閾值的輪廓信息組刪去,高于高閾值的輪廓信息為生產線的流水線邊緣。檢測到的輪廓圖像參照圖10齒輪輪廓。
5 ?篩選齒輪并計算反饋位置(Select gear and calculate feedback position)
獲得齒輪輪廓后根據輪廓信息篩選齒輪,齒輪可能存在的瑕疵有尺寸不達標、缺齒、多齒、齒距不達標和齒深不達標。
5.1 ? 尺寸不達標
根據輪廓信息計算當前齒輪輪廓最外層齒輪的輪齒位置分別為Q1、Q2、Q3、Q4,其中,Q1、Q2點在縱坐標上,Q3、Q4點在橫坐標上。根據四個頂點確定與齒輪相切的正方形的面積S=(Q2-Q1)*(Q4-Q3);當結果S比預設值大時,意味著當前齒輪尺寸過大,當S比預設值小時,則當前齒輪尺寸大小。
5.2 ? 齒距不達標以及缺齒和少齒
獲取輪廓信息,對輪廓進行凸包檢測,假設一個點集,對點集中任意兩個點P和Q,以P和Q為端點的線段被包在這個子集中,則S是凸包。一個點集S的凸包是包含S的最小凸集。
運用convexHull算法和convexityDefects算法齒輪輪廓進行運算,獲取凸包數據。根據凸包數據進行凸包檢測,計算凸包總數為n,齒輪標準齒數為m,當m>n時,當前齒輪齒數多于生產標準,當m 當齒輪齒數達標后,檢測齒輪的齒距,任意相鄰齒輪齒尖A1(A1.x,A1.y)與A2(A2.x,A2.y)的間距。其中x、y為齒尖對應橫縱坐標。標準齒輪齒距為L,當L=W時,該齒輪為符合生產標準齒輪,否則不達標。 5.3 ? 齒深不達標 檢測完齒數、齒距后進行齒深檢測,齒尖A1與A2之間,與A1和A2相連接位于輪廓最內層的點Q(Q.x,Q.y), 點A1、A2、Q構成三角形,則Q到齒尖的距離為。其中,A為齒尖距離,由勾股定理得,齒深。生產標準齒深為h,當H=h時,該齒輪符合生產標準,否則,不達標。 5.4 ? 計算被篩選齒輪位置 當檢測不合格后,根據輪齒Q1、Q2、Q3、Q4,計算齒輪中心C(x,y),其中,x=|Q2.x-Q1.x|,y=|Q2.y-Q1.y|。相機拍攝圖像與實際拍攝位置面積比例為ε,則當前齒輪的實際位置為P(x*ε,y*ε)。計算到結果后把計算結果反饋給機械臂,由機械臂把不達標齒輪篩選出來。 6 ? 結論(Conclusion) 本文針對基于機器視覺的高速智能檢測技術一直是制約著中國制造業的發展的瓶頸的問題,提出基于OpenCV的機器視覺應用于工業生產流水線中齒輪瑕疵檢測和篩選,研究一種應用于齒輪瑕疵檢測的工業生產流水線,探索解決制約制造業發展的途徑。根據工業相機的高幀率快速抓拍,高效率篩選齒輪,可以檢測齒輪的尺寸、齒數、齒深、齒距等瑕疵,并把瑕疵齒輪的位置信息反饋給機械臂。由于相機是垂直拍攝,檢測齒輪厚度有一定局限性,會導致較大的誤差,可在此基礎上研究雙攝像機聯拍,在檢測齒輪正面瑕疵的基礎上增加檢測側面,以及齒輪厚度的功能。 參考文獻(References) [1] 易東蔚,梁玉強,陳勁杰.基于OpenCV的齒輪自動識別研究[J].農業裝備與車輛工程,2019,057(007):79-82. [2] Sun S, Yang X. Method of CCD Camera Calibration Based on OpenCV[J]. fire control & command control, 2014: 34-37. [3] 劉慶宏,王聲文,白彥慶.基于OpenCV的機器視覺功能開發及在工業生產中的應用[J].制造技術與機床,2015(3):40-43. [4] 范瑞琪,任德均,歐彬,等.基于OpenCV的相機顯示研究與實現[J].精密制造與自動化,2017(02):28-31. [5] Kaehler A, Bradski G. Learning OpenCV: Computer Vision in C++ with the OpenCV Library[M]. O'Reilly Media, Inc. 2013. [6] 余輝,王林,王德勝.OpenCV在產品特征檢測系統中的應用[J].科技視界,2013(05):45;100. [7] 秦小文,溫志芳,喬維維.基于OpenCV的圖像處理[J].電子測試,2011(07):39-41. [8] Adrian Kaehler, Gary Bradski. Learning Opencv 3: Computer Vision in C++ with the Opencv Library[M]. O'Reilly Media, Inc. 2016. 作者簡介: 葉潤東(1996-),男,本科,技術員.研究領域:軟件開發,機器視覺. 姚佳岷(1985-),男,碩士,實驗師.研究領域:軟件開發,深度學習,機器視覺. 魏宇昕(1996-),男,本科,技術員.研究領域:軟件開發. 林雪晴(1998-),女,本科,技術員.研究領域:電子科學. 陳志偉(1998-),男,本科生.研究領域:嵌入式系統,自動化. 張偉榮(1997-),男,本科,技術員.研究領域:3D建模.