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