馬曉鋒 王中任
(①湖北文理學(xué)院機(jī)械工程學(xué)院,湖北 襄陽 441053;②智能制造與機(jī)器視覺襄陽市重點(diǎn)實(shí)驗(yàn)室, 湖北 襄陽 441053)
曲軸為發(fā)動(dòng)機(jī)的重要部件,對(duì)汽車正常行駛有著巨大影響,其中對(duì)曲軸螺紋孔組位置度的要求比較高,目前曲軸螺紋孔的檢測往往采用的是卡尺或者采用三坐標(biāo)的檢測方法檢測。曲軸自身較重,搬運(yùn)不方便,人工用卡尺檢測勞動(dòng)量大,因疲勞容易漏檢,達(dá)不到產(chǎn)品所需精度,效率低。三坐標(biāo)檢測雖然檢測精度好,但經(jīng)濟(jì)性不太好,對(duì)操作人員的專業(yè)技能要求較高,適用于抽樣檢查。與自動(dòng)化檢測有一定差距,而機(jī)器視覺的測量方法填補(bǔ)了以上檢測存在的缺陷,操作簡單,效率和精度都較高。
在機(jī)器視覺的尺寸測量研究領(lǐng)域中,李文龍?jiān)跍y量輪轂尺寸中,用雙邊濾波和二值化相結(jié)合對(duì)圖像進(jìn)行預(yù)處理,提出一種閾值自動(dòng)計(jì)算法,得到輪轂端面各個(gè)孔徑大小以及與中心孔間距,實(shí)現(xiàn)了輪轂孔徑幾何參數(shù)的自動(dòng)測量,但在系統(tǒng)搭建方面過于復(fù)雜,通用性不強(qiáng)[1]。任永強(qiáng)提出利用RANSAC算法,擬合缸套的內(nèi)外徑,實(shí)現(xiàn)了缸套內(nèi)外徑幾何參數(shù)的測量,相比最小二乘法,RANSAC算法更加精確,該算法是一個(gè)數(shù)據(jù)樣本集,通過該樣本集里隨機(jī)抽取數(shù)據(jù)點(diǎn)進(jìn)行擬合,經(jīng)過大量的迭代計(jì)算,選取其中最優(yōu)的一組數(shù)據(jù),但是由于該算法自身局限性,迭代次數(shù)過多,測量時(shí)間偏長[2]。粟序明提出基于MATLAB設(shè)計(jì)了一套自動(dòng)定位和測量的軸類零件系統(tǒng),驗(yàn)證了自主開發(fā)算法的有效性且可以滿足工業(yè)應(yīng)用要求,對(duì)操作人員專業(yè)素養(yǎng)較高,不利于推廣[3]。
目前深度學(xué)習(xí)發(fā)展迅速,針對(duì)以上情況,于是本文提出一種基于引導(dǎo)濾波與神經(jīng)網(wǎng)絡(luò)算法的螺紋孔檢測方法,結(jié)合RANSAC算法,使用Pytorch創(chuàng)建神經(jīng)網(wǎng)絡(luò)模型擬合曲線,提高效率與精度。第一,利用引導(dǎo)濾波和形態(tài)學(xué)對(duì)圖像進(jìn)行預(yù)處理、去噪,使內(nèi)螺紋小徑邊緣清晰,去除螺紋孔徑邊緣的反光現(xiàn)象,便于輪廓的提取。第二,利用RANSAC算法去除外點(diǎn),通過Pytorch搭建神經(jīng)網(wǎng)絡(luò)去擬合內(nèi)螺紋小徑,獲取大小及相對(duì)位置信息,為螺紋孔自動(dòng)測量提供一種有效方法。
檢測視野大小為115 mm×78 mm,采用相機(jī)為2 000萬像素卷簾曝光相機(jī),分辨率為5 472×3 648,像素精度為0.02 mm;鏡頭采用長焦低畸變鏡頭,能最大程度的減小視場角,減小畸變,鏡頭焦距為55 mm,工作距離為550±5 mm;光源采用環(huán)形光,工作距離為10 mm,設(shè)計(jì)系統(tǒng)簡易結(jié)構(gòu)與檢測流程圖如圖1和圖2所示。


整個(gè)檢測平臺(tái)由1個(gè)視覺檢測平臺(tái)和1個(gè)夾具平臺(tái)組成,相機(jī)安裝位置調(diào)節(jié)通過連接板。方便調(diào)節(jié)光源位置,光源安裝在直線電機(jī)模塊上,直線電機(jī)模塊由導(dǎo)軌、電機(jī)和控制器組成,100 mm行程,自發(fā)脈沖,無需額外編程,工件放好后按開始鍵,光源移動(dòng)到位,相機(jī)拍完圖像輸出結(jié)果后,再按離開鍵,光源自動(dòng)挪走,視覺檢測平臺(tái)以及夾具平臺(tái)下方均安裝有萬向輪及防震墊,夾具平臺(tái)上需放置厚鐵板。該系統(tǒng)采集的曲軸端面如圖3所示。

首先用引導(dǎo)濾波對(duì)圖像進(jìn)行預(yù)處理,去噪聲,將邊緣更好凸顯出來,然后用迭代法圖像二值化,進(jìn)行Blob分析,將擬合區(qū)域區(qū)分出來,最后利用Canny算子提取端面內(nèi)螺紋小徑的邊緣特征[4]。
引導(dǎo)濾波與雙邊濾波相似,但在檢測邊緣附近細(xì)節(jié)上優(yōu)于雙邊濾波,沒有梯度變形,是一種時(shí)間復(fù)雜度為0的快速濾波器,在大窗口處理圖片時(shí),其效率更高。
更進(jìn)一步的說,該算法在一函數(shù)上的點(diǎn)與它周圍函數(shù)點(diǎn)的連線構(gòu)成一次函數(shù),一個(gè)復(fù)雜函數(shù)可以用無數(shù)個(gè)這種一次函數(shù)來表示,如果求該復(fù)雜函數(shù)上某點(diǎn)的值時(shí),轉(zhuǎn)化為求包含改點(diǎn)的所有一次函數(shù)值,再計(jì)算平均值[5],函數(shù)示意圖如圖4所示。

當(dāng)一個(gè)二維函數(shù)圖像輸入進(jìn)來,在一個(gè)二維窗口內(nèi),若該函數(shù)的輸出與輸入,滿足線性關(guān)系為:
qi=akIi+bk,?i∈Wk
(1)
I是輸入圖像值;q是輸出像素值;i、k是像素索引;a、b是當(dāng)窗口中心位于k時(shí),該線性函數(shù)的系數(shù)。兩邊取梯度為:
Δq=aΔI
(2)
可以知道輸入圖像值I梯度與像素值成a倍的關(guān)系,邊緣保持的特性來源于此,我們還需求出線性回歸為:
(3)
使真實(shí)值與輸出值偏差最小,其中p是待濾波圖像,然后通過最小二乘法得到:
(4)
(5)

(6)
這里,Wk是所有包含像素i的窗口;k是其中心位置。經(jīng)過引導(dǎo)濾波處理結(jié)果如圖5所示。

可以看出濾波后消除了一些花紋,表面污漬的干擾,留下了較為清晰的輪廓,便于后續(xù)邊緣提取。
經(jīng)過濾波后的圖像,消除了部分噪聲,由于光照、自身零件特性和外界影響,背景還是有大量干擾信息,不便提取孔徑,于是采用二值化的方法來進(jìn)一步消除噪聲,假設(shè)目標(biāo)圖像中當(dāng)前像素為f(x,y),設(shè)定一閾值Th,跟據(jù)當(dāng)前閾值,循環(huán)f(x,y),將圖像分為A,B兩類集合;分別計(jì)算它們像素均值μA和μB,公式為[6]:
(7)
(8)
其中NA與NB分別表示集合A、B中的像素個(gè)數(shù),然后更新閾值為:
(9)
計(jì)算新閾值與上一次閾值之差,是否滿足約束條件,若小于,則所計(jì)算出的新閾值為最佳閾值,否則,再繼續(xù)求出μA和μB,循環(huán)往復(fù),計(jì)算機(jī)利用該算法圖像處理效果如圖6所示。

通過二值化圖像邊緣更加清晰明顯,利用Canny算子進(jìn)行邊緣提取,計(jì)算多個(gè)方向的梯度,記錄方向和大小,然后進(jìn)行NMS非極大值抑制,大小閾值, 提取的邊緣很細(xì)[7-8]。提取步驟為(1)~(4)。提取結(jié)果如圖7所示。
(1)高斯濾波器平滑圖像。
(2)計(jì)算像素點(diǎn)的梯度大小與方向。
(3)進(jìn)行極大值抑制去除干擾。
(4)最后用高低閾值提取邊緣。


首先,準(zhǔn)備數(shù)據(jù)集,將邊緣提取數(shù)據(jù)寫入Csv文件,利用Python中Pandas讀取,將數(shù)據(jù)做成數(shù)據(jù)集模樣。因?yàn)镻ytorch只能處理二維數(shù)據(jù),于是使用Unsqueeze函數(shù)將一維數(shù)據(jù)轉(zhuǎn)換為二維數(shù)在進(jìn)行處理。
其次,搭建神經(jīng)網(wǎng)絡(luò),本文神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)包含有1個(gè)輸入層,2個(gè)隱層,每個(gè)隱層包含50個(gè)神經(jīng)元,1個(gè)輸出層,將數(shù)據(jù)集通過輸入層輸入,輸入層通過第一層的權(quán)重參數(shù)W1到達(dá)隱層1,隱層1通過權(quán)重參數(shù)W2到隱層2,最后經(jīng)過權(quán)重參數(shù)W3輸出結(jié)果,本文采用神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖8所示。

每一層的輸出為上一層輸出與權(quán)重參數(shù)之積,易知是一個(gè)線性函數(shù),無論隱層與神經(jīng)元如何變化,輸出都是輸入的線性組合,隱層沒有任何效果,所以該模型引入tanh函數(shù)作為激活函數(shù),增加神經(jīng)網(wǎng)路模型的非線性,可以逼近任何函數(shù),這也是神經(jīng)網(wǎng)絡(luò)的最大特征[9]。
tanh是雙曲函數(shù)中的一個(gè),為雙曲正切。公式為:
(10)
激活函數(shù)圖像如圖9所示。
為了評(píng)估模型預(yù)測效果如何,需計(jì)算回歸損失值,去優(yōu)化神經(jīng)網(wǎng)絡(luò)的參數(shù),減少神經(jīng)網(wǎng)絡(luò)的損失,該模型選擇MSELoss函數(shù),計(jì)算預(yù)測值和實(shí)際觀測值間差的平分的均值。只考慮誤差的平均大小,從而計(jì)算出損失,公式如(11)所示。

(11)


預(yù)測值與實(shí)際值偏差越大,損失值越大,擬合效果就不好。用該算法擬合效果如圖11所示。

從圖11可以看出,對(duì)準(zhǔn)備的數(shù)據(jù)集擬合效果并不好,需增加優(yōu)化器,采用隨機(jī)梯度下降法(SGD),計(jì)算影響該神經(jīng)網(wǎng)絡(luò)架構(gòu)的權(quán)重參數(shù),從而讓損失函數(shù)最小化,使得模型最優(yōu)。該算法是隨機(jī)從準(zhǔn)備好的樣本集中抽出1組,進(jìn)行訓(xùn)練,更新一次梯度,如此循環(huán),在數(shù)據(jù)集過大時(shí),無需訓(xùn)練所有原本,可以加速學(xué)習(xí),就能得到優(yōu)化模型。以0.02的學(xué)習(xí)率對(duì)梯度進(jìn)行優(yōu)化,對(duì)于樣本的目標(biāo)函數(shù):
(12)
對(duì)函數(shù)求導(dǎo)為:
(13)
參數(shù)更新:
(14)
定義了優(yōu)化器,更新參數(shù)。其中:j(i)(θ0,θ1)為目標(biāo)函數(shù),hθ為待擬合函數(shù),x(i)為訓(xùn)練樣本的樣本值,y(i)為標(biāo)簽值,θ為模型權(quán)重參數(shù),α為下降系數(shù),即學(xué)習(xí)率。對(duì)準(zhǔn)備的數(shù)據(jù)集擬合效果如圖12所示。

黑色即為擬合圓,損失函數(shù)根據(jù)梯度下降算法訓(xùn)練的次數(shù)增多,函數(shù)逐漸趨于穩(wěn)定,趨于零,損失越來越小,表示該模型訓(xùn)練效果較好,可以根據(jù)所需精度,設(shè)置訓(xùn)練次數(shù),損失值變化曲線如圖13所示。

最后,將每個(gè)所需擬合的圓通過如此方法進(jìn)行擬合,端面螺紋孔最終檢測如圖14所示。

該算法將提取的邊緣擬合完整,可以計(jì)算出各個(gè)螺紋孔的位置信息和直徑大小。
為了驗(yàn)證曲軸端面螺紋孔視覺檢測系統(tǒng)的適用性,以及精度測量,取型號(hào)YC4W75曲軸進(jìn)行測試,用型號(hào)W15-M2-17-15819的FARO測量臂對(duì)螺紋孔外徑進(jìn)行測量,精度可達(dá)0.018 mm,結(jié)果為其標(biāo)準(zhǔn)值,將該系統(tǒng)測量的數(shù)據(jù)為測量值,測試結(jié)果如圖15與表1所示。


表1 螺紋孔測量結(jié)果
螺紋1與螺紋10都是M10的螺紋,其余都是M11的螺紋根據(jù)標(biāo)準(zhǔn),內(nèi)螺紋小徑的誤差范圍應(yīng)保持在0.1 mm以內(nèi),根據(jù)測試結(jié)果,誤差范圍都在行業(yè)標(biāo)準(zhǔn)以內(nèi),滿足要求。


表2 螺紋孔位置測量結(jié)果
曲軸螺紋孔與中心孔的相對(duì)位置,利用圖像處理軟件,將其坐標(biāo)表示出來,計(jì)算兩點(diǎn)之間的距離。工業(yè)上各個(gè)螺栓孔的要求范圍在0.25 mm以內(nèi),在上述測量結(jié)果中,在此標(biāo)準(zhǔn)范圍內(nèi),滿足工業(yè)要求。
結(jié)合文獻(xiàn)內(nèi)容,對(duì)比其他,周金波等人利用最小二乘法對(duì)沖孔孔徑檢測精度為0.395 mm[1]、李文龍等人利用機(jī)器視覺方法對(duì)輪轂孔徑檢測精度為0.100 mm[2]、任永強(qiáng)等人利用RANSAC算法擬合缸套內(nèi)外徑檢測精度為0.100 mm[3]、粟序明等人利用MATLAB 自動(dòng)定位和測量軸類零件精度為0.200 mm等[4],相關(guān)測量文獻(xiàn)中,檢測精度在0.100 mm以內(nèi)較少,只有些許專業(yè)測量儀能夠達(dá)到,本文提出方法擬合效果好,精度更高。
搭建了曲軸端面螺紋孔視覺檢測系統(tǒng),采用引導(dǎo)濾波和形態(tài)學(xué)對(duì)圖像進(jìn)行預(yù)處理,消除了噪聲點(diǎn),使邊緣更加清晰清晰。結(jié)合RANSAC算法,利用Pytorch搭建神經(jīng)網(wǎng)絡(luò)擬合目標(biāo)圓,通過優(yōu)化器不斷更新模型,精度也更高于其他擬合方法,獲取螺紋孔的圓心位置以及圓心間的距離。通過實(shí)驗(yàn)與數(shù)據(jù)對(duì)比,滿足工業(yè)現(xiàn)場精度要求,實(shí)現(xiàn)了曲軸端面螺紋孔位置信息的自動(dòng)測量。