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