戴君潔 李汝恒
(大理大學工程學院 云南省大理市 671003)
工業齒輪是現代機電產品的重要基礎零件,而因為齒輪機組在工業生產中具有轉動速度快、傳送距離遠等優勢,所以對齒輪檢測效果的好壞一定程度上影響著后續的工業任務[1]。在如今的工廠生產中,關于齒輪的檢測工作仍然主要是靠人為目測,這樣不僅工作量大、效率不高,而且隨著工作時長和工作量的積累,工人可能出現檢測誤差大或者直接漏檢的情況。
隨著機器視覺技術和應用的迅速發展,還有近幾年我國戰略“中國制造2025”的深入實施,使得機器視覺技術在圖像處理、工業機器人等多個領域得到廣泛應用[2]。不過現在基于機器視覺對工業齒輪的非接觸式檢測還處于起步階段,所以對于齒輪邊緣輪廓的檢測技術將會不斷發展。
數字圖像處理技術是機器視覺領域中最基本的技術,其操作直接影響著目標物體檢測效果的好壞,更影響著目標物體后續任務的準確性。圖像數據處理在1965年有了重大進展,Robert 算法開始應用于物體的邊緣檢測,接著,Canny 和Sobel 等算法也被提出并加入邊緣檢測方法的行列[3]。不過經長時間不斷試驗后,這類一階算子出現了抗干擾能力較差、抗噪聲效果不佳以及描述目標邊緣能力不優秀的問題,可能導致目標檢測漏檢的情況。當采用 Sobel、Canny 等邊緣檢測的算法用于圖像邊緣檢測時,其閾值選取不具備自適應性,從而一定程度上影響了圖像分割的效果。
因為傳統邊緣檢測算子逐漸難以適應如今的工業目標檢測,許多科研工作者和技術人員都在這些傳統算子的基礎上不斷改進,也產生了相對較好的效果。Cesar Bustacara-Medina 等人[4]對傳統的Canny 算法進行了改進,在非最大抑制步長(NMS)中加入曲率信息,以獲得精確的邊緣識別。Xueqin Li 等人[5]為了解決深色低對比度磁磚圖像中邊緣的自動檢測問題,提出了一種非二次采樣輪廓波變換和勞氏紋理特征測量相結合的混合算法來消除磨削紋理的影響。范崢和劉剛[6]對鋼球表面圖像進行圖像分割、平滑去噪和二值化預處理,并采用改進的中值濾波算法去除噪聲,利用小波變換和多尺度形態學融合算法進行鋼球的邊緣檢測。黎號、湯勃等人[7]針對帶鋼表面圖像光照不均而使得邊緣檢測困難的問題,通過 Otsu算法獲取自適應的閾值改進邊緣檢測算法。Saeedeh Abasi 等人[8]開發了一種基于使用Sobel 算子計算梯度大小,Canny 方法定位邊緣點的新算法,利用一些具有代表性的RGB 圖像,比較了新算法與Sobal 和Canny 方法的性能。
本文以VS2017 為開發平臺,OpenCV3 為圖像處理方法,工業齒輪為研究對象,首先通過直方圖處理、雙邊濾波、局部可變閾值的圖像預處理方法增強齒輪主體邊緣的細節,不使用傳統的邊緣檢測算子,而使用閉運算方法提取齒輪的邊緣輪廓,最后使用描述子框定齒輪,以此完成對目標齒輪的邊緣提取,以便更好的對目標進行檢測。本文方法框架如圖1。

圖1:齒輪邊緣檢測框架

圖2:工業齒輪原圖

圖3:直方圖
在對目標齒輪邊緣檢測之前采取直方圖、雙邊濾波、局部可變閾值的圖像預處理技術增強工業齒輪的圖像細節。
彩色圖像考慮適應多個分量是常態,由于工業齒輪原圖(圖2)是彩色的,所以必然也是由多個分量組成的,另外也要適應直方圖的灰度級技術。當一幅圖像的直方圖可以表示一個離散函數h(rk)=nk,這個圖像的灰度級范圍就是[0,L-1],其中rk是第k 級灰度值,nk是圖像中灰度值為rk的像素個數,即圖像的灰度直方圖表征的是該圖像的灰度分布。假設灰度圖像的維數是M×N,其表示圖像的像素總數,則歸一化直方圖可以由(1)式給出:

圖4:雙邊濾波

圖5:閾值處理

圖6:閉運算圖

7:描述子框定

p(rk)表示灰度級rk在圖像中出現概率的估計,歸一化直方圖所有分量之和等于1。工業齒輪直方圖如圖3所示。
雙邊濾波(Bilateral filter)是一種可以保邊減噪的非線性濾波器,之所以既可以達到良好的圖像減噪效果,又可以較為完整地保存目標物體邊緣,是因為雙邊濾波器由兩個函數構成。一個函數是由圖像像素點之間的距離決定濾波器系數,另一個由像素差值決定濾波器系數。雙邊濾波的邊緣保持特性主要是通過在卷積的過程中組合空域函數和值域核函數來實現的。在雙邊濾波器中,輸出像素值依賴于鄰域像素值的加權值組合:

加權系數 ω(i,j,k,l)取決于空域核和值域核的乘積核,(i,j)和(k,l)分別指兩個像素點的坐標。其中空域核表示為:

(3)式表示根據像素距離選擇權重,距離越近權重越大。值域核表示為:

(3)式和(4)式相乘,就會產生雙邊濾波權重函數:

(4)式是根據像素的差異來分配權值,表示即使兩個像素值相隔較遠,只要愈來愈接近,就比距離近但差異大的像素點權重大,這也是為什么雙邊濾波可以保留目標物體邊緣的原因。齒輪雙邊濾波處理如圖4所示。
對于齒輪圖像的閾值處理方法,傳統的全局閾值和Ostu 閾值都是使用固定閾值去完成對整幅目標圖像的閾值處理,如果遇到光照不佳或者場景環境較差的情況,很難準確完善閾值處理。所以有效方法是計算一幅圖像中每一點(x,y)的閾值,這個閾值以一個或多個在(x,y)鄰域計算的特性為基礎的。可以用一幅圖像中每個像素點的鄰域像素的標準差和均值來說明局部閾值處理的有效性。
令σxy和mxy表示圖像中以坐標(x,y)為中心的鄰域Sxy所包含的像素集合的標準差和均值,下式是局部可變閾值的通用形式:

a 和b 是非負數,由(6)式可得:

mG是全局圖像均值,分割后的圖像計算:

其中,f(x,y)是輸入圖像,該式對圖像中的所有像素位置進行求值,并在每個點(x,y)處使用鄰域Sxy中的像素計算不同的閾值。齒輪圖像閾值處理如圖5所示。
工業齒輪圖像經過圖像預處理之后,再做閉運算操作讓齒輪邊緣更明顯,最后使用描述子框定齒輪。
腐蝕和膨脹是形態學處理各項技術的基礎,在腐蝕操作過程中,與背景像素成連通狀態的前景像素被消除,每進行一次腐蝕,圖像中的物體就會被削減一層。在膨脹操作過程中,與前景物體成連通狀態的背景像素轉變為前景像素,每進行一次膨脹,圖像中的物體就增加一層。開運算和閉運算則會同時運用這兩項基礎處理技術,先腐蝕后膨脹稱為開運算,先膨脹后腐蝕稱為閉運算。
3.1.1 腐蝕
在二值圖像中,Z2表示二維整數空間,其中有圖像集合 A 和結構元素B,表示為 A?B 的 B 對A 的腐蝕定義為:

該式指出 B 對A 的腐蝕是一個用z 平移的 B 包含在 A 中的所有的點z 的集合。腐蝕的作用在于它可以削減乃至消除圖像中不需要的物體信息。
3.1.2 膨脹
A 和B 是Z2中的集合,表示為 A ⊕B 的 B 對A 的膨脹定義:

此式以 B 關于它的原點映像,并且以z 對映像進行平移為基礎。B 對A 的膨脹是所有位移z 的集合,這樣 和 A 至少有一個元素是重疊的。膨脹的作用就是使得圖像中想要的物體信息放大,看上去更明顯。
3.1.3 閉運算
用 B 對集合 A 的閉運算,表示為 A·B,其定義如下:

此式表明,B 對 A 的閉運算就是簡單地用 B 對 A 膨脹,緊接著用B 對結果進行腐蝕。閉運算操作可以填充齒輪內細小的空洞,消除不需要的細縫,有連接邊緣鄰近物和平滑輪廓的作用。閉運算操作如圖6所示。
在閉運算操作之后,齒輪圖像中的特征非常明顯地顯示出來,只需描述子框定即可。一個區域的面積定義為該區域中像素的數量,區域的周長是其邊界的長度,面積和周長主要應用于感興趣區域尺寸不變的情形。描述子框定齒輪如圖7所示。
本文方法對靜態環境下的工業齒輪邊緣提取效果較為理想,且算法的穩定性較好,可以完成圖像后續的目標檢測任務。不足之處是該方法沒有經過實際工廠操作間的大樣本嘗試,所以在動態環境下的檢測效果未知,可能會出現少數誤差,之后可針對動態效率問題繼續進行研究。