沈良辰, 郭鋼祥, 孔 明, 郭 斌
(1. 中國計量大學計量測試工程學院,浙江 杭州 310018; 2. 浙江省計量科學研究院 長度與精密測量研究所,浙江 杭州 310018)
鋼卷尺作為常用的測量工具,其檢定精度是檢定過程中的重要參數。目前主流的自動檢定過程普遍基于機器視覺的技術:趙保亞提出基于邊緣檢測的鋼卷尺圖像二值化方法[1],該方法提出基于同態濾波和改進的Sobel算子進行線紋邊緣檢測,從而實現對線紋刻線的提取[1];景加慧提出邊緣檢測特征值提取算法結合分段最小二乘擬合,實現刻線的提取[2];茍建松提出了圖像閾值分割
并結合垂直投影定位算法來提取線紋刻線[3];Menaka在現場可編程門陣列(FPGA)板上基于Sobel濾波器設計了一種邊緣檢測算法[4],實現了刻線特征提取和模式識別。上述方法使用了圖像處理里的邊緣檢測、閾值分割以及最小二乘擬合等理論,對線紋圖像處理并提取刻線、比對刻線,過程高度自動化,因此大大降低了勞動力,提高了效率,同時用機器視覺取代了人眼,也極大地提高了檢測精度。
但是目前自動檢定方法存在的問題是:圖像處理過程中會損失大量線紋邊緣處的信息,而且由于線紋邊緣并非均勻分布,可能存在缺口、凸起等凹凸不平的情況,導致得到的線紋邊緣特征點位置信息不準確,甚至有較大偏差[5],這就帶來了含有粗大誤差的特征點,也叫作奇異點,影響后續線紋邊緣線擬合的精度。同時采用的直線擬合方法也較為落后,擬合的線紋中心線線性度不高,而直線線性度不高則會直接影響后續線紋比對的精度,從而極大地降低檢定精度。
因此,提取到更加精確且直線度高的線紋進行比對,成為影響檢定精度的重要因素。本文在吸收自動檢定方法優點的基礎上,提出了基于Grubbs準則和直線線性度擬合的線紋提取算法。首先,線紋刻線提取過程改變提取線紋刻線邊緣特征點這一做法,而是采用根據線紋截面灰度值特征分布的特點來定位線紋中心特征點,極大程度上降低了因為提取刻線邊緣而造成有效信息的損失的情況;得到較為準確的線紋中心特征點后,采用基于Grubbs準則和直線線性度的擬合算法,去除了因邊緣誤差而引入粗大誤差的奇異點的同時還能擬合出線性度高的直線。
本文提出了一種線紋檢定的新方法,且經過實驗驗證這種方法與現有的自動檢定方法相比,檢定精度更高,有著較大的實際應用價值。
線紋中心點的定位是擬合算法的重要前提。本章從線紋截面灰度值特征分布的特點出發,得到線紋灰度直方圖,并對其平滑,尋找平滑后圖像灰度值銳減和銳增的兩個階躍點,進而精確定位線紋中心點。
在理想條件下,線紋截面(即圖1中紅線沿著白色箭頭方向)單列像素行的灰度直方圖函數接近矩形窗函數[6]。
圖1 提取單列像素列像素灰度值
矩形窗函數的數學定義式為:
即在某個特定區間內函數值為1,其余區間函數值為0,M-1為矩形窗的長度。
理想情況下線紋截面灰度值特征分布也與之類似。黑色線紋區域的灰度值為0,而非線紋區域的灰度值為[0,255]區間內的任一數值,其具體數值與不同鋼卷尺的背景底色有關。因此,定義理想情況下線紋截面單列像素行的灰度值直方圖函數為:
由于實際鋼卷尺制造印刷水平不一、鋼卷尺線紋磨損情況不同等因素導致線紋區域并非為灰度值為0的純黑,其灰度直方圖函數曲線也并非像矩形窗函數那樣非0即1,而是存在一定的數值波動,但是總體曲線形狀仍與窗函數類似,即在非線紋區域灰度值較高,接近線紋邊緣區域灰度值急劇下降或上升,線紋區域內灰度值較低,與非線紋區域灰度值存在明顯的高度差。
為了得到線紋截面灰度值特征分布進行分析,提取待測線紋任一像素列的各個像素點的灰度值,即圖1中紅色像素線區域(紅色像素線寬度為一個像素),形成單列像素行像素灰度直方圖,如圖2所示。
圖2 單列像素行像素灰度直方圖
從圖像中可看出,曲線滿足上文描述的“窗函數”的性質。
由于提取到的單列像素灰度值形成的灰度直方圖毛刺較多,也存在著高頻噪音,不利于后續確定中心點,因此需要進行平滑處理。針對圖像的特點,采用Savitsky-Golay平滑算法。
Savitsky-Golay平滑算法的原理是通過多項式對移動窗口內 N =2r+1的數據進行多項式最小二乘擬合,算出窗口內中心點關于其周圍點的加權平均和[7-8],從而完成平滑處理。Savitsky-Golay平滑后原圖像及其局部放大圖像如圖3(a)、(b)所示。
圖3 Savitsky-Golay平滑后圖像
Savitsky-Golay平滑后的曲線,需要找到灰度值銳減和銳增的兩個階躍點,這兩點即位于線紋的上下邊緣。IndMin函數可以自動遍歷曲線并獲取曲線上所有極小值點,因此通過調用IndMin函數獲取曲線上所有極小值點,即可得到所求的階躍值點及其橫坐標值。IndMin函數獲取曲線極小值點示意圖如圖4所示,橫坐標值40附近的極小值點與75附近的極小值點為所求的兩個階躍值點。因為像素灰度值在線紋內部是均勻分布的,因此對這兩點橫坐標進行1∶1加權取中值便可定位線紋中心點。
圖4 IndMin函數獲取曲線極小值點示意圖
可定位一個位于中心線上的特征點。將上述單像素列水平平移一個像素的距離,便可得到一個新的像素列,對此新像素列繼續定位中心特征點。以此方法水平移動像素列,使之遍歷整條線紋,便可得到大量中心特征點。為了方便實驗,本文將單條刻線水平等間距分成20等分,即只取20個離散點當做擬合直線原始點(實際上,經驗證,當取20個點擬合出來的直線精度已很高),如圖5所示。
圖5 單根刻線上按灰度值取出的20個離散點
對數據點擬合一般運用最小二乘法。但如上文所述,由于線紋邊緣并非均勻分布,可能存在缺口、凸起等凹凸不平的情況,這就帶來了含有粗大誤差的特征點,也叫作奇異點,影響后續線紋邊緣線擬合的精度;而且最小二乘法對數據點中的“極佳直線”沒有辨別的能力。其中,極佳直線是所有擬合直線中效果最好的一條,即要滿足直線的線性度高且參與擬合該直線的點數目最多的要求。所以,運用最小二乘法無法排除奇異值點的干擾,并擬合最優直線[9]。這樣的擬合結果顯然無法滿足高精度線紋中心線的要求。針對最小二乘法存在的不足之處,提出了一種基于Grubbs準則和直線線性度的擬合算法,去除了含有粗大誤差的奇異點的同時還能擬合出線性度高的直線。
首先定義一系列變量:
圖6 點與擬合直線示意圖
3)剔除距擬合直線最遠的點數目J。根據經驗設定最優直線線性度以及L和J的值。假定為需要擬合的離散數據點集,,,,,,,Q(max),為在程序運行中用來存儲的相應點集。
基于Grubbs準則和直線線性度的改進擬合算法具體實施程序流程圖7所示。
圖7 基于Grubbs準則和直線線性度的改進擬合算法程序流程圖
基于Grubbs準則和直線線性度的改進擬合算法的原理是:先以為準則,結合L和 J的值,多次利用最小二乘法并結合Grubbs準則,將線紋中心線上的數據點粗分成若干個數據點集,每一個點集中的點與相應擬合直線的距離都在L范圍內,即這些點屬于相應直線,距離在L范圍外的點視為奇異點不參與擬合計算過程;然后尋找到上述若干點集中含有離散數據點數量最多的點集,此點集即為包含線紋中心線的點集; 接著再次以為準則,將含有離散數據點數量最多的點集利用最小二乘法循環擬合,直到擬合的直線線性度不小于為止,即得到所求的線紋中心線。
當一條中心線確立后,可以按照同樣的方法確立其余線紋的中心線,但是產生了一個問題:理論情況下,鋼卷尺上各條線紋都是互相平行的,也就是說,不同線紋的中心線也是相互平行的。然而,按照上述算法,不同線紋擬合出的中心線的直線方程各不相同,進而斜率也不相同,這樣擬合出來的中心線也不符合實際,而且這也給計算兩條中心線紋之間的距離帶來了困難。
為了解決這一問題,引入定斜率直線擬合的方法。因為各條線紋圖像是平行的,因此按照上述算法擬合出來的各條線紋中心線的斜率雖然不一樣,但是兩者之差極其微小,可以忽略不計。另一方面,根據數學中的近似相等原理[11],當兩條直線斜率相同且這個斜率數值非常接近于零時,這兩條直線之間的距離即為兩條直線方程截距之差的絕對值[12]。如圖8所示,當趨向于0時,設為兩條直線方程式中的截距差,為兩條直線的垂直距離,則。
圖8 水平距離與截距差關系示意圖
根據上述原理,線紋提取過程的步驟為:首先選定一根樣貌較為完整、形態較為良好的的刻線作為標準刻線,定位線紋中心特征點,然后使用2.2中的算法進行直線擬合并得到直線方程,設為y=kx+b;然后以該方程的斜率為標準量,按照2.2中的算法去擬合其余的直線,即其余直線可表示為 y =kx+m1、 y =kx+m2···其中、為待求參數;得到各線紋中心線與此標準線紋中心線的截距差,即兩條直線間的距離再將此距離(像素值)轉化成長度值,與高精度測量設備如影像測量儀測得的各線紋間距數值做對比,即可得到示值誤差;最后進行誤差評定,驗證算法的效果。
本實驗采用1 000萬像素的工業相機拍攝局部線紋區域,拍攝的得到的原始線紋圖像為分辨率3 840×2 748的灰度圖,用作比對的標準設備為SEREIN公司型號為SVM 3 020 DCC Classic的影像測量儀,實物如圖9所示,其準確度0.05 μm。
圖9 SEREIN影像測量儀實物圖
按照上述方法,以鋼卷尺1 m附近的一根刻線為標準,分別對距離其1 mm、2 mm、3 mm、5 mm、10 mm的刻線進行中心線的提取,計算這些中心線距離標準中心線的實際距離,并與影像測量儀對其測量的結果進行比對,得到示值誤差值。同理,使用對比算法進行重復實驗,即使用引言中景加慧提出的邊緣檢測圖像處理的自動鋼卷尺檢定方法對上述五條刻線進行刻線提取并與影像測量儀測得的標準值進行比對,得到示值誤差值,并對兩種方法的測量結果進行分析。
首先選定一根樣貌較為完整、形態較為良好的的刻線作為標準刻線,按照上述實驗方法,可得到最終擬合出的直線方程為:
圖10 標準線紋中心線擬合結果圖
以此標準直線方程,對距其1 mm、2 mm、3 mm、5 mm、10 mm的刻線進行中心線擬合,設直線方程為:
其中 n =1,2,3,5,10。 |mn-667.507|即為各中心線與標準中心線之間的像素距離,最后根據換算關系(1像素等于5.58 μm)將像素值轉化為長度值即可得到最終距離。使用邊緣檢測算法的檢定結果如圖11所示,使用本文算法的檢定結果如圖12所示,影像測量儀檢定結果如圖13所示。
圖11 邊緣檢測算法檢定結果
圖13 影像測量儀檢定結果圖
兩種線紋檢定結果與影像測量儀檢定結果的對比及示值誤差值如表1所示。對測量結果分析可得,采用本文算法對鋼卷尺進行檢定的示值誤差已遠遠小于JJG 4—2015 《鋼卷尺檢定規程》中所規定的Ⅰ 級鋼卷尺±0.1 mm的標準[13],與基于邊緣檢測算法的檢定方法相比,示值誤差也大大降低。
表1 本文算法結果與影像測量儀測量結果對比表
本文提出了基于Grubbs準則和直線線性度的擬合算法進行線紋檢定,采用根據線紋截面灰度值特征分布的特點來定位線紋中心特征點,極大程度上降低了因為提取刻線邊緣而造成有效信息的損失的情況;得到較為準確的線紋中心特征點后,采用基于Grubbs準則和直線線性度的擬合算法,去除了含有粗大誤差的奇異點的同時還能擬合出線性度高的直線。具有較為實際的現實應用價值。