李建鑫 ,陳 鴻 ,王晉祺
(1.中北大學(xué) 儀器與電子學(xué)院,山西 太原 030051;2.上海無線電設(shè)備研究所,上海 201109)
近年來,基于機(jī)器視覺的眼鏡鏡片輪廓提取系統(tǒng)因為其優(yōu)良的效率與成本而被市場快速推廣[1]。然而在利用機(jī)器視覺提取鏡片輪廓過程中,會有難以避免的環(huán)境干擾光造成誤差,嚴(yán)重影響提取的鏡片輪廓數(shù)據(jù)的光順與精度。
B 樣條曲線擬合的定義一般是指:給定一組已知的數(shù)據(jù)點,要求尋找一條B 樣條曲線逼近或通過這些數(shù)據(jù)點[2]。對B 樣條曲線擬合問題的研究在高精加工領(lǐng)域有著非常重要的地位,有諸多學(xué)者取得了大量卓有成效的成果[3-4]。目前最小二乘法使用最普遍的B 樣條曲線擬合方法,目標(biāo)是極小化各個數(shù)據(jù)點與所擬合的B 樣條曲線上的對應(yīng)點的距離平方和[2]。然而由環(huán)境干擾光造成的誤差總是集中分布,且偏差的方向總是向內(nèi),不適合使用最小二乘法進(jìn)行擬合。
本文針對環(huán)境干擾光造成的鏡片輪廓上的誤差進(jìn)行了特征分析,并結(jié)合鏡片輪廓為凸曲線的特征,給出了專門適用的基于三次B 樣條曲線擬合的方法:首先依據(jù)一定的特征剔除受環(huán)境干擾光影響產(chǎn)生誤差的輪廓段;然后使用基于三次B 樣條曲線的保形插值算法對被剔除的輪廓部分進(jìn)行插補(bǔ)。最后通過實驗實現(xiàn)了對該算法提高數(shù)據(jù)精度效果的量化分析,驗證了該算法對環(huán)境干擾光造成的誤差有著顯著的修復(fù)效果。
基于機(jī)器視覺的眼鏡鏡片輪廓提取系統(tǒng)可簡化為圖1 所示的投影模型,A 面是一個平行光源,B 是待提取輪廓的物體,C 面是感光器件。當(dāng)平行光由A 面射向C 面時,待提取輪廓的物體B 對平行光進(jìn)行遮擋,在C面產(chǎn)生待提取物體的投影B′,由感光器件C 對投影B′進(jìn)行測量以提取輪廓[5]。然而環(huán)境中存在不可避免的干擾光,如在圖1 中由D 點發(fā)出的光,會在B 的投影的輪廓上生成一個光斑D′。
圖1 輪廓提取系統(tǒng)模型圖
系統(tǒng)提取到的輪廓由有序的離散坐標(biāo)點組成,現(xiàn)實中的眼鏡鏡片輪廓線為凸曲線,因此理想中提取到的輪廓應(yīng)為由n 個頂點構(gòu)成的凸n 邊形。圖2 所示為利用機(jī)器視覺提取的眼鏡鏡片輪廓圖,在輪廓上取一個區(qū)域I,圖3 為圖2 中此區(qū)域的放大圖。
圖2 眼鏡鏡片輪廓圖
圖3 I 區(qū)域局部放大圖
在圖3 中可以明顯觀察出提取到的輪廓上有許多凹陷的部分,這正是因為如圖1 中的光斑D′的影響。將輪廓上凹陷的頂點稱為輪廓的凹點,并把凹點作為環(huán)境干擾光所造成的誤差的特征體現(xiàn)。
根據(jù)上述在幾何上這樣定義眼鏡鏡片輪廓上的凹點:在眼鏡鏡片的多邊形輪廓上取一個頂點B,在頂點B的順時針方向取任意的頂點A、在頂點B 的逆時針方向取任意的頂點C,當(dāng)滿足時,如果存在這樣的頂點A、頂點C,使在的順時針方向,則頂點B 為此多邊形輪廓的凹點。
對凹點的檢測程序流程圖如圖4 所示。
遍歷輪廓上所有頂點后,找到輪廓上的所有凹點。這些凹點不僅本身就是誤差,而且在后續(xù)的磨削加工中,這些凹點還會造成對其他頂點的過切,進(jìn)一步惡化眼鏡鏡片輪廓的精度。因此本文采用首先剔除輪廓上檢測出來的所有凹點,然后再對剔除凹點的部分進(jìn)行插補(bǔ)的方案。剔除所有凹點后的輪廓頂點圖如圖5 所示。
一條k 次B 樣條曲線可以用一條分段的有理多項式矢函數(shù)來表達(dá)[6-7],其表達(dá)的公式為:
圖4 凹點檢測流程圖
圖5 剔除凹點后的輪廓圖
式中,di(i=0,1,2,…,n)為構(gòu)造B 樣條曲線的n+1 個控制頂點;Bi,k(u) 表示的是k 次規(guī)范的B 樣條基函數(shù),由節(jié)點矢量u=[u0,u1,u2,…,ui+k+1]根據(jù)de Boor-Cox 遞推公式定義:
眾所周知B 樣條曲線不具有插值性,待B 樣條曲線插值通過的點被稱為型值點,構(gòu)造插值B 樣條曲線需要先用型值點求出控制點,然后再用控制點生成B 樣條曲線[8]。
常用的求控制點的方法有反算法[9]和迭代算法[10]。然而這兩種算法運(yùn)算量較大,并且用這兩種算法求出的控制點所構(gòu)造的B 樣條曲線無法保證具有和型值點多邊形相同的凹凸性。目前有針對基于權(quán)因子的NURBS保形插值曲線的研究[11],然而權(quán)因子的確定較為復(fù)雜,運(yùn)算量較大。綜合考慮該算法的使用場景,本文采用株洲工學(xué)院方逵教授提出的保形B 樣條插值算法[12]并針對適用場景進(jìn)行了改進(jìn)。
定理1:如果相鄰的3 個控制點dk、dk+1、dk+2共線,且dk+1=(dk+dk+2)/2,則三次均勻B 樣條曲線插值控制點dk+1[12-13]。
根據(jù)定理1,按如下過程求得控制點:設(shè)需要插值的型值點為Vi(i=0,1,2,…,n),型值點構(gòu)成的多邊形輪廓為(V0,V1,V2,…,Vn),如圖6 所示。
圖6 型值點多邊形
定義三次B 樣條插值曲線P(u)的端點切矢量為給定值T0、Tn。在內(nèi)部型值點Vi處的切矢量Ti為:
則三次B 樣條插值曲線的控制點定義為:
其中,λi是可調(diào)節(jié)參數(shù)。根據(jù)定理1,以di(i=0,1,2,…,3n)為控制頂點的準(zhǔn)均勻三次B 樣條曲線插值所有的型值點Vi(i=0,1,2,…,n)。
已知眼鏡鏡片輪廓線是凸曲線,因此需要保證生成的插值三次B 樣條曲線也是凸的,根據(jù)B 樣條曲線的保凸的特性,當(dāng)控制多邊形(d0,d1,d2,…,d3n)為凸多邊形時,即可保證由此控制多邊形生成的B 樣條曲線為凸曲線。本文給出要使控制多邊形(d0,d1,d2,…,d3n)為凸多邊形對λi的要求。
如圖7 所示,由型值點Vi-2、Vi-1構(gòu)造矢量由型值點Vi+1、Vi+2構(gòu)造矢量。型值點Vi的切矢Ti所在的直線與所在的直線交于點Ri0,型值點Vi的切矢Ti所在的直線與所在的直線交于點Ri1。其中i=1 時將端點V0處的切矢量T0作為;i=n-1 時將端點Vn處的切矢量Tn作為不存在點Ri0;i=n 不存在點Ri1。
圖7 保形條件說明
為了使插值曲線保凸,即以di(i=0,1,2,…,3n)為頂點的控制多邊形(d0,d1,d2,…,d3n)為凸多邊形,λi需要滿足條件:
下面給出保凸插值的程序框圖,如圖8 所示。
圖8 保形插值的程序框圖
雖然圖5 所示輪廓的頂點中已經(jīng)不存在凹點,但是相鄰頂點之間的間隔很不均勻,有的間隔過大,嚴(yán)重?fù)p失精度,且無法進(jìn)行后續(xù)的磨削加工。為此,本文基于上述的B 樣條曲線對去除凹點后的輪廓部分進(jìn)行插補(bǔ)處理。
圖5 顯示去除凹點后的輪廓總是被去除大量連續(xù)的頂點,這是因為輪廓上的凹點數(shù)量比較多,且總是集中出現(xiàn)。把這樣凹點連續(xù)出現(xiàn)的輪廓段稱為凹點段。如果兩段凹點段之間的間隔只有一個頂點,就把這兩個凹點段作為同一段來處理。將輪廓上的局部放大圖圖3 所顯示的輪廓上的凹點進(jìn)標(biāo)記,結(jié)果如圖9 所示,在圖9中凹點段(B,…,C)、凹點段(C,…,D)、凹點段(D,…,E)作為同一凹點段(B,…,E)進(jìn)行處理。
圖9 凹點段示意圖
對凹點段(B,…,E)的保凸插值:將點B、點C、點D、點E 作為型值點,將作為端點切矢量,按照圖8所示流程生成插值曲線。結(jié)果如圖10 所示。
圖10 凹點段插補(bǔ)示意圖
對圖5 中的整個輪廓去除凹點部分進(jìn)行保凸插值并對插值曲線進(jìn)行等步長離散化,結(jié)果如圖11 所示,在輪廓上消除了所有凹陷的部分,且因為由三次B 樣條曲線進(jìn)行插補(bǔ),所以光順度較好,對環(huán)境干擾光造成的誤差有明顯的修復(fù)效果。
圖11 修復(fù)誤差后的輪廓圖
現(xiàn)實中的眼鏡鏡片輪廓線通常都是比較復(fù)雜的曲線,難以得知其準(zhǔn)確的輪廓數(shù)據(jù),不便于對本文提出的平滑處理算法提高數(shù)據(jù)精度的有效性進(jìn)行量化分析。為此本文設(shè)計了以下的實驗:
(1)使用基于機(jī)器視覺的眼鏡鏡片輪廓提取系統(tǒng)提取標(biāo)準(zhǔn)圓形鏡片的輪廓,提取到的輪廓如圖12 所示。
(2)用本文提出的平滑處理擬合算法對環(huán)境干擾光造成的誤差進(jìn)行修復(fù)處理,效果圖如圖13 所示。
圖12 提取到的圓的輪廓圖
圖13 修復(fù)誤差后的圓的輪廓圖
(3)分別將平滑處理前和平滑處理后的輪廓數(shù)據(jù)用最小二乘法擬合圓,最小二乘法是一種最常見的數(shù)學(xué)優(yōu)化方法,通過最小化誤差的平方和找到與所提取到的輪廓數(shù)據(jù)最吻合的圓的參數(shù)方程[14]。
設(shè)最小二乘圓的參數(shù)方程為:
式中,(xc,yc)表示的是擬合出來的圓心坐標(biāo),R 表示的是擬合出來的圓的半徑。最小化誤差的平方和建立的模型為:
式中,(xi,yi)表示的是提取的輪廓上的離散坐標(biāo)點。對該模型的求解屬于非線性最小二乘法問題[15],計算復(fù)雜,運(yùn)算量較大。本文先將非線性最小二乘問題轉(zhuǎn)換為線性問題[16-17],方法如下。令誤差項變?yōu)椋?/p>
為對此模型求解,參考文獻(xiàn)[16]、[17],設(shè)中間變量:
式中,N 表示總點數(shù)。模型式(9)的解為:
根據(jù)式(11),最小二乘擬合圓的圓心(xc,yc)和半徑R的估計值為:
由最小二乘法擬合圓的參數(shù)和輪廓數(shù)據(jù)(xi,yi)求得輪廓數(shù)據(jù)的最小二乘擬合過程中的均方差為:
最小二乘法擬合的圓的圓度誤差δ 為:
本文的目的是對提出的平滑處理算法的效果進(jìn)行量化分析,因此分別將平滑處理前和平滑處理后的輪廓數(shù)據(jù)用最小二乘法擬合圓的均方差與圓度誤差進(jìn)行比較。均方差與圓度誤差越小,說明輪廓數(shù)據(jù)與圓的吻合程度越高,此輪廓的精確程度要更好[18]。在不同的環(huán)境光下多次實驗,結(jié)果如表1 所示。
表1 修復(fù)誤差前后的輪廓數(shù)據(jù)擬合圓的對比
從表1 可以看出,在使用本文的平滑處理算法對輪廓數(shù)據(jù)進(jìn)行處理后,最小二乘法擬合圓的均方差減少了80%~90%,圓度誤差減少了70%~80%,輪廓與標(biāo)準(zhǔn)圓的吻合程度顯著提高,輪廓數(shù)據(jù)的精度顯著增加。證明本文提出的平滑處理擬合算法對基于機(jī)器視覺的眼鏡鏡片輪廓提取系統(tǒng)有著良好的平滑去噪與誤差修復(fù)效果,大幅度提高了系統(tǒng)提取的輪廓的光順與精度。
針對使用機(jī)器視覺提取輪廓過程中環(huán)境干擾光造成的誤差,本文通過分析誤差的特征,提出了一種全新的平滑擬合算法,并設(shè)計實驗驗證了該算法可以顯著提高基于機(jī)器視覺的眼鏡鏡片輪廓提取系統(tǒng)的光順與精度,且該算法運(yùn)算高效、編程簡單。該算法的應(yīng)用場景存在一定的限制,適用于輪廓是凸曲線的場景,但是對于輪廓上有較少拐點的情況,該算法也有一定的指導(dǎo)啟發(fā)意義,可以通過對輪廓進(jìn)行變形、分段等操作,構(gòu)造出凸曲線,以適用該算法。