陳甦欣,韓 暑,涂德江,晏文彬
(合肥工業(yè)大學(xué)機(jī)械工程學(xué)院,合肥 230009)
軸承是各類機(jī)械設(shè)備的重要基礎(chǔ)零部件,隨著現(xiàn)代工業(yè)的快速發(fā)展,對軸承的精度和壽命提出了更高的要求[1]。軸承的幾何尺寸是生產(chǎn)加工中非常關(guān)鍵的參數(shù),傳統(tǒng)的尺寸檢測方法大部分是通過游標(biāo)卡尺、千分尺等進(jìn)行接觸式測量獲取軸承的幾何尺寸,具有精度低、效率低、且易引入人為誤差的特點,不再適應(yīng)現(xiàn)代化的生產(chǎn)需求。
目前改進(jìn)的軸承尺寸檢測技術(shù)有很多,包括超聲波探聲法,激光掃描法以及視覺檢測法,其中超聲波和激光檢測方法具有較好的檢測效果,但成本較高。視覺檢測法具有非接觸、動態(tài)范圍大及信息豐富等優(yōu)點,解決了傳統(tǒng)檢測方法精度低、勞動量大、工作效率低等問題。劉科文等[2]使用了最小二乘法擬合邊緣像素,可以獲得軸承的內(nèi)外徑尺寸,但是達(dá)不到高精度的要求。GAO Y等[3]采用了軸承側(cè)面投影方法檢測軸承的外徑尺寸,但無法應(yīng)用于軸承的內(nèi)徑尺寸檢測。朱福康等[4]提出了一種基于圖像深度信息集的Hough圓檢測方法,對軸承進(jìn)行了邊緣特征提取。該方法具有對噪聲不敏感的優(yōu)點,在一定程度上提高了軸承尺寸檢測的精度,但是需要在參數(shù)空間進(jìn)行累計,計算量較大。為了解決這一問題,本文重點研究了一種基于g2o(圖優(yōu)化)的尺寸檢測優(yōu)化方法,該方法具有高精度、高效率的特點,很好的解決了軸承在檢測過程中精度與時間復(fù)雜度協(xié)調(diào)的問題。
圖像的信號在形成及傳輸?shù)倪^程中夾雜著各類的噪聲[5],需要對圖像進(jìn)行濾波處理以降低噪聲。常用的濾波處理有高斯濾波、均值濾波及中值濾波等。為了達(dá)到去噪保邊的目的,使用雙邊濾波[6]對圖像進(jìn)行濾波,處理后的圖像如圖1所示。
圖1 雙邊濾波及局部放大圖
為了簡化或改變圖像的表示形式,需要對圖像進(jìn)行分割[7]。首先,使用閾值分割將灰度圖像轉(zhuǎn)換為二值化圖像,再使用形態(tài)學(xué)操作排除圖像中小型黑洞,結(jié)果如圖2所示;其次,對二值化圖像中所有連通域的面積進(jìn)行計算,通過設(shè)置閾值剔除小于該面積的連通區(qū)域,得到最終的感興趣區(qū)域圖像如圖3所示。
圖2 閾值分割 圖3 連通域處理
邊緣檢測技術(shù)的精確度直接影響測量結(jié)果的好壞。常用的像素級邊緣檢測算子有Laplacian算子、Sobel算子、Roberts算子和Canny算子等[8]。其中,使用Canny算子進(jìn)行像素級邊緣檢測的效果較好,如圖4所示。
圖4 Canny邊緣檢測效果圖
軸承尺寸檢測對精度要求很高,故考慮亞像素級別的邊緣檢測。Zernike矩法是一種常用的亞像素邊緣檢測方法,圖5為亞像素邊緣檢測模型,其中直線L與圓相交的弦代表理想邊緣,b和b+n為邊緣兩側(cè)的灰度值,d為原點到L的垂直距離,圖6繞原點逆時針旋轉(zhuǎn)θ度得到圖7。
圖5 原始邊緣示意圖 圖6 旋轉(zhuǎn)后邊緣示意圖
利用Zernike矩旋轉(zhuǎn)不變性[9]可以計算出n,d,θ,若像素點滿足n≥τ∩d≤δ,將像素點代入亞像素邊緣點坐標(biāo)計算公式:
其中,(x′,y′)為亞像素邊緣點坐標(biāo),(x,y)為像素邊緣點坐標(biāo),N為卷積核的大小,δ通常設(shè)置為單個像素長度的0.707。τ作為人工選擇的閾值,其大小對圖像邊緣的判斷具有十分重要的影響,如果τ取值過小,會檢測出很多偽邊緣,相反,若τ過大,真實邊緣會被丟失,所以需要反復(fù)調(diào)整才能取得較理想的檢測結(jié)果。圖像的灰度值和階躍灰度值在同一像素點處具有相同的變化趨勢,可以利用Otsu法計算目標(biāo)和背景基于階躍灰度的最大類間方差,求得最優(yōu)的階躍灰度閾值τ,更快的完成檢測過程。
在機(jī)器人領(lǐng)域和計算機(jī)視覺中,許多優(yōu)化問題最后都?xì)w結(jié)于求非線性誤差函數(shù)的最小值問題[10],通常對非線性最小二乘問題的求解有一些標(biāo)準(zhǔn)的方法,如Gauss-Newton(GN)和Levenberg-Marquardt(LM)等。然而,這些解法在求解的過程中需要進(jìn)行大量的矩陣運算,使用g2o可以簡化求解的過程。g2o是一個通用的圖優(yōu)化開源框架,該框架集成了Eigen矩陣計算庫,具有強(qiáng)大的算力,部分框架如圖7所示。
圖7 g2o的部分框架圖
從圖7中可以看出,優(yōu)化算法可以調(diào)用兩個求解器,其中SparseBlockMatrix用來計算Jacobian和Hessian矩陣,linearSolver是用于線性方程求解。用戶可以根據(jù)具體的誤差函數(shù)選擇合適的迭代算法,并對迭代算法中的參數(shù)進(jìn)行調(diào)整,從而方便、快速地求解非線性最小二乘問題。本文在選擇求解器與迭代算法進(jìn)行曲線擬合時,由于迭代算法初始值的設(shè)置及異常數(shù)據(jù)的存在,導(dǎo)致優(yōu)化算法并不穩(wěn)定,因此,需要設(shè)置合適的迭代初始值并對異常數(shù)據(jù)進(jìn)行適當(dāng)處理。
通常最小二乘問題可以表示為:
對上式進(jìn)行泰勒公式展開,保留一階梯度得:Δx*=-JT(x),稱為最速下降法;若保留二階梯度得:HΔx*=-JT(x),稱為GN法。最速下降法和GN法雖然直觀,但在實際運用中最速下降法收斂速度比較低,GN法需要計算復(fù)雜的Hessian矩陣,計算結(jié)果不穩(wěn)定。相比較而言,LM算法引入信賴區(qū)域思想,認(rèn)為近似只在一定范圍內(nèi)成立,如果近似太小,則縮小范圍,反之,則增加近似范圍,保證了其增量方程的正定性;但是本文在使用該算法進(jìn)行優(yōu)化時發(fā)現(xiàn)算法的穩(wěn)定性不是很好,主要是因為非線性優(yōu)化的所有迭代求解方案,都需要提供一個良好的初始值,不同的初始值往往會導(dǎo)致不同的優(yōu)化結(jié)果。因此,為了避免LM算法容易陷入局部極小值,在運行迭代算法之前,隨機(jī)選擇三個坐標(biāo)使用最小二乘法擬合曲線方程,為LM算法提供變量的初始值,從而提高算法的穩(wěn)定性。
最小二乘法使用了平方函數(shù)衡量偏差[11],使得異常數(shù)據(jù)的出現(xiàn)對最小二乘法的優(yōu)化結(jié)果產(chǎn)生了破環(huán)性的影響,使用魯棒性代價函數(shù)可以減少異常數(shù)據(jù)對誤差函數(shù)的影響。常用的魯棒性代價函數(shù)有Huber 函數(shù),具體形式如下:
該函數(shù)可以將誤差大于或等于閾值b的數(shù)據(jù)點按照線性增長而非二次增長,但是該函數(shù)并沒有完全消除異常數(shù)據(jù)對優(yōu)化結(jié)果的影響。于是,針對本文中出現(xiàn)的異常數(shù)據(jù)做以下分析處理:
(1)若異常數(shù)據(jù)使用Huber函數(shù)處理后,對最終優(yōu)化結(jié)果的影響在容錯范圍內(nèi),則無需對異常數(shù)據(jù)做進(jìn)一步處理,優(yōu)化算法結(jié)束;
(2)若異常數(shù)據(jù)使用Huber函數(shù)處理后對最終優(yōu)化結(jié)果影響較大,則需要對異常數(shù)據(jù)進(jìn)行二次處理,優(yōu)化算法繼續(xù)進(jìn)行;使用迭代算法得到的曲線方程,把所有的數(shù)據(jù)代入這個曲線方程求得殘差后,通過設(shè)置容限誤差來區(qū)分inliers和outliers,從而剔除異常數(shù)據(jù)。最后,對篩選后的數(shù)據(jù)再次使用迭代算法,可以得到較好的優(yōu)化結(jié)果。
本文曲線擬合的誤差函數(shù)為:
上式,待估計變量(a,b)為圓心坐標(biāo),c為半徑;(xi,yi)為亞像素坐標(biāo)。
為了使用 g2o,需要將曲線擬合問題抽象成圖優(yōu)化。該圖由若干個節(jié)點,以及連接著這些節(jié)點的邊組成。其中,節(jié)點表示優(yōu)化變量,邊表示誤差項。在曲線擬合問題中,整個問題只有一個節(jié)點,該節(jié)點包含曲線模型的3個參數(shù)a、b、c,而每個帶噪聲的數(shù)據(jù)點,即圖優(yōu)化的邊,構(gòu)成了一個個誤差項。該邊是一元邊 ,即只連接一個節(jié)點,如圖8所示。
圖8 g2o曲線擬合模型
在g2o中建立該模型進(jìn)行優(yōu)化,步驟如下:
(1)定義節(jié)點和邊的類型;
(2)構(gòu)建圖;
(3)異常邊判斷與處理;
(4)選擇迭代算法;
(5)調(diào)用 g2o 進(jìn)行優(yōu)化,返回結(jié)果。
通過代碼編程,優(yōu)化模型構(gòu)建,可以得到軸承內(nèi)外徑擬合部分優(yōu)化過程參數(shù),如圖9所示,包含每次迭代時間、添加邊的個數(shù)、總的迭代次數(shù)與時間以及尺寸參數(shù),擬合優(yōu)化結(jié)果如圖10所示。
圖9 軸承內(nèi)外徑擬合部分優(yōu)化過程參數(shù)
圖10 軸承內(nèi)外徑擬合優(yōu)化結(jié)果
尺寸檢測主要分為圖像預(yù)處理、邊緣檢測、內(nèi)外點篩選、異常數(shù)據(jù)處理、使用g2o優(yōu)化曲線5個部分,如圖11所示。
圖11 基于 g2o(圖優(yōu)化)的尺寸檢測優(yōu)化方法
仿真實驗在Linux環(huán)境下進(jìn)行,CPU采用Intel Core i7處理器,內(nèi)存為8 GB,編程語言采用C++。為了證明方法的有效性,在Visual Studio環(huán)境下使用基于g2o(圖優(yōu)化)的優(yōu)化方法對軸承圖像進(jìn)行內(nèi)外徑尺寸檢測,對軸承尺寸檢測系統(tǒng)的精確度及時間復(fù)雜度進(jìn)行評估。
精確度是驗證方法效果的主要準(zhǔn)則,精度的好壞會直接影響方法的測量結(jié)果。本文使用同心度、平均值及標(biāo)準(zhǔn)差來衡量檢測精度,其中同心度表達(dá)式為:
其中,(x1,y1) 為軸承的外圓圓心坐標(biāo);(x0,y0)為軸承的內(nèi)圓圓心坐標(biāo)。
檢測精度結(jié)果如表1所示,軸承尺寸檢測系統(tǒng)在像素上的精度可以達(dá)到0.5個像素,軸承內(nèi)外徑測量誤差在0.015 mm范圍內(nèi),且檢測系統(tǒng)的穩(wěn)定性較好。
表1 軸承尺寸測量結(jié)果
時間復(fù)雜度是驗證算法效率的重要標(biāo)準(zhǔn),時間復(fù)雜度的高低會嚴(yán)重影響算法的運行效率。在軸承內(nèi)外徑尺寸檢測的過程中,通過chrono函數(shù)得到最小二乘圓檢測法,Hough圓檢測法及本文方法的運行時間。具體時間如表2所示。
表2 時間復(fù)雜度對比 (ms)
通過表2 的對比結(jié)果可以看出,基于g2o(圖優(yōu)化)的尺寸檢測優(yōu)化方法在時間復(fù)雜度上遠(yuǎn)低于其他兩種方法。這是因為g2o中不僅使用大量的類模板來提高運行效率,還使用了 Eigen 線性代數(shù)庫來達(dá)到較高的計算性能,從而降低了時間復(fù)雜度。
本文的重點是基于g2o(圖優(yōu)化)的尺寸檢測優(yōu)化方法的研究。以圖像濾波處理、形態(tài)學(xué)操作、閾值分割為基礎(chǔ),消除了圖像中的無關(guān)信息,增強(qiáng)了有關(guān)信息的可檢測性;采用亞像素邊緣檢測獲取亞像素邊緣坐標(biāo),提高了軸承尺寸檢測的精度;通過最小二乘法擬合初始曲線為迭代算法提供初始值,提高了迭代算法的穩(wěn)定性;使用魯棒性代價函數(shù)處理異常數(shù)據(jù),并對優(yōu)化結(jié)果影響較大的異常數(shù)據(jù)進(jìn)行二次處理,減小了異常數(shù)據(jù)對優(yōu)化結(jié)果的影響;把處理后的數(shù)據(jù)導(dǎo)入g2o中進(jìn)行優(yōu)化,從而得到圓心坐標(biāo)和半徑尺寸,提高了運行效率,降低了系統(tǒng)的時間復(fù)雜度。
實驗表明,基于g2o(圖優(yōu)化)的尺寸檢測優(yōu)化方法達(dá)到了工業(yè)級的精度要求且算法的時間復(fù)雜度優(yōu)于其他常規(guī)方法,為其它圓形零件的尺寸檢測提供參考。