朱宬堯,張旭,林旭東,王若瑾
(上海工程技術(shù)大學(xué)汽車與機械工程學(xué)院,上海 201620)
在現(xiàn)代機械制造技術(shù)中,高精度制造越來越普遍。而傳統(tǒng)的測量手段因為測量速度較慢或測量精度無法達到要求等原因,很難適應(yīng)現(xiàn)代制造技術(shù)的發(fā)展。機器視覺的檢測方式因為無接觸、快速、自動化的優(yōu)點受到廣泛應(yīng)用[1-3]。但傳統(tǒng)的機器視覺算法因精度不足,無法達到高精度零件測量要求。
在現(xiàn)實的工業(yè)環(huán)境中,圖片會在拍攝和傳輸?shù)冗^程中受各種因素影響而形成噪聲。傳統(tǒng)的機械視覺測量方法,如文獻[4]中使用工業(yè)相機對孔類零件拍攝后,先利用進行中值作為濾波的辦法將圖像中的椒鹽噪聲消除。然后再將圖像二值化后分割,再利用Canny算法提取輪廓,同時去除高斯噪聲。最后調(diào)用Open eVision對圖像進行測量,達到了0.02 mm的精度。文獻[5]通過引入了輪廓的全局性參數(shù)k獲得所選輪廓的最佳擬合圓。文獻[6]利用極值法求得閾值,對圖像分割消除噪點后,使用機器視覺的方法在無需采摘葉片的情況下對葉片的面積進行了測量。祁曉玲等[7]改進了中值濾波的濾波器,從而得到了更清晰的二位邊緣輪廓,完成了對階梯軸進行尺寸測量。高俊釵等[8]建立了相機鏡頭對焦的數(shù)學(xué)模型,利用了交比不變性提高了相機標定的精度。劉峰[9]通過基于鄰域的非線性變換算法和保持邊緣的混合濾波器算法對圖片處理后,實現(xiàn)了對螺紋重要參數(shù)的測量。文獻[10]采用了Canny算子,獲得邊緣后再采用最小二乘法完成輪廓邊緣擬合,成功做到了對輪廓邊緣的亞像素級計算。但由于濾波算法無法完全去除圖片中的噪聲,噪聲依然會對數(shù)據(jù)擬合結(jié)果產(chǎn)生影響,所以在精密測量中這種測量方法仍然需要改進。
本文旨在利用OpenCV[11]和RANSAC(Random Sample Consensus)[12-14]算法提高對輪廓擬合的精度,改良機器視覺的尺寸計算的方法。
圓孔類零件機器視覺尺寸檢測系統(tǒng)由光學(xué)平臺、支架、背光板、工業(yè)相機和一臺計算機組成,如圖1所示。
圖1 測量系統(tǒng)
通過對零件的尺寸、形狀、顏色等進行分析后,最終對本系統(tǒng)做出如下選型[15]:本系統(tǒng)的測量對象為圓孔類零件,主要目的為測量零件輪廓邊緣數(shù)據(jù)。需要有清晰的圖像輸入,所以選擇大恒的ME2P-1840-6GC-P工業(yè)相機,分辨率為4508×4096,像元尺寸為2.5 μm,幀率為6.4。鏡頭選擇了大恒的HN-1624-20M-C1/1X,焦距為16 mm,畸變<0.1%。計算機的CPU選用了AMD的3700X,配備了32 GB內(nèi)存。由于測量對象多為金屬材質(zhì),表面反射率較高,所以采用上海默然的MR-BG-150150-W背光板作為光源,可有效去除零件的陰影和光反射對檢測的影響。圖像處理流程如圖2所示。
圖2 圖像處理流程圖
本系統(tǒng)通過使用Microsoft Visual Studio 2017編譯的C++程序調(diào)用OpenCV庫的圖像處理函數(shù)對所輸入的圖像加以處理。因攝像機直接拍攝的彩色圖片擁有R、G、B三個色彩通道,每個通道無法單獨表達圖片的全部信息,所以需要將3個通道合并,利用公式(1)轉(zhuǎn)換為灰度圖。
Gray=(R2.2×0.2973+G2.2×0.6274+B2.2×0.0753)1/2.2。 (1)
在拍攝過程中,由于電阻熱效應(yīng)和信號干擾等因素會不可避免地存在噪聲,所以要對圖片使用高斯濾波,以去除圖中的高斯噪聲。采用對圖像的灰度直方圖進行分析的方法,選擇一個適宜的閾值對圖像進行分割。被分割后的圖像可以得到較高的對比度和比較清晰的輪廓。圖片的分析與預(yù)處理如圖3所示。
圖3 圖片的分析與預(yù)處理
調(diào)用OpenCV中的findContours函數(shù)來提取具有等級樹結(jié)構(gòu)的輪廓。對輪廓進行連通性分析和面積計算,對圖片特征分析后可以得出面積最大的連通區(qū)域就是圖片中的矩形外輪廓。分別提取出矩形的4條邊進行直線擬合[16],求出4條線交點即是矩形外輪廓的角點,利用4個角點計算外輪廓的邊長。當前的結(jié)果中得出的所有尺寸信息都以像素為基本單位,而圖像中的距離與實際距離之間的相對關(guān)系則會受鏡頭和被拍攝物的相對間距及拍攝角度的影響。因此本文選擇利用擬合的矩形外輪廓計算像素當量。由于矩形外輪廓由尺寸已知的背光板形成,所以可以利用以下公式計算像素當量:像素當量=實際距離÷像素距離。矩形輪廓的擬合如圖4所示。
圖4 矩形輪廓的擬合
由于濾波算法無法完全清除圖片中的噪點,仍然會有部分殘留的噪點對擬合產(chǎn)生影響。而由于最小二乘法[17]對于大噪聲會產(chǎn)生平方級的影響,所以異常數(shù)據(jù)會對最小二乘法的擬合結(jié)果產(chǎn)生較大的影響。因此本文選擇引入RANSAC算法排除擬合過程中的噪點。在圖5中展示了在一組含有噪聲的樣本中對曲線進行擬合的結(jié)果。圖5(a)中的直線是應(yīng)用傳統(tǒng)最小二乘法擬合的結(jié)果,而圖5(b)中直線則是通過引入RANSAC算法擬合的結(jié)果??梢园l(fā)現(xiàn),傳統(tǒng)的最小二乘法擬合的結(jié)果受噪點的影響較大,而引入了RANSAC算法的最小二乘法排除了這些噪點,擬合精度有明顯提高。因而本文選擇在擬合圓形輪廓時引入RANSAC算法,提高擬合精度。
圖5 擬合算法對比
RANSAC算法可以將所有點分成局外點和局內(nèi)點。局內(nèi)點是指到模型的距離小于所設(shè)定的閾值的點,局外點即為到模型的距離大于閾值的點,即噪聲。每一次程序隨機抽取一組點并假定它們是局內(nèi)點,并利用式(2)對這組點使用最小二乘進行擬合,得到一組待選參數(shù)xc′、yc′、R′。
然后統(tǒng)計滿足式(3)的點的數(shù)量,把該數(shù)量當作該組參數(shù)的投票值。進行多次隨機取點,并統(tǒng)計每組參數(shù)的投票值。選取最多投票值的待選參數(shù),用該組參數(shù)下的所有內(nèi)點作為最終的樣本點,最后用得到的所有樣本點去做最終的擬合,把擬合結(jié)果作為本次迭代的結(jié)果。利用計算出的像素尺寸乘以上文中計算的像素當量即可得到圓的實際尺寸。
本次實驗選用了半徑為12.5 mm的樣品,表1中列舉了利用上文中的系統(tǒng)對樣品進行測量的結(jié)果和利用傳統(tǒng)最小二乘法進行測量的結(jié)果。
由表1數(shù)據(jù)和圖6分析可知,RANSAC算法擬合的最大偏差為0.0057 mm,方差為3.211×10-6mm,而傳統(tǒng)最小二乘法的最大偏差為0.2117 mm,方差為1.612×10-3mm。由此可以看出,與傳統(tǒng)最小二乘擬合算法相比,結(jié)合了RANSAC算法的最小二乘法擬合在精密零件尺寸測量的精度上有顯著提高。
圖6 測量結(jié)果分析
表1 樣品測量結(jié)果
本文旨在解決工件非接觸測量中測量精度不足的問題,提出了一種基于RANSAC算法進行改良的機器視覺測量研究方法,其系統(tǒng)方差為3.211×10-6mm,能滿足0.006 mm級別精度的工件測量。本系統(tǒng)通過對相機拍攝的圖片進行處理,分別對方形輪廓和圓形輪廓進行擬合。利用已知的方形輪廓計算得到像素當量,這將計算出被測量對象的實際大小。本系統(tǒng)具備高速、高精度、無接觸的優(yōu)勢,能夠有效解決生產(chǎn)中傳統(tǒng)測量方法的缺點。但本系統(tǒng)設(shè)計中沒有考慮鏡頭畸變和透視變換帶來的影響,仍然存在一定的誤差。