李建鑫 陳 鴻 王晉祺
1(新疆政法學(xué)院 新疆 圖木舒克 844000) 2(中北大學(xué)儀器與電子學(xué)院 山西 太原 030051) 3(上海無線電設(shè)備研究所 上海 201109)
隨著經(jīng)濟(jì)的發(fā)展與人力成本的提高,在眼鏡片的加工過程中對(duì)自動(dòng)化程度的要求越來越高。為了適應(yīng)市場需求,中北大學(xué)推出了眼鏡片自動(dòng)磨邊機(jī)系統(tǒng),此系統(tǒng)采用了基于機(jī)器視覺的輪廓提取系統(tǒng)提取眼鏡片的輪廓數(shù)據(jù)[1]。為了便于后續(xù)依照輪廓數(shù)據(jù)的磨削加工,需要對(duì)輪廓提取系統(tǒng)所采集的眼鏡片輪廓數(shù)據(jù)加以平滑處理。探求一種專門適用于眼鏡片輪廓數(shù)據(jù)的平滑處理方法是提高眼鏡片自動(dòng)磨邊機(jī)系統(tǒng)加工精度的關(guān)鍵。
目前,對(duì)數(shù)據(jù)的平滑處理多采用數(shù)值分析的方法。常見的有滑動(dòng)平均法、Savitzky-Golay卷積平滑法、高斯尺度變換法[2-3]等,通常會(huì)針對(duì)應(yīng)用場景靈活組合,多次平滑。例如:文獻(xiàn)[4]組合使用滑動(dòng)平均法、Savitzky-Golay卷積平滑法多次平滑以處理線結(jié)構(gòu)光中心線提取問題;文獻(xiàn)[5]組合使用滑動(dòng)平均法、Savitzky-Golay卷積平滑法、高斯尺度變換法多次平滑以處理車輪實(shí)測型面數(shù)據(jù)平滑問題。平滑幾次之后結(jié)束通常是根據(jù)經(jīng)驗(yàn)設(shè)定[4]或者以平滑誤差的標(biāo)準(zhǔn)差為條件[5]。
然而針對(duì)眼鏡片輪廓數(shù)據(jù)的平滑處理,為了防止在后續(xù)依照輪廓數(shù)據(jù)的磨削加工中產(chǎn)生過切,應(yīng)當(dāng)以得到全凸的光滑曲線作為平滑結(jié)束的條件。本文將此類以得到全凸的光滑曲線為目的的平滑稱為保凸平滑。傳統(tǒng)的平滑處理方法如果以得到全凸的光滑曲線作為平滑結(jié)束的條件,往往會(huì)平滑次數(shù)過多,造成耗時(shí)過長且嚴(yán)重丟失數(shù)據(jù)的細(xì)節(jié)。
本文提出一種專門適用于眼鏡片輪廓這一類凸曲線數(shù)據(jù)的保凸平滑的方法:尋找特征將采集到的輪廓數(shù)據(jù)分為可靠點(diǎn)和噪點(diǎn)兩種類型,剔除噪點(diǎn)后,對(duì)可靠點(diǎn)進(jìn)行基于Bézier曲線的保形插值來補(bǔ)全輪廓。
眼鏡片的輪廓線在理想中為光滑的全凸閉合曲線,如圖1所示。
圖1 理想中的眼鏡片輪廓曲線
然而由于測量系統(tǒng)的誤差、測量環(huán)境等的影響,必然會(huì)使測量得到的輪廓數(shù)據(jù)中包含大量的噪聲干擾,根據(jù)實(shí)測數(shù)據(jù)繪制的眼鏡片輪廓如圖2所示。
圖2 實(shí)測的眼鏡片輪廓曲線
為了便于分析,本文將實(shí)測的輪廓曲線的數(shù)據(jù)點(diǎn)分為可靠點(diǎn)和噪點(diǎn)兩種類型,并將噪點(diǎn)依照特征再次細(xì)分。圖2中I區(qū)域的鋸齒形信號(hào),是由測量系統(tǒng)的誤差引起的,本文將此類噪點(diǎn)稱為I型噪點(diǎn)。圖2中II區(qū)域內(nèi)輪廓上凹陷的部分,是由測量環(huán)境中的干擾光線引起,本文將此類噪點(diǎn)稱為II型噪點(diǎn)。圖2中III區(qū)域內(nèi)輪廓上凸起的部分,是由測量光路中的污點(diǎn)導(dǎo)致的,本文將此類噪點(diǎn)稱為III型噪點(diǎn)。其中:I型噪點(diǎn)是需要平滑處理的主要問題;II型噪點(diǎn)和III型噪點(diǎn)只是偶爾出現(xiàn)。
在采集到輪廓數(shù)據(jù)后,眼鏡片自動(dòng)磨邊機(jī)系統(tǒng)會(huì)依據(jù)輪廓數(shù)據(jù)以磨削加工的方式加工眼鏡片。磨削加工采用逐點(diǎn)磨削的方式,所用的磨輪半徑較大,因此如果輪廓曲線上有凹陷的部分,磨削加工會(huì)造成對(duì)周圍其他磨削點(diǎn)的過切[6],如圖3所示,使磨削加工的結(jié)果和所給的輪廓數(shù)據(jù)極大偏差,磨削加工變得不可控,這是需要極力避免的,因此平滑處理首先要保證的是平滑處理后輪廓曲線是全凸的閉曲線,即為保凸平滑。
圖3 過切示意圖
為了辨別噪點(diǎn)和可靠點(diǎn),本文引入凸包算法,尋找輪廓數(shù)據(jù)的凸包,凸包是計(jì)算幾何中的概念,若平面上包含有限個(gè)點(diǎn)的點(diǎn)集為Q,則其凸包是包含Q的最小凸多邊形[7]。將凸包的頂點(diǎn)稱為凸包點(diǎn),凸包多邊形的邊稱為凸包邊。凸包算法的具體過程參考文獻(xiàn)[8]。
利用凸包算法提取圖2所示輪廓數(shù)據(jù)的凸包點(diǎn)并用叉號(hào)標(biāo)記,結(jié)果如圖4所示,將這些凸包點(diǎn)作為可靠點(diǎn),其他點(diǎn)都作為噪點(diǎn)。可以看出對(duì)于I型噪點(diǎn)和II型噪點(diǎn)所在的區(qū)域,對(duì)可靠點(diǎn)和噪點(diǎn)的辨別效果很好,可是對(duì)于III型噪點(diǎn)所在的區(qū)域,對(duì)可靠點(diǎn)和噪點(diǎn)的辨別不準(zhǔn)確。
圖4 凸包算法標(biāo)記結(jié)果
為了實(shí)現(xiàn)對(duì)III型噪點(diǎn)的辨別,設(shè)計(jì)以下的方法。將相鄰?fù)拱c(diǎn)之間的輪廓點(diǎn)到這條凸包邊的平均距離作為此凸包邊的偏差。如果出現(xiàn)連續(xù)的偏差大于給定閾值的凸包邊,則認(rèn)為是受到III型噪點(diǎn)的影響,需要剔除III型噪點(diǎn)后重新辨別可靠點(diǎn)和噪點(diǎn)。如圖5所示,凸包邊AB、BC與輪廓點(diǎn)的偏差大于給定閾值,因此認(rèn)為點(diǎn)B是III型噪點(diǎn),且在點(diǎn)B的周圍還存在其他III型噪點(diǎn)。
如圖6所示,在點(diǎn)B右側(cè),依次將輪廓數(shù)據(jù)點(diǎn)Bri(i=0,1,…,n)與點(diǎn)A相連,如果點(diǎn)Bri與點(diǎn)A之間的輪廓點(diǎn)與直線ABri的平均距離大于給定閾值,則剔除掉Bri,直到符合閾值要求為止,這樣就剔除掉了點(diǎn)B右側(cè)的所有III型噪點(diǎn)。在點(diǎn)B左側(cè)同理。
(a)
(b)圖6 剔除點(diǎn)B右側(cè)的III型噪點(diǎn)
剔除掉點(diǎn)B周圍的III型噪點(diǎn)后,對(duì)剩下的所有輪廓點(diǎn)重新尋找凸包點(diǎn)。該方法可以解決偶爾出現(xiàn)的III型噪點(diǎn)問題。如圖7所示,用叉號(hào)標(biāo)記出來的是可靠點(diǎn),對(duì)III型噪點(diǎn)辨別正確。
圖7 正確辨別可靠點(diǎn)和噪點(diǎn)
保凸插值是計(jì)算機(jī)圖形學(xué)的重要研究內(nèi)容。平面內(nèi)的保凸插值是指構(gòu)造一條平面曲線來通過平面內(nèi)的單調(diào)凸點(diǎn)列,并與此點(diǎn)列的凸性保持一致[9]。對(duì)保凸插值方法的研究有許多成果,如:文獻(xiàn)[10]提到的基于B樣條曲線的保凸插值;文獻(xiàn)[11-12]提到的基于權(quán)因子的NURBS曲線的保凸插值;文獻(xiàn)[13-15]提到的基于三角樣條曲線的保凸插值;文獻(xiàn)[16]提到的保凸插值細(xì)分方法。然而這些方法往往運(yùn)算量較大,如基于B樣條曲線、三角樣條曲線的保凸插值需要解一組限制了保凸條件和連續(xù)性條件的方程組[10-15];保凸插值細(xì)分方法需要獨(dú)立判斷每個(gè)細(xì)分點(diǎn),同時(shí)極限曲線的連續(xù)性分析也是十分復(fù)雜[16]。
本文采用基于拼接三次Bézier曲線的保凸插值方法[17]。具體是在凸點(diǎn)列的每相鄰兩個(gè)凸點(diǎn)之間插入一條三次Bézier曲線。利用凸點(diǎn)列所連成的折線的運(yùn)動(dòng)方向來求插入的每段Bézier曲線合理的控制點(diǎn)。此方法避免了解方程組的運(yùn)算,耗時(shí)少且在保證拼接的Bézier曲線之間G1連續(xù)的條件下,每相鄰兩個(gè)凸點(diǎn)之間的插值Bézier曲線有獨(dú)立的形狀調(diào)節(jié)參數(shù)。
一條平面內(nèi)的Bézier曲線可以由給定平面中n+1個(gè)點(diǎn)的位置向量bi(i=0,1,…,n)來確定,Bézier曲線段的參數(shù)方程表示為[17]:
式中:bi(i=0,1,…,n)是Bézier曲線的控制點(diǎn);Bi,n(t)表示的是Bernstein基函數(shù)。Bi,n(t)有以下形式:
本文所使用的三次Bézier曲線參數(shù)公式展開為:
P(t)=b0(1-t)3+3b1t(1-t)2+
3b2t2(1-t)+b3t3t∈[0,1]
(3)
式中:bi(i=0,1,2,3)是三次Bézier曲線的四個(gè)控制點(diǎn)。
本文使用拼接三次Bézier曲線保凸插值凸點(diǎn)列[17]。為了在凸點(diǎn)列的每相鄰兩個(gè)凸點(diǎn)之間插入一條三次Bézier曲線,需要在每相鄰兩個(gè)凸點(diǎn)之間插入兩個(gè)新的控制點(diǎn),且插入的控制點(diǎn)需要滿足要求:插入控制點(diǎn)后新的點(diǎn)列依舊是凸點(diǎn)列。本文對(duì)插入的控制點(diǎn)的求取方法如下:
如圖8所示,考慮凸點(diǎn)列中的任意四個(gè)相鄰?fù)裹c(diǎn)Pi-1、Pi、Pi+1、Pi+2,作∠Pi-1PiPi+1的外角平分線與∠PiPi+1Pi+2的外角平分線交于點(diǎn)Oi。
圖8 Bézier曲線控制點(diǎn)的構(gòu)造
在點(diǎn)Pi、Pi+1之間插入的三次Bézier曲線的控制點(diǎn)如下:
式中:λi、μi(0<λi,μi<1)是調(diào)節(jié)形狀的參數(shù),可以對(duì)整體的拼接Bézier曲線作局部調(diào)節(jié)。根據(jù)構(gòu)造過程可以得知,所插入的每段Bézier曲線的控制點(diǎn)序列是凸的,因此插入的Bézier曲線是凸曲線。同樣由構(gòu)造控制點(diǎn)的過程可知每相鄰兩段Bézier曲線在拼接處的控制點(diǎn)三點(diǎn)共線,因此總體的拼接Bézier曲線滿足G1連續(xù)[18],這樣整體的拼接Bézier曲線是保凸的。
剔除噪點(diǎn)之后的眼鏡片輪廓如圖9所示,對(duì)剩余可靠點(diǎn)的保形插值結(jié)果如圖10所示。
圖9 剔除噪點(diǎn)后的輪廓
圖10 對(duì)可靠點(diǎn)插值后的輪廓線
將基于機(jī)器視覺的輪廓提取系統(tǒng)實(shí)測的眼鏡片輪廓數(shù)據(jù)用本文方法進(jìn)行處理,與滑動(dòng)平均法、Savitzky-Golay卷積平滑法[2-5]的處理結(jié)果進(jìn)行比較。圖11-圖13是三種方法的平滑效果,其中:虛線是平滑處理前的輪廓曲線;實(shí)線是平滑處理后的輪廓曲線。
圖11 本文算法的平滑效果
圖12 滑動(dòng)平均法的平滑效果
圖13 Savitzky-Golay卷積平滑法的平滑效果
圖11為本文方法的平滑效果,與平滑前的輪廓較吻合,且得到的是全凸的輪廓曲線,實(shí)現(xiàn)了保凸平滑。圖12是滑動(dòng)平均法平滑效果,也實(shí)現(xiàn)了保凸平滑,但是可以看出在曲率較大的地方平滑后的輪廓曲線與平滑前的偏差較大。圖13是Savitzky-Golay卷積平滑法的平滑效果,手動(dòng)設(shè)置平滑10 000次后,沒有得到全凸的曲線,且在曲率較大的地方平滑后的輪廓曲線與平滑前的已經(jīng)出現(xiàn)嚴(yán)重偏差,因此可以認(rèn)為Savitzky-Golay卷積平滑法無法實(shí)現(xiàn)保凸平滑。三種平滑方法處理結(jié)果的對(duì)比如表1所示。表1中的偏差是指平滑處理后輪廓上的點(diǎn)列與平滑處理前的輪廓曲線的平均距離。
表1 三種方法平滑結(jié)果的對(duì)比
針對(duì)眼鏡片自動(dòng)磨邊機(jī)系統(tǒng)中被用來磨削加工的眼鏡片輪廓曲線數(shù)據(jù),本文提出一種全新的平滑算法:以得到全凸的輪廓曲線作為限制條件實(shí)現(xiàn)了對(duì)數(shù)據(jù)的保凸平滑。通過實(shí)驗(yàn)對(duì)比,驗(yàn)證了在以得到全凸的光滑曲線為目的的條件下該算法相較于傳統(tǒng)的滑動(dòng)平均法、Savitzky-Golay卷積平滑法在耗時(shí)和平滑效果上都有顯著優(yōu)勢。因此本文算法是一種專門適用于全凸曲線數(shù)據(jù)的保凸平滑的處理方法。