李建鑫 陳 鴻 王晉祺
1(新疆政法學院 新疆 圖木舒克 844000) 2(中北大學儀器與電子學院 山西 太原 030051) 3(上海無線電設備研究所 上海 201109)
隨著經濟的發展與人力成本的提高,在眼鏡片的加工過程中對自動化程度的要求越來越高。為了適應市場需求,中北大學推出了眼鏡片自動磨邊機系統,此系統采用了基于機器視覺的輪廓提取系統提取眼鏡片的輪廓數據[1]。為了便于后續依照輪廓數據的磨削加工,需要對輪廓提取系統所采集的眼鏡片輪廓數據加以平滑處理。探求一種專門適用于眼鏡片輪廓數據的平滑處理方法是提高眼鏡片自動磨邊機系統加工精度的關鍵。
目前,對數據的平滑處理多采用數值分析的方法。常見的有滑動平均法、Savitzky-Golay卷積平滑法、高斯尺度變換法[2-3]等,通常會針對應用場景靈活組合,多次平滑。例如:文獻[4]組合使用滑動平均法、Savitzky-Golay卷積平滑法多次平滑以處理線結構光中心線提取問題;文獻[5]組合使用滑動平均法、Savitzky-Golay卷積平滑法、高斯尺度變換法多次平滑以處理車輪實測型面數據平滑問題。平滑幾次之后結束通常是根據經驗設定[4]或者以平滑誤差的標準差為條件[5]。
然而針對眼鏡片輪廓數據的平滑處理,為了防止在后續依照輪廓數據的磨削加工中產生過切,應當以得到全凸的光滑曲線作為平滑結束的條件。本文將此類以得到全凸的光滑曲線為目的的平滑稱為保凸平滑。傳統的平滑處理方法如果以得到全凸的光滑曲線作為平滑結束的條件,往往會平滑次數過多,造成耗時過長且嚴重丟失數據的細節。
本文提出一種專門適用于眼鏡片輪廓這一類凸曲線數據的保凸平滑的方法:尋找特征將采集到的輪廓數據分為可靠點和噪點兩種類型,剔除噪點后,對可靠點進行基于Bézier曲線的保形插值來補全輪廓。
眼鏡片的輪廓線在理想中為光滑的全凸閉合曲線,如圖1所示。

圖1 理想中的眼鏡片輪廓曲線
然而由于測量系統的誤差、測量環境等的影響,必然會使測量得到的輪廓數據中包含大量的噪聲干擾,根據實測數據繪制的眼鏡片輪廓如圖2所示。

圖2 實測的眼鏡片輪廓曲線
為了便于分析,本文將實測的輪廓曲線的數據點分為可靠點和噪點兩種類型,并將噪點依照特征再次細分。圖2中I區域的鋸齒形信號,是由測量系統的誤差引起的,本文將此類噪點稱為I型噪點。圖2中II區域內輪廓上凹陷的部分,是由測量環境中的干擾光線引起,本文將此類噪點稱為II型噪點。圖2中III區域內輪廓上凸起的部分,是由測量光路中的污點導致的,本文將此類噪點稱為III型噪點。其中:I型噪點是需要平滑處理的主要問題;II型噪點和III型噪點只是偶爾出現。
在采集到輪廓數據后,眼鏡片自動磨邊機系統會依據輪廓數據以磨削加工的方式加工眼鏡片。磨削加工采用逐點磨削的方式,所用的磨輪半徑較大,因此如果輪廓曲線上有凹陷的部分,磨削加工會造成對周圍其他磨削點的過切[6],如圖3所示,使磨削加工的結果和所給的輪廓數據極大偏差,磨削加工變得不可控,這是需要極力避免的,因此平滑處理首先要保證的是平滑處理后輪廓曲線是全凸的閉曲線,即為保凸平滑。

圖3 過切示意圖
為了辨別噪點和可靠點,本文引入凸包算法,尋找輪廓數據的凸包,凸包是計算幾何中的概念,若平面上包含有限個點的點集為Q,則其凸包是包含Q的最小凸多邊形[7]。將凸包的頂點稱為凸包點,凸包多邊形的邊稱為凸包邊。凸包算法的具體過程參考文獻[8]。
利用凸包算法提取圖2所示輪廓數據的凸包點并用叉號標記,結果如圖4所示,將這些凸包點作為可靠點,其他點都作為噪點。可以看出對于I型噪點和II型噪點所在的區域,對可靠點和噪點的辨別效果很好,可是對于III型噪點所在的區域,對可靠點和噪點的辨別不準確。

圖4 凸包算法標記結果
為了實現對III型噪點的辨別,設計以下的方法。將相鄰凸包點之間的輪廓點到這條凸包邊的平均距離作為此凸包邊的偏差。如果出現連續的偏差大于給定閾值的凸包邊,則認為是受到III型噪點的影響,需要剔除III型噪點后重新辨別可靠點和噪點。如圖5所示,凸包邊AB、BC與輪廓點的偏差大于給定閾值,因此認為點B是III型噪點,且在點B的周圍還存在其他III型噪點。
如圖6所示,在點B右側,依次將輪廓數據點Bri(i=0,1,…,n)與點A相連,如果點Bri與點A之間的輪廓點與直線ABri的平均距離大于給定閾值,則剔除掉Bri,直到符合閾值要求為止,這樣就剔除掉了點B右側的所有III型噪點。在點B左側同理。

(a)

(b)圖6 剔除點B右側的III型噪點
剔除掉點B周圍的III型噪點后,對剩下的所有輪廓點重新尋找凸包點。該方法可以解決偶爾出現的III型噪點問題。如圖7所示,用叉號標記出來的是可靠點,對III型噪點辨別正確。

圖7 正確辨別可靠點和噪點
保凸插值是計算機圖形學的重要研究內容。平面內的保凸插值是指構造一條平面曲線來通過平面內的單調凸點列,并與此點列的凸性保持一致[9]。對保凸插值方法的研究有許多成果,如:文獻[10]提到的基于B樣條曲線的保凸插值;文獻[11-12]提到的基于權因子的NURBS曲線的保凸插值;文獻[13-15]提到的基于三角樣條曲線的保凸插值;文獻[16]提到的保凸插值細分方法。然而這些方法往往運算量較大,如基于B樣條曲線、三角樣條曲線的保凸插值需要解一組限制了保凸條件和連續性條件的方程組[10-15];保凸插值細分方法需要獨立判斷每個細分點,同時極限曲線的連續性分析也是十分復雜[16]。
本文采用基于拼接三次Bézier曲線的保凸插值方法[17]。具體是在凸點列的每相鄰兩個凸點之間插入一條三次Bézier曲線。利用凸點列所連成的折線的運動方向來求插入的每段Bézier曲線合理的控制點。此方法避免了解方程組的運算,耗時少且在保證拼接的Bézier曲線之間G1連續的條件下,每相鄰兩個凸點之間的插值Bézier曲線有獨立的形狀調節參數。
一條平面內的Bézier曲線可以由給定平面中n+1個點的位置向量bi(i=0,1,…,n)來確定,Bézier曲線段的參數方程表示為[17]:
式中:bi(i=0,1,…,n)是Bézier曲線的控制點;Bi,n(t)表示的是Bernstein基函數。Bi,n(t)有以下形式:

本文所使用的三次Bézier曲線參數公式展開為:
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曲線的四個控制點。
本文使用拼接三次Bézier曲線保凸插值凸點列[17]。為了在凸點列的每相鄰兩個凸點之間插入一條三次Bézier曲線,需要在每相鄰兩個凸點之間插入兩個新的控制點,且插入的控制點需要滿足要求:插入控制點后新的點列依舊是凸點列。本文對插入的控制點的求取方法如下:
如圖8所示,考慮凸點列中的任意四個相鄰凸點Pi-1、Pi、Pi+1、Pi+2,作∠Pi-1PiPi+1的外角平分線與∠PiPi+1Pi+2的外角平分線交于點Oi。

圖8 Bézier曲線控制點的構造
在點Pi、Pi+1之間插入的三次Bézier曲線的控制點如下:
式中:λi、μi(0<λi,μi<1)是調節形狀的參數,可以對整體的拼接Bézier曲線作局部調節。根據構造過程可以得知,所插入的每段Bézier曲線的控制點序列是凸的,因此插入的Bézier曲線是凸曲線。同樣由構造控制點的過程可知每相鄰兩段Bézier曲線在拼接處的控制點三點共線,因此總體的拼接Bézier曲線滿足G1連續[18],這樣整體的拼接Bézier曲線是保凸的。
剔除噪點之后的眼鏡片輪廓如圖9所示,對剩余可靠點的保形插值結果如圖10所示。

圖9 剔除噪點后的輪廓

圖10 對可靠點插值后的輪廓線
將基于機器視覺的輪廓提取系統實測的眼鏡片輪廓數據用本文方法進行處理,與滑動平均法、Savitzky-Golay卷積平滑法[2-5]的處理結果進行比較。圖11-圖13是三種方法的平滑效果,其中:虛線是平滑處理前的輪廓曲線;實線是平滑處理后的輪廓曲線。

圖11 本文算法的平滑效果

圖12 滑動平均法的平滑效果

圖13 Savitzky-Golay卷積平滑法的平滑效果
圖11為本文方法的平滑效果,與平滑前的輪廓較吻合,且得到的是全凸的輪廓曲線,實現了保凸平滑。圖12是滑動平均法平滑效果,也實現了保凸平滑,但是可以看出在曲率較大的地方平滑后的輪廓曲線與平滑前的偏差較大。圖13是Savitzky-Golay卷積平滑法的平滑效果,手動設置平滑10 000次后,沒有得到全凸的曲線,且在曲率較大的地方平滑后的輪廓曲線與平滑前的已經出現嚴重偏差,因此可以認為Savitzky-Golay卷積平滑法無法實現保凸平滑。三種平滑方法處理結果的對比如表1所示。表1中的偏差是指平滑處理后輪廓上的點列與平滑處理前的輪廓曲線的平均距離。

表1 三種方法平滑結果的對比
針對眼鏡片自動磨邊機系統中被用來磨削加工的眼鏡片輪廓曲線數據,本文提出一種全新的平滑算法:以得到全凸的輪廓曲線作為限制條件實現了對數據的保凸平滑。通過實驗對比,驗證了在以得到全凸的光滑曲線為目的的條件下該算法相較于傳統的滑動平均法、Savitzky-Golay卷積平滑法在耗時和平滑效果上都有顯著優勢。因此本文算法是一種專門適用于全凸曲線數據的保凸平滑的處理方法。