趙德勝,張 雪,李麗萍,鄭 鵬,卜 康
(西安郵電大學 理學院,陜西 西安710121)
二維視圖圖紙原是工程技術人員進行技術交流的重要方式,但隨著科學技術的發展,非專業技術人員與專業技術人員進行技術交流越來越普遍,而且,隨著計算機技術和數控機床技術的發展,機械加工人員可以直接利用三維工程圖進行機械零件加工,因此,二維圖紙的發展受到一定的制約。與二維視圖圖紙不同,三維模型具有直觀性強、交流便捷、以及可進行產品裝配干涉檢查等優點,因此,三維設計越來越受到人們的重視[1-3],所以,把二維工程圖轉化為三維圖就很有必要。
把二維工程圖轉化為三維效果圖算法的快速性、可靠性對于后續的三維重建具有決定性作用[4],而把二維工程圖劃分為主視圖、俯視圖、左視圖以及輔助視圖等各個視圖區是其關鍵性的一步。
在視圖劃分時,由于三視圖各個視圖之間存在不連續特征,即在主視圖與左視圖、主視圖與俯視圖之間的空檔中不存在任何圖元,因此,可以利用這種特征找出主視圖與左視圖、主視圖與俯視圖之間的間隔區域,并在間隔區域各自畫出一條直線作為二者分界線,從而把三個視圖區別開[5-9]。
由于在實際工作中,工程圖復雜程度不一。大部分工程圖只有三個視圖區(主視圖、俯視圖、左視圖)組成,稱為標準三視圖。也有部分工程圖有兩個或多于三個視圖組成。文[2,7]在視圖識別時只考慮了標準三視圖的情況,對于含有兩個或多于三個視圖的工程圖則沒有討論。本文擬基于黃金分割優化算法給出一種視圖識別方法,該算法不僅適用于標準三視圖,而且適用于非標準三視圖的情況。
黃金分割法是一種常用的一維搜索試探方法,又稱0.618法。黃金分割法適用于搜索區間[a,b]上的任何單谷函數求極大(小)值問題,對函數沒有連續性要求。其基本原理是:在搜索區間[a,b]內適當插入兩點α1和α2,并計算其函數值。α1和α2將搜索區間分成三段。利用區間消去法原理,刪去其中一段,使得搜索區間縮短。然后,在保留下來的區間上做同樣的處理,如此迭代下去使區間無限縮小,從而得到目標值fmax(x)(或fmin(x))。黃金分割法要求插入點α1和α2相對于區間[a,b]的兩端點具有對稱性[10],即

其中λ為待定常數,通常取λ=0.618。
黃金分割法通常用于對單谷連續函數f(x)求極大(或極小)值。其目標函數fmax(x)(或fmin(x))為未知量,通過不斷縮小所搜區間[a,b],來求取一個x,使得

視圖分界線的求取采用逐步試探的方式,即先作出一條直線,若不合格,則重作一條原直線的平行線進行再次判斷,因此不同直線上的元素特征是不連續的。由于黃金分割法具有適用于離散函數的優點,故可用于視圖識別。
由于視圖分界線與工程圖中的圖元沒有交點,而非視圖分界線與圖元存在交點,因此,把直線與圖元交點的數量作為目標函數。由于視圖分界線與圖元無交點,取目標函數

把目標函數的直線作為視圖分界線。
由于在工程圖中,視圖區分別按照橫軸和縱軸方向分布,因此在視圖識別時應分別按照橫軸和縱軸方向進行識別。
在確定初始搜索區間時,也需要分別確定橫軸和縱軸方向上的搜索區間。在縱軸方向上初始搜索區間應以縱軸方向上分布圖元坐標的最大值和最小值作為初始搜索區間。在橫軸方向與此相同。
首先讀取工程圖中所有粗實線圖元端點或頂點的坐標值。然后求出縱軸坐標值最大的點M1和最小的點M2。把M1的縱坐標值b作為區間上限,把M2的縱坐標值a作為區間下限,由此可得搜索區間[a,b]。
取λ=0.618,將M1和M2的縱坐標值b和a帶入式(1)即可求得插入點α1和α2。
以(0,α1)為起點,作一條平行于橫軸的直線l1。以(0,α2)為起點,作一條平行于橫軸的直線l2。
判斷l1、l2與圖形中圖元是否有交點,如果都無交點,則把直線l1和l2作為視圖分界線。
若只有一條直線(假設為l1)沒有交點,則把該直線l1作為視圖分界線之一。取[α1,b]為新的搜索區間,開始新的搜索過程。如果在限定循環次數內仍不能確定分界線,則程序搜索終止。此時,程序認定不再有新的視圖區。
如果l1、l2與圖形中圖元都有交點,則分別取l1和l2上所有交點中橫坐標值最大點A1和A2,其橫坐標值分別記為x1和x2,縱坐標值分別為y1和y2。再按以下步驟確定視圖分界線。
設定ε的值,取點M2的橫坐標值xM。如果

則取[y1,y2]和[y2,b]為新的搜索區間。如果

則取[a,y1]和[y1,b]為兩個新的搜索區間。如果

則取[y1,y2]為新的搜索區間。
確定新的搜索區間后,循環執行前述步驟即可得到視圖分界線。如果經過有限次循環,仍不能確定視圖分界線,且對于搜索區間[ymin,ymax]有

則程序自動終止。
利用已經讀取的圖形文件中所有圖元端點或頂點的坐標值,求出橫坐標值最大的點M1和最小的點M2。把M1的橫坐標值by作為區間上限,把M2的橫坐標值ay作為區間下限,由此可得搜索區間[ay,by]。
與縱軸方向上視圖的識別過程相類似,可把主視圖和左視圖識別出來,并可判斷是否存在右視圖和后視圖。
例1(標準三視圖的識別) 如圖1所示三視圖,L1為主視圖和俯視圖的分界線,L2為主視圖與左視圖的分界線。程序只需循環6次即可得到正確結果。

圖1 標準三視圖
例2(只含兩個視圖的工程圖) 如圖2所示的工程圖只有兩個基本視圖,細實線為分界線。雖然主視圖長度和左視圖長度差別較大,循環次數較多,但程序只需循環10次即可得到正確結果。

圖2 少視圖工程圖
例3(具有多個基本視圖的工程圖) 如圖3所示,圖中細實線為各基本視圖分界線。圖中含有多個基本視圖,程序循環次數較多,但仍能夠把基本視圖分開。

圖3 多視圖工程圖
利用黃金分割法適用于離散函數的特點,根據工程三視圖的自身特性,建立了適用于黃金分割法的數學模型。該算法不僅可以識別標準三視圖,而且可以識別非標準工程圖。與其他算法相比,該算法具有運行速度快、效率高、應用范圍廣的特點。特別是對匹配精度高,幾何和拓撲信息完整的三視圖尤其有效。該方法可廣泛應用于基于工程圖的自動重建和識別系統當中,對計算機視覺、工業自動化檢測、數控加工、逆向工程及其它計算機輔助設計與制造領域也有一定的參考作用。
在整個三維重建系統中,把視圖分割開只是工程圖三維重建中的關鍵一步,基本圖元的特征匹配和準確的零部件三維重建才是研究的難點和重點。
[1]傅自鋼.基于工程圖的三維形體重建方法研究[D].長沙:中南大學,2011:3-5.
[2]張東昌.基于工程三視圖的三維智能重建技術的研究[D].大連:大連理工大學,2008:1-3.
[3]史利民,郭復勝,高偉,等.基于語義交互的三維重建[J].計算機輔助設計與圖形學學 報,2011,23(5):839-848.
[4]董玉德,趙韓.CAD二次開發理論與技術[M].合肥:合肥工業大學出版社,2009:10-30.
[5]Yan Qingwen,Chen C L P,Tang Zesheng.Efficient algorithm for the reconstruction of 3Dobjects from orthographic projections[J].CAD,1994,26(9):699-717.
[6]張怡文,龔潔暉,張慧.由三視圖重建包含圓環面的形體[J].計算機輔助設計與圖形學學報,2008,20(2):186-192.
[7]陸國棟,段鵬,彭群生.基于基元組合關系的形體重建技術研究[J].工程圖學學報,2007,28(1):48-54.
[8]鄭鵬飛,林大鈞,劉小羊,等.基于三視圖的實體重建技術研究[J].工程圖學學報,2011.32(2):49-54.
[9]Furukawa Y,Curless B,Seitz S M,et al.Towardsint internet-scale multi-view stereo[C]//Proceedings of IEEE International Conference on Computer Vision and Pattern Recognition.USA San Francisco:IEEE,2010:1434-1441.
[10]孫靖民,梁迎春.機械優化設計[M].4版.北京:機械工業出版社,2006:9-52.