任永強, 李掌珠, 李 潤
(合肥工業(yè)大學(xué) 機械工程學(xué)院,安徽 合肥 230009)
機器視覺齒輪檢測為非接觸式的無損檢測方法,與傳統(tǒng)人工檢測相比,具有不可取代的優(yōu)越性。目前對齒輪研究多為缺陷檢測和參數(shù)測量,而齒輪各項參數(shù)的提取與測量均以齒輪中心(基圓圓心)為基準(zhǔn),并以該基準(zhǔn)為參照表示出各個參數(shù)以及它們之間的聯(lián)系,因此齒輪中心定位是齒輪測量關(guān)鍵的一步,后續(xù)各參數(shù)如分度圓[1]、齒根圓、齒數(shù)以及齒廓偏差[2-4]的測量精度均受到齒輪中心定位精度的直接影響。
齒輪中心定位方法較多。文獻[5]以使用最小二乘法和重心法擬合得到帶偏差的齒輪中心作為配準(zhǔn)中心來檢測齒輪缺陷,但存在無法避免的誤差;文獻[6]采用最小二乘法圓擬合與直線擬合相結(jié)合并逐次逼近的方法來確定齒輪中心,但該方法對齒輪的擺放位置有一定的要求且精度不高;文獻[7]提出了基于齒輪外輪廓凸包頂點的齒頂圓檢測方法,但該方法中凸包頂點的選取對噪聲比較敏感,而且在實際工業(yè)環(huán)境中會存在相當(dāng)多的干擾;文獻[8]采用超最小二乘法擬合CSS檢測出齒頂圓亞像素角點,但存在角點數(shù)量少、時間復(fù)雜度高的問題。
齒輪的輪廓模型較為復(fù)雜,在檢測過程中對許多優(yōu)秀的算法限制非常高。本文提出在邊緣序列化的基礎(chǔ)上對齒頂圓弧進行預(yù)分割與亞像素級分割,最后使用改進抽樣策略的隨機抽樣一致性(random sample consensus,RANSAC)算法擬合齒頂圓弧,在保證效率的同時提高檢測的精度與魯棒性。檢測流程如圖1所示。
圖1 檢測流程
圖像的邊緣檢測算法[9]有許多,其中Canny算子是一種非常實用的邊緣定位算子。它首先采用高斯函數(shù)對圖像進行平滑濾波以消除噪聲,用f(x,y)表示二維圖像;然后計算出平滑圖像每個像素點的梯度和方向;再對梯度進行非極大值抑制,細(xì)化邊緣;最后用雙閾值算法定位和連接邊緣,高閾值用于獲取每條邊緣線段,低閾值用于對這些邊緣進行連接。
Canny算子抑制了多響應(yīng)邊緣,具有高的邊緣定位精度和一定的抗噪能力。圖像的二維高斯函數(shù)的公式為:
(1)
為了得到有序的邊緣輪廓點且篩選掉輪廓中間可能存在的干擾邊緣,需要對圖像的邊緣輪廓點進行跟蹤連接。鏈碼[10](又稱為Freeman碼)是用曲線起始點的坐標(biāo)和邊界點方向代碼來描述曲線或邊界的方法,它用邊界方向作為編碼依據(jù),為簡化邊界的描述,一般描述的是邊界點集。它將物體邊界上的某點設(shè)為起點,在其鄰域內(nèi)根據(jù)一定的規(guī)則搜索后續(xù)點,并給出每個后續(xù)點相對于前繼點的方向編碼。
常用的鏈碼按照中心像素點鄰接方向個數(shù)的不同分為4連通鏈碼和8連通鏈碼,而8連通鏈碼正好與像素點的實際情況相符,能夠準(zhǔn)確地描述中心像素點與其鄰接點的信息,具體如圖2所示。
圖2 8連通鏈碼
本文采用基于8鄰域邊界Freeman鏈碼。輪廓跟蹤的算法如下:
(1) 將圖像最左上角邊界輪廓點P0的坐標(biāo)記錄下來并作為搜索起點,以鏈碼值D=0為最開始搜索方向。
(2) 在當(dāng)前方向搜索不到新點時,以該方向為基準(zhǔn),順時針旋轉(zhuǎn)45°,逆時針旋轉(zhuǎn)90°,每次以45°遞增并交替進行搜索,搜索到重復(fù)區(qū)域時,擴大搜索范圍,以曼哈頓距離進行廣度優(yōu)先搜索,并記錄該點坐標(biāo)。
(3) 如果搜索到新的邊界點,將此方向的D賦值給它前一個點,再以該點作為中心點,繼續(xù)以該D值為方向重復(fù)步驟(2)。
(4) 當(dāng)搜索到起點P0時,結(jié)束搜索。
在一段輪廓的Freeman鏈碼上,多數(shù)點前后鏈碼方向變化的角度不超過90°,即鏈碼差的絕對值大于2的概率很小?;诖艘?guī)律,該搜索方法在步驟(2)中沿當(dāng)前方向雙向擴展新的方向,并在不鄰接的邊緣進行了廣度優(yōu)先搜索,在步驟(3)時將上一點的鏈碼方向作為當(dāng)前點的初始搜索方向。該方法提高了搜索效率,穩(wěn)定性更高,其搜索結(jié)果如圖3所示。
圖3 輪廓檢測及跟蹤處理前、后對比
齒輪輪廓的擬合難點在于其模型是由多種曲線組成且不具備旋轉(zhuǎn)不變性。許多模型擬合算法(如RANSAC、Hough圓檢測)因圓弧在整體輪廓上占比太小而出現(xiàn)檢測時間長、精度低的問題;而非模型擬合算法(如最小二乘法)因無法分離偏離的樣本點,從而檢測精度易受干擾。因此,將齒頂圓弧分割出來是很有必要的。
理想情況下,齒頂圓弧上不同的點相對齒輪中心的距離差為0,而漸開線齒廓上不同點到齒輪中心的距離差較大,可以設(shè)定一個極小的距離差閾值將2種曲線區(qū)分開。但是由于硬件誤差、噪聲干擾以及齒輪本身的缺陷,能否存在一個合適的閾值以及該閾值的取值范圍需要進一步分析。
閾值分析示意圖如圖4所示。
圖4 閾值分析示意圖
圖4中:O為齒輪理論中心;齒頂圓半徑ra=R;C為齒頂圓弧MN的中點;H為最小二乘法得到的偏離中心。分析在偏移程度為r的情況下,圓弧MN與漸開線齒廓PQ上的點到H距離差的最大值或最小值。
(1)MN所對的圓心角為θ,OC與OH的夾角為φ,易知在MN圓弧上,M、N為離H最遠(yuǎn)或最近的點。最大距離差為:
Δd=|lHN-lHM|
(2)
其中,lHN、lHM可由余弦公式求得。由于圖形具有對稱性,只分析區(qū)間φ∈[0,π]的最大值Δd。令Δd對φ求導(dǎo)并對分子求其零點進行單調(diào)性分析,當(dāng)
(3)
此時,Δd取得最大值。
(2) 由于漸開線齒廓上的連續(xù)線段PQ到H的距離差主要由其本身的曲線特性決定,忽略r的微小波動,以漸開線齒廓與齒頂圓的交點P為起點,取一段與MN長度相等的圓弧PQ,漸開線齒廓笛卡爾坐標(biāo)表達式為:
(4)
其中:α為壓力角;rb為基圓半徑。αP可直接求得,αQ由下式積分反解可得:
(5)
則最小距離差為:
(6)
以參數(shù)m=2.25、Z=26的標(biāo)準(zhǔn)直齒圓柱缺齒齒輪為例, 通過Solidworks仿真實驗可得其中心偏離約為0.4 mm,結(jié)合上述分析過程,可在距離差上限與下限之間選取高閾值Th與低閾值Tl。高閾值用于快速區(qū)分漸開線齒廓,低閾值用于實現(xiàn)圓弧的精確分割。
通過上節(jié)分析選取合適的閾值Th、Tl,在邊緣跟蹤后的有序輪廓上使用最小二乘法進行圓擬合,將得到的齒輪偏離中心H與齒頂圓半徑R作為粗基準(zhǔn),從輪廓起點開始遍歷,算法如下:
(1) 計算第p點與第p+n點到H的距離,若都大于R且其差值小于Th,則進入下一步。
(2) 從第p+n點依次計算至第p+2n點到H的距離,并與第p+n點到H的距離做差,若所有差值都小于Tl,則認(rèn)為此處存在圓弧,記錄最大的距離差Δdmax并進入下一步,否則從第p+n點開始重復(fù)步驟(1)。
(6) 遍歷至終點時結(jié)束算法。
分割得到的齒頂圓弧如圖5所示。
圖5 間隔90°的4種位置圓弧
預(yù)分割出的圓弧曲率較大,像素級的坐標(biāo)不足以表征圓弧屬性且樣本點數(shù)量不夠多,難以滿足高精度要求。本文在將像素級圓弧坐標(biāo)映射回原圖坐標(biāo)(i,j)的基礎(chǔ)上,對原圖坐標(biāo)鄰域內(nèi)的點P(i,j)、P(i+1,j)、P(i,j+1)、P(i+1,j+1)采用雙線性插值公式:
G(i+x,j+y)=(1-y)(1-y)P(i,j)+
x(1-y)P(i+1,j)+y(1-x)P(i,j+1)+
(1-x)(1-y)P(i+1,j+1)
(7)
以此來對坐標(biāo)五等分細(xì)化,其中x、y為i、j的增量值。對重新得到的圖像求解出其梯度圖像R(i,j),在梯度圖像X方向上取R(i,j)、R(i+0.2,j)、R(i+0.4,j)、R(i+0.6,j)、R(i+0.8,j)5個點,以5個點的梯度幅值作為函數(shù)值,以i、i+0.2、i+0.4、i+0.6、i+0.8為插值點,代入多項式插值公式,即
(8)
令df(x)/dx=0,從而得到亞像素邊緣坐標(biāo)。對亞像素坐標(biāo)以更精確的閾值Th、Tl進行篩選。
亞像素插值方法的計算量比較大,本文僅在預(yù)分割所得圓弧上進行亞像素插值,從樣本點精度和樣本點數(shù)量上優(yōu)化了擬合樣本,所耗時間約為整個輪廓插值的1/10,極大地提高了運行效率。
為了保證在不同程度、不同類別缺陷情況下都能準(zhǔn)確地檢測出圓弧,分割閾值通常不會太靠近齒頂圓弧的理論上限,此時分割的圓弧會帶有少數(shù)的離群點,且其分布類似于計算機中的局部性原理,因此本文提出一種改進抽樣策略的RANSAC算法來擬合齒頂圓。
RANSAC算法[11]的輸入是一組包含局內(nèi)點(inliers)和局外點(outliers)的觀測數(shù)據(jù),那些偏差不大的數(shù)據(jù)是局內(nèi)點,偏差大的數(shù)據(jù)是局外點,它采用迭代的方式從一組包含局外點的被觀測數(shù)據(jù)中估算出已知數(shù)學(xué)模型的參數(shù)。該算法基本流程如下:
(1) 從樣本集中隨機選取n個樣本,計算得到模型參數(shù)(如直線n=2,圓n=3)。
(2) 判斷模型參數(shù)的質(zhì)量 (計算符合該模型的局內(nèi)點數(shù)量,數(shù)量越多越好)。
(3) 重復(fù)上述步驟,記錄質(zhì)量最好的模型; 滿足迭代條件時退出(達到迭代次數(shù)K)。
在計算機底層中存在局部性原理,即在一段時間內(nèi),程序訪問了某個存儲單元,其附近的存儲單元也將被訪問。本文中的輪廓邊緣點不同于隨機分布的數(shù)據(jù)點,其在空間上是有序相鄰的,類似于此原理,在一段輪廓點中若存在一個局外點,則該點附近的點大概率是局外點。隨機抽樣的點越近,其誤差的放大程度就越高?;谝陨蟽牲c,本文在使用RANSAC算法擬合時對樣本點的選取不再是隨機的,而是將分割得到的齒頂圓弧分類整合,一個輪齒上的圓弧應(yīng)該屬于同一類,每一個樣本點都來自不同的類。
改進算法流程如下:
(1) 檢查序號1圓弧的開始點與序號最大的圓弧結(jié)束點的距離d,若d<πm/2,則標(biāo)記為類1,將最大序號遞減后再重復(fù)此步驟,直到不滿足條件。
(2) 按序號從小到大對第N類圓弧的結(jié)束點與后一段圓弧的開始點計算距離d,當(dāng)d<πm/2時,將后一段圓弧的類別改為N,若不滿足則將類別改為N+1,對此圓弧重復(fù)此步驟直到最大序號。
(3) 隨機抽取3類不同圓弧,從每一類中隨機抽取一個樣本,根據(jù)3個樣本計算得到圓的模型后判斷模型質(zhì)量。
(4) 重復(fù)步驟(3),達到迭代次數(shù)K后,選取質(zhì)量最好的模型作為齒頂圓,此時的圓心即齒輪中心。
改進算法避免了在誤差較大的模型上進行模型質(zhì)量判斷,縮短了擬合時間。
本文實驗環(huán)境為:Ubuntu 18.04系統(tǒng),Intel Core i7處理器,16 GiB內(nèi)存(RAM),相機分辨率為2 448×2 048,實驗平臺為CLion 2013,程序編寫使用C++編程語言與OpenCV開源庫。
實驗圖片采集自某公司自動化生產(chǎn)線的轉(zhuǎn)臺電機傳動齒輪。為減少隨機性帶來的誤差以及提供同一個對比標(biāo)準(zhǔn)值,在齒輪原圖(實驗1)上人為加入缺陷(實驗2)和噪聲(實驗3)干擾,如圖6所示,通過多組圖片在不同條件下的齒輪中心定位實驗進行算法性能的對比。
選取其中一組在缺陷和噪聲干擾下分別使用本文算法、最小二乘法以及文獻[7]算法進行中心定位實驗,實驗結(jié)果見表1所列。
將實驗2、實驗3的中心坐標(biāo)與實驗1的中心坐標(biāo)做差,取其較大差值作為評估其穩(wěn)定性的標(biāo)準(zhǔn),10組實驗的結(jié)果如圖7所示。
圖6 實驗條件
表1 齒頂圓擬合對比
圖7 不同算法的中心坐標(biāo)波動分布
從實驗結(jié)果可以看出:最小二乘法的擬合精度最低,在干擾影響下其中心定位波動最大可達0.025 5 mm;文獻[7]算法的擬合精度較高,但在噪聲干擾下凸包頂點的選取精度受到影響而呈現(xiàn)較大波動。
從圖7可以看出,得益于RANSAC算法的抗干擾性與亞像素邊緣的高精度,本文算法在齒頂圓直徑與中心定位的精度上表現(xiàn)良好且穩(wěn)定,檢測速度雖不如其他2種算法,但在改進之后足以滿足實際工業(yè)檢測的要求。
本文提出一種基于亞像素圓弧分割與改進RANSAC算法相結(jié)合的定位方法來解決在實際工業(yè)檢測中齒輪中心定位精度不高、抗干擾能力差的問題。使用Canny算子檢測齒輪邊緣并使用Freeman碼進行邊緣跟蹤,以最小二乘法得到的圓心作為粗基準(zhǔn),在分析圓弧分割閾值的取值范圍后,使用兩次分割算法得到齒頂圓弧,最后使用改進抽樣策略的RANSAC算法擬合齒頂圓得到精確的齒輪中心。實驗結(jié)果表明,本文算法在輪廓存在缺陷、圖像受到噪聲干擾的情況下依然具有較高的定位精度,具有較強的實用性。