韓世凡,付東翔
(上海理工大學 光電信息與計算機工程學院,上海 200093)
漸進多焦點鏡片能夠為近視或遠視患者提供連續清晰的視覺,給配戴者帶來舒適的體驗,因此得到了廣泛的應用。隨著漸進多焦點鏡片和自由曲面技術的發展,設計漸進片變得日益重要[1]。在光學漸進鏡片設計實驗中,用光學計算出的漸進鏡片總是表現出不必要的側向散光和聚集誤差,鏡片表現出歪斜變形。因此,研究者試圖將插值曲面用于已知曲面的形狀表示光學鏡片。在已知曲面型值點的情況下,嘗試用多項式插值和有效最小二乘法逼近,但計算結果的精度較差,不能夠有效地表達曲面的特性。基于Non-Uniform Rational B-Spline(NU-RBS)的技術具有精確表達曲面的特點,能夠在一般和特殊曲面之間的組合中展現其優秀的描述能力,而且通過修改控制點和權值能夠對界定面積曲面修改,具有重要的學術和應用意義。在鏡片曲面設計過程中,若要得到理想的鏡片形狀,需要不斷地進行調整,但設計人員直接考慮的是曲面的大致形狀,而非控制網格的形狀。因此實際操作中需要利用反算得到初始控制點,從而一步一步修改得到理想的曲面。曲面重構理論和技術在現代工業、信息產業、數字媒體業等領域有著廣泛的應用,受到學者的廣泛關注。20世紀80 年代中期,文獻[2]首次提出了散亂點云網格重建問題,通過邊界點的三維坐標來提取曲面特征。文獻[3]提出將散亂數據點參數化為B樣條擬合所需要的四邊形網格,再用距離函數控制擬合誤差。文獻[4]通過已知測地線的參數曲面束,反算出所需曲面。文獻[5]則對逆向過程得到的曲面保持光順性進行了研究[5]。
本文提出利用修正弦長法將鏡片上的點進行參數化,再用NURBS反算算法得到控制點,從而得到用NURBS表示的曲面。然后通過修改控制點與權值,進行曲面的局部修改,并通過FFV仿真軟件和MATLAB對光學參數分析以判斷鏡片是否達到設計要求。
因為漸進多焦點鏡片的光焦度具有自上而下漸變的特點,表面不具有回轉對稱性,所以表現為空間自由曲面[6]。漸進多焦點鏡片在上為遠視區,在下為近視區,連接兩個區的漸變區為通道,通道上度數漸變。漸進鏡片如圖1所示。

圖1 漸進鏡片圖Figure 1.Progressive lenses
在曲面重建之前,必須找到合適的型值點。對于這些散亂的數據點,需要進行優化處理,去除掉重復的點,得到一個較好的數據模型。因為鏡片是自由曲面,對于鏡片上的矢高等于曲面的型值點,可利用漸進片矢高計算專利[7]來得到曲面上的點。矢高是用來鏡片中表現彎曲程度的量,當曲面上所有點所對應的弦都在一個面內,可以通過計算來得到漸進片上的矢高獲得型值點。對于型值點,只知道它的空間坐標值,故可將其看做點云數據。若要讓點按照一定的拓補結構進行排序,首先需要將點云數據按照八叉樹結構進行存儲,確定每個點的k近鄰。初始曲面邊緣的區域作為初始區域,按照遷至約束和綜合優化準則進行控制,每個點都有鄰域,構造一個種子四角形。從初始區域開始,向曲率變平穩的區域移動,點云數據按照一定拓撲結構排列[8]。
噪聲點的出現會對控制多邊形產生影響,從而影響重構出來的曲面。如果將點云數據直接進行曲面重建,噪聲點的出現可能導致出現局部曲率變化大的問題,在后期進行曲面重建的過程中易造成曲面光滑度不夠,增加曲面重構計算負擔。因此,需要進行平滑處理,去除噪聲點。點云數據由大量的型值點構成,而噪聲點可以認為是一種高頻的隨機采樣點,大量隨機變量服從或近似正態分布。所以,本文使用高斯濾波來進行平滑處理,通過高斯濾波器在指定域內的權重服從高斯分布的特征來去除噪聲點,并且保持原有的數據面貌,最終生成三維點云,用qij表示。其中高斯濾波函數表達式如式(1)所示。
(1)
其中,ωd代表的是權重;ωx,y為點云的鄰域[9]。
通過采樣和去噪得到的點云數據只是曲面上的型值點,而要用NURBS表達出曲面,需要控制點、節點矢量和U、V方向的次數和權因子。因此重構鏡片,需要反算出控制點和參數化點云數據來得到節點矢量。
由于NURBS具有各種優越性,為曲面提供了統一的數學描述,并且在曲面造型中得到廣泛的應用[10]。其中NURBS曲面齊次坐標表達式為
(2)
式中,di,j為控制點矩陣,就是本文要反算的部分,它呈拓撲矩形結構,控制曲面的形狀和參數域內點的對應關系;Ni,k(u)和Nj,l(v)分別代表為u、v方向的規范B樣條基;k和l代表次數;ωi,j代表權因子,對于曲面接近控制矩陣起到推拉做用。權值增加,曲面被推近控制點,權值減小,則遠離。u、v參數屬于節點向量U和V,它們的表示方法分別為U=[u0,u1,…,um+k+1],V=[v0,v1,…,vn+l+1]。在大多數實際應用中,節點向量兩端節點都取值為0和1,定義域范圍表現為正方形,0≤u,v≤1,定義域被其內節點劃線分成(m-k+1)×(n-l+1) 個子矩陣。NURBS曲面在定義域上被分割成子曲面,每個子曲面定義在單位正方域中某個具有非零面積的子矩陣域上[11]。
在按德布爾-考克斯遞推公式決定的k次規范B條基函數,其遞推式如式(3)所示。
(3)
在本文中,根據上述曲面表達式,由于三次樣條在節點處可以達到二階連續,因此本文在重構時,u、v方向的次數都選擇3次。同時,由于權因子主要用于更加精確表示解析曲面(如圓柱面),以及對于面型的修改,且選值有不確定性,在重構曲面過程中沒有明顯的幾何意義。因此在反算過程中,選擇將權值設置為1以簡化本文反算的計算難度。
考慮到曲面的表達式,欲構造一個曲面,正算方法除了要控制點和次數還需要確定節點矢量。控制矩陣所構造的控制網格只能控制曲面大體走向,而要曲面貼合型值點,需要選擇較優的節點矢量參數化方法。本文選擇修正弦長參數化法[12],修正弦長參數化的表達式如下
(4)
其中,ki是修正系數,它對應的計算式為
(5)

為了讓一條三次NURBS曲線通過一組型值點qi(i=0,1,…,r),反算過程中由m+1個控制點構成的曲線的首末端點與qi相同,但要定義域內的(r+k+2) 個節點與曲線分段的連接點相對應,得到m=r+2。對于已知型值點qij,已知曲面次數為3,從曲線的推算可以得到曲面的控制點矩陣dij(i=0,1,…,r+2;j=0,1,…,s+2)。
因為前面設置權值ω=1,所以當本文將NURBS曲面的齊次坐標,投影到ω=1的超平面中心投影,所得到的三維表達式與四維齊次坐標空間的表達式一樣[14],因此本文將其次坐標表達式轉換成式(6)。
(6)

型值點的兩端端點與控制點的端點的值相同,因此在計算控制曲線時,所求控制曲線個數比原先的個數少2,表達式轉換成如下矩陣式(7)。
(7)
矩陣中的系數均為樣條基函數的值,由節點向量中的節點值計算得到,為了方便計算,采用更直接的矩陣形式,有
(8)
其中,Δi=ui+1-ui,帶入ai、bi、ci、ei組成由節點矢量計算出的系數矩陣,其中ai、bi、ci、ei的計算方法如式(9)所示。
(9)
整體曲面重構的算法流程如下:
步驟1通過給定的點云數據qij,為拓補陣列數據點的(m+1)×(n+1)形式;
步驟2固定參數v,通過上面一維的曲線反算方法,通過修正弦長參數法,以u為參數,因為參數v固定等同于V方向的j固定。因此帶入計算的時候,qij變為了qi。由上述矩陣式,帶入現有的型值點和節點矢量,通過矩陣計算式反求出每個控制曲線被截面曲面所相交的n+1個點Ci,這些點為截面曲線的控制頂點。沿著V方向遍歷,能得到(m+1)×(n+1)個點;
步驟3對于截面曲線上的控制頂點Ci,沿著參數V的方向,依次取型值點C0,i,C1,i,…,Cm+1,i。對i取定值,按照修正弦長參數法對V向型值點進行參數化,繼續利用上述曲線反算的方法繼續進行插值;
步驟4經過兩次線性矩陣進行反算,從而得到目標的控制點,將計算由二維的計算變成兩個一維的計算,達到降低次數的目的;
步驟5再將控制點和u、v參數和權值帶入三次NURBS曲面表達式中,從而重構出曲面。通過移動控制點或者增加、刪減節點的辦法,局部修改面型,從而得到理想漸進鏡片,優化漸進片散光區太大等問題。
為了在修改鏡片過程中保持鏡片的球鏡度不變,需要對鏡片界定曲面進行修改。對于重構出來的曲面,有兩類修改辦法:(1)局限于一個參數方向,修改曲面的一條帶部分;(2)局限于兩個參數方向,修改對應于子矩陣矩形域的曲面部分。
因為漸進多焦點鏡片是自上而下漸變,所以只需沿著一個參數方向修改一條帶部分。沿著U方向,在鏡片上的遠視焦點和近視焦點中間選取合適兩點u1和u2,這一點的u參數給定了一個被細化的u參數區間。因為曲面的次數是3次,有3個內節點被包含在細化后的區間(u1,u2)。在此區間內,因為空間被細化,可以找到一個新增控制點。該控制點更加靠近曲面,通過移動控制點和修改權因子,可以修改曲面的一條帶部分,從而對界定曲面進行局部修改[15]。
本文采用MATLAB編程來實現鏡片曲面重構的過程,并通過上述方法來進行驗證。圖2為鏡片模型上采樣得到的6 561個散亂點云圖片。首先,對點云數據進行預處理和利用高斯濾波原理進行數據去噪,得到圖3。為了重構曲面,通過掃描點云矩陣,利用修正弦長參數化得到節點矢量,帶入型值點用矩陣計算求出各個控制曲線,其中由固定參數v反算得到其中一條控制曲線,如圖4所示。得到控制曲線后,再利用參數u反算出各個控制曲線上的控制點,帶入NURBS算法中,重構出鏡片曲面,如圖5所示。

圖2 原始圖Figure 2. Original image

圖3 去噪圖片Figure 3. De-noisingprocessing image

圖4 控制曲線Figure 4. Control curve

圖5 重構曲面Figure 5. Reconstructed surface
結合實驗結果,為了比較重構出的鏡片效果是否符合標準,利用上述生成的自由曲面,將生成的每個點以(x,y,z)的形式輸出,保存為文本文件。通過公式計算出矢高,按照標準寫成sdf文件。
為了解基于自由曲面技術的漸進鏡片上屈光度的表面分布情況,選擇利用基于莫爾偏折法原理的FFV仿真軟件對漸進鏡片進行測量比較[16]。根據處方單LMS中,設置中心厚度、基彎、加工直徑等參數,加載sdf文件,可以模擬出所設計鏡片的球鏡度分布圖、柱鏡度分布圖、畸變分布圖和橫截面屈光度變化曲線圖。圖6為工號為MD9_100鏡片仿真結果。

由圖6(a)可以看出,重構鏡片中的ADD在處方單中設置的是1.0 D,仿真結果相差0.03 D,且圖片中球鏡度分布均勻,從遠視區到近視區過度平緩均勻,符合漸進片設計要求。對比圖6(b)和圖6(c)中可以發現,柱鏡和畸變值接近,可以近似看作鏡片的像差,而柱鏡度只有0.02 D。說明鏡片的像差小,在矯正過程中不會引入過大的像差[17]。圖6(d)代表鏡片中截面屈光度的變化情況,曲線從上到下分別為a、b和c。a曲線代表球鏡度變化,b曲線代表柱鏡度變化,c曲線代表畸變的分布情況。其中,球鏡度變化曲線從遠視區基準點的度數開始到近視區,無明顯跳變,度數變化過程平滑且緩慢。柱鏡度變化曲線與畸變曲線重合,且在通道變化處的數值都很小,符合漸進片設計要求,證明了NURBS重構的有效性。
為判斷通過界定局部修改的鏡片是否達到了本文的研究目的,將生成的曲面重復上述過程,生成sdf文件并進行FFV仿真。將仿真生成的球鏡度分布圖和柱鏡度分布圖與圖6進行比較,可以看出局部修改后鏡片的球鏡度沒有變,達到了實驗目的。如圖7所示為修改后的鏡片仿真圖。

為了判斷生成的曲面是否光順,需要對重構出的曲面進行光順性分析。文獻[18]概括的曲面光順準則中提到,需要高斯曲率變化比較均勻。圖8為利用MATLAB軟件算出的曲面高斯曲率變化圖,圖中曲率變化均勻,無突兀變化,在遠視區和近視區的分界明顯,證明重構出的鏡片光順性較好。

圖8 鏡片高斯曲率分布圖Figure 8. Distribution of the gaussian curvature radius of lens
本文通過用漸進片上的型值點重構出NURBS曲面,通過修改控制點和權因子來改變面型的方法,對漸進片設計過程中的修改問題進行研究。在型值點重構的過程中,需要通過對點云數據進行去噪才可以使用。重構過程中的參數化方法不同導致最后的結果也有差別。通過NURBS重構出的鏡片,其球鏡度的遠視區、漸進區和近視區的連接處過度更加平緩,連接處的曲率變化穩定,設計出的鏡片光順,且通過對曲面進行局部修改能夠保持球鏡度不變,證明了本文算法的有效性。