王 翔, 丁運(yùn)亮, 李 靜
(1. 南京航空航天大學(xué)航空宇航學(xué)院,江蘇 南京210016;2. 南京航空航天大學(xué)自動(dòng)化學(xué)院,江蘇 南京210016)
三維重建中的剖視圖處理
王 翔1, 丁運(yùn)亮1, 李 靜2
(1. 南京航空航天大學(xué)航空宇航學(xué)院,江蘇 南京210016;2. 南京航空航天大學(xué)自動(dòng)化學(xué)院,江蘇 南京210016)
剖視圖處理能夠有助于更好地理解視圖,提高三維重建的效率?;趯?duì)剖視圖自身特點(diǎn)的分析,提出了三維重建中對(duì)剖視圖的處理算法,即通過剖視圖信息的智能提取生成基元體,將基元體同由視圖輪廓生成的參照體進(jìn)行布爾運(yùn)算,從而得到最終的目標(biāo)體。算法能夠處理包括全剖視圖、半剖視圖以及平行剖視圖在內(nèi)的剖視圖,最后給出了應(yīng)用算例以驗(yàn)證算法的可行性。
工程圖學(xué);計(jì)算機(jī)輔助設(shè)計(jì);三維重建;剖視圖
在工程視圖中存在著大量的剖視圖,剖視圖的引入消除了視圖表達(dá)的歧義性,便利了視圖的理解,但卻增加了三維重建的難度,這是緣于剖視圖信息同一般投影視圖信息有著本質(zhì)上的差異,剖視圖在工程視圖理解中提供的是示意信息,它的理解依賴于局部的三維形狀,具有局部整體性,其表達(dá)的信息較為隱含,其約束也具有一定的模糊性。如何將剖視圖中隱含的投影信息正確地提取出來,并將其轉(zhuǎn)化為三維重建能夠理解的正交視圖是三維重建中剖視圖處理的核心環(huán)節(jié)。
三維重建工程中對(duì)于剖視圖的研究為數(shù)甚少,Markowsky和Wesley[1]在他們的線框算法中最早研究了剖視圖存在的情況,他們提出當(dāng)正交視圖中存在剖視圖時(shí),所生成的三維候選頂點(diǎn)需滿足位于剖切平面和投影方向所確定的半空間中這一條件,由于剖視圖會(huì)產(chǎn)生大量的多余候選點(diǎn),從而增加了錯(cuò)解發(fā)生的幾率。Geng[2]在重建算法中引入了人工智能的思想,模仿工程師的識(shí)圖方法,采用了分層重建的策略,將實(shí)體在不同的位置進(jìn)行截切,當(dāng)出現(xiàn)形狀同投影不一致的情況時(shí),便使用剖視圖代替該截面,在這里剖視圖只是作為三維重建的輔助手段,并未作為主要研究對(duì)象。Aldefeld[3]和 Bin[4]的算法也將剖視圖考慮在內(nèi),但是大量的人工介入使得程序的效率大打折扣。Dimri[5]采用 CSG重建的策略對(duì)剖視圖進(jìn)行了深入的研究,算法首先識(shí)別出剖視圖同投影視圖中不同的邊以及閉環(huán),通過投影匹配生成子實(shí)體,最終由布爾運(yùn)算生成目標(biāo)實(shí)體。能夠處理全剖、半剖的情況,但是僅限于投影視圖中存在單一剖視圖的情況,多幅剖視圖并存的情況則無法解決。
本文在深入分析剖視圖自身特點(diǎn)的基礎(chǔ)上,找出了剖視圖同一般投影視圖的不同之處,從這些差異點(diǎn)著手,提出了三維重建中針對(duì)剖視圖的處理方法。
當(dāng)用普通投影視圖無法完全表達(dá)實(shí)體的內(nèi)部結(jié)構(gòu)時(shí),往往采用剖視圖作為輔助表達(dá)手段。它是假想用一剖切面剖開實(shí)體,將處在觀察者和剖切面之間的部分移去,而將其余部分向投影面上投影,這樣得到的投影視圖即為剖視圖。按照剖切范圍的大小可以分為全剖、半剖以及局部剖視圖,按照剖切平面和剖切方法可分為平行剖、移出剖、以及旋轉(zhuǎn)剖等。分別圖示如下。
用剖切面完全貫穿實(shí)體所得的剖視圖稱為全剖視圖。全剖視圖用于外形簡單,內(nèi)部結(jié)構(gòu)較復(fù)雜且不對(duì)稱的實(shí)體。如圖1所示即為全剖視圖。
圖1 全剖視圖
當(dāng)實(shí)體具有對(duì)稱平面時(shí),向垂直于對(duì)稱平面的投影面上投射所得的圖形,可以對(duì)稱中心線為界,一半畫成剖視圖,另一半畫成普通投影視圖。這樣的表達(dá)方法獲得的剖視圖稱為半剖視圖。如圖2所示即為半剖視圖。
圖2 半剖視圖
用剖切面局部地剖開實(shí)體,一部分畫成普通投影視圖以表達(dá)外形,其余部分畫成剖視圖以表達(dá)內(nèi)部結(jié)構(gòu),這樣所得的圖形稱為局部剖視圖。例如,有盲孔存在時(shí)多采用局部剖視圖,如圖3所示。
圖3 局部剖視圖
當(dāng)需要表達(dá)實(shí)體中分布在幾個(gè)相互平行的平面上的內(nèi)部結(jié)構(gòu)時(shí),可采用幾個(gè)平行的剖切面剖開實(shí)體的表達(dá)方法,即平行剖視圖,如圖4所示。
圖4 平行剖視圖
將實(shí)體從某些特殊位置剖切開,并將剖視圖移出主視圖,該類剖視圖被稱為移出剖視圖,軸類零件常用此類剖視圖表示,如圖5所示。
圖5 移出剖視圖
將實(shí)體在某一位置剖切開,將剖面圖旋轉(zhuǎn)90°,此類剖視圖即為旋轉(zhuǎn)剖視圖,如圖6所示。
圖6 旋轉(zhuǎn)剖視圖
以下是算法中用到的一些概念定義和名詞術(shù)語,大部分來自Soni & Gurumoorthy[6]。
由一系列閉合的邊圍成的區(qū)域。如圖7View1中的面環(huán){5, 6, 9, 10, 5}。
圖7 匹配點(diǎn)與匹配環(huán)
如果兩條邊在某處相交,并保持一階連續(xù),該點(diǎn)即為切點(diǎn),切點(diǎn)有直線與直線的切點(diǎn)、直線與曲線的切點(diǎn)以及曲線與曲線的切點(diǎn)之分,后兩者在切點(diǎn)處曲率保持一致,直線與直線的切點(diǎn)實(shí)質(zhì)上是邊的內(nèi)部點(diǎn),如圖 7View1中的點(diǎn) 5,就是直線段6-7與5-6的切點(diǎn)。
垂直于某一投影面的邊會(huì)在該投影面內(nèi)積聚為一點(diǎn),該點(diǎn)即為輪廓點(diǎn),如圖7View1中的點(diǎn)1,2。
在面環(huán)內(nèi)具有極限位置的點(diǎn),如圖 7View1中的點(diǎn) 7,4分別是面環(huán){4,5,6,7,8,3,4}的左右極限點(diǎn)。
兩個(gè)面環(huán)L1和L2,如果面環(huán) L1的所有邊均在面環(huán)L2內(nèi),則稱L1為L2的內(nèi)環(huán),L2為L1的外環(huán),如果L1中有的邊在L2內(nèi)部,有的邊在L2上,則稱 L1為 L2的內(nèi)交環(huán),如果 L1中有的邊在 L2內(nèi)部(或邊界),有的在 L2外部,稱 L1為 L2的外交環(huán)。如圖7View1中的環(huán){1, 2, 1}是環(huán){4, 5, 6,7, 8, 3, 4}的內(nèi)環(huán),環(huán){5, 6, 9, 10, 5}是環(huán){4, 5, 6, 7,8, 3, 4}的內(nèi)交環(huán),View2中的環(huán){4, 5, 6, 12, 11, 3}是環(huán){1, 10, 9, 8, 7, 6, 12, 11, 3, 2, 1}的外交環(huán)。
組成面環(huán)的邊均為實(shí)線稱為實(shí)環(huán),反之若環(huán)面的所有邊均由虛線組成則稱該面環(huán)為虛環(huán)。實(shí)環(huán)對(duì)應(yīng)的是實(shí)體部分,虛環(huán)對(duì)應(yīng)的則是孔、洞等虛體。
兩投影視圖中沿某一公共坐標(biāo)軸具有相同坐標(biāo)的點(diǎn)稱為匹配點(diǎn),一個(gè)點(diǎn)可以有多個(gè)匹配點(diǎn)。如圖7View1中的點(diǎn)3在View2中的匹配點(diǎn)為點(diǎn)1和點(diǎn)2。
所有匹配的面環(huán)沿垂直于投影面的方向平掃,得到的平掃體求交后生成的實(shí)體即為基元體?;w之間作交、并、差等布爾運(yùn)算便可得到最終重建實(shí)體。
工程視圖采用.DXF格式輸入,由于大多數(shù)情況下,多個(gè)投影視圖位于同一幅圖中,即同一圖層內(nèi),這樣很難從中得到圖元所屬視圖的信息,因此必需將圖元所屬的投影視圖劃分開來,即視圖的分割。視圖的分割是基于如下性質(zhì)進(jìn)行的:每一個(gè)獨(dú)立視圖都應(yīng)是連續(xù)、封閉的圖元組合,任何穿過視圖的直線必然與該視圖中的圖元相交或重合。對(duì)分割后的視圖進(jìn)行坐標(biāo)系轉(zhuǎn)換,將設(shè)備坐標(biāo)系轉(zhuǎn)換成投影坐標(biāo)系。進(jìn)行坐標(biāo)系轉(zhuǎn)換后的投影視圖,還需進(jìn)行圖素的拼接和打斷處理[2]。經(jīng)過上述預(yù)處理工作后,得到了一系列數(shù)據(jù)關(guān)系結(jié)構(gòu),其中包括圖元和所屬視圖關(guān)系鏈表,點(diǎn)邊關(guān)系鏈表等。以上得到的全部作為三維重建的輸入。
將投影視圖的輪廓進(jìn)行平掃求交生成當(dāng)前參照體,對(duì)提取出來的所有邊使用極左鄰邊搜索法[7]生成一系列的面環(huán),由面環(huán)平掃求交得到一系列基元體,依次將基元體同當(dāng)前參照體進(jìn)行實(shí)體布爾運(yùn)算,即不斷刷新當(dāng)前參照體,當(dāng)參照體視圖投影同初始視圖完全匹配時(shí),算法結(jié)束。算法流程如圖8所示。
圖8 算法流程圖
算法的核心環(huán)節(jié)在于如何對(duì)投影視圖中的剖視圖進(jìn)行恰當(dāng)?shù)奶幚怼S捎谄室晥D不同于普通的投影視圖,因而需對(duì)其作特殊處理。
(1) 剖視圖是完全獨(dú)立的視圖,對(duì)其它視圖沒有任何影響,但有時(shí)可以利用剖視圖提供的視圖信息擦除其它視圖中不必要的圖元,以達(dá)到簡化視圖的效果。如圖9中所示的主視圖采用剖視圖表示,左視圖中的兩條虛線在擦除后仍不影響視圖的完整表達(dá),類似情況可作擦除處理。
圖9 剖視圖處理示例
(2) 被剖切平面遮擋的部分,虛線一般省略,但是一些特殊情況下需要畫出,如圖 10所示的剖視圖中的虛線,如果不畫則不能確定孔和楔塊是否存在。
圖10 剖視圖中含有虛線的情況
(3) 在半剖視圖中的非剖切部分的虛線可作擦除處理。
上述3種情況中之所以可以對(duì)視圖中的虛線作擦除處理,是因?yàn)樵谏苫w的過程中,往往不需要3個(gè)投影均完備,有時(shí)只需一個(gè)反映基元體特征的特征投影和一個(gè)輔助投影即可。經(jīng)擦除處理后,可以生成較少的面環(huán),從而避免多余基元體的生成。
(4) 同上面的面環(huán)過多情況不同的是,有時(shí)現(xiàn)有的面環(huán)不能滿足生成基元體的條件,在這種情況下則需要補(bǔ)充額外的面環(huán),例如圖 11中所示的情況,正視圖中的面環(huán){1,2,3,4,1}在左視圖中找不到與之相匹配的面環(huán),但是如果把左視圖中的 3個(gè)面環(huán){5,6,7,8,5}、{7,8,9,10,7}以及{9,10,11,12}合并成為一個(gè)面環(huán){5,6,11,12,5},那么該面環(huán)便可以和正視圖中的{1,2,3,4,1}以及俯視圖中的{13,14,15,16,13}組成匹配的面環(huán)。
圖11 面環(huán)的合并
(5) 如果視圖中存在僅通過虛線同其它面環(huán)相連接的面環(huán),那么將該面環(huán)視為孤立的面環(huán)。如圖 12中所示的箭頭所示的面環(huán)僅同兩條虛線相連,很顯然該面環(huán)同兩條虛線所代表的實(shí)體部分具有著不同的深度信息,即兩者不可能從屬于同一基元體,故可將該部分孤立開來,單獨(dú)處理。
圖12 孤立的面環(huán)
(6) 視圖中孤立的環(huán)面大多為孔洞或拉伸結(jié)構(gòu)體,對(duì)于這類結(jié)構(gòu),在生成基元體時(shí)不需要3個(gè)視圖投影,而只需要兩個(gè)即可,這種情況下將第3個(gè)視圖中匹配的面環(huán)刪除來減少運(yùn)算量。
(7) 如果對(duì)于一個(gè)孤立的面環(huán),在剖視圖中無法找到與之相匹配的面環(huán),在這種情況下,只需找到與之相匹配的邊即可,將孤立面環(huán)沿這些邊平掃便可得到基元體。如圖4中箭頭所指的孤立面環(huán)在剖視圖中無法找到與之匹配的面環(huán),那么轉(zhuǎn)而搜索面環(huán)中的極限點(diǎn),在這里是點(diǎn)5,6。恰巧這兩點(diǎn)又都是輪廓點(diǎn),分別對(duì)應(yīng)于剖視圖中的邊1-2和3-4,并且邊1-2和3-4長度相同,于是將面環(huán){5,6,5}沿1-2方向平掃即可得到基元體。
(8) 生成的基元體可以分為實(shí)體和虛體兩大類,分別對(duì)應(yīng)的實(shí)體生成操作為鏜孔和拉伸,為確定操作的類型,算法將基元體反投影回各個(gè)視圖,通過對(duì)比投影同初始視圖的輪廓的位置關(guān)系來確定實(shí)體還是虛體。由基元體投影得到的面環(huán)稱為目標(biāo)環(huán),選取目標(biāo)環(huán)中連接度大于2的點(diǎn)作為初始點(diǎn)開始回溯,如圖 13所示,主視圖中面環(huán){1,2,3,4,1}為目標(biāo)環(huán),環(huán){1,2,3,4,5,6,7,8,1}為由投影輪廓生成的外環(huán),點(diǎn)1為初始點(diǎn),同它相連的三條邊分別為‘a(chǎn)’,‘b’,‘c’,具體算法如下:
圖13 目標(biāo)環(huán)與外環(huán)
當(dāng)基元體被判斷為虛體時(shí),需要將外環(huán)同目標(biāo)環(huán)進(jìn)行合并操作,合并意味著外環(huán)和目標(biāo)環(huán)中的邊之間需要進(jìn)行交或并運(yùn)算。令Le表示外環(huán),Lt表示目標(biāo)環(huán),Lm表示合并后的面環(huán)。則合并運(yùn)算需滿足下面的公式[8]
例如,圖7 View1中的環(huán){3, 4, 5, 6, 7, 8, 3}同{5, 6, 9, 10, 5}合并后得到{3, 4, 5, 10, 9, 6, 7, 8,3}。合并后得到的新環(huán)將用來更新原有的外環(huán),故由此可得到相應(yīng)的算法,具體如下:外環(huán)()
算例程序采用VC++6.0編寫,OpenGL環(huán)境下運(yùn)行。圖14中所示的實(shí)體三視圖如圖11所示,其中圖 14(a)為提取三視圖輪廓,經(jīng)平掃求交生成的初始當(dāng)前參照體,將圖 14(b)中的實(shí)體與圖14(a)中的實(shí)體進(jìn)行布爾運(yùn)算,最后得到圖 14(c)中的目標(biāo)實(shí)體,其三視圖同圖 11完全匹配,即為重建實(shí)體。
圖14 含全剖視圖的三維重建算例
圖 15(a)中的實(shí)體是以圖 4為三視圖的含階梯剖視圖的重建實(shí)體,圖15(b)則是以圖12為三視圖的重建實(shí)體,算法同圖14中的算例。
本文在對(duì)剖視圖內(nèi)在機(jī)理進(jìn)行深入分析以及同普通投影視圖對(duì)比的基礎(chǔ)上,提出了剖視圖的處理算法,并結(jié)合三維重建的工程實(shí)際進(jìn)行了算例驗(yàn)證,如算例所示,算法能處理包括全剖、半剖,以及階梯剖在內(nèi)的剖視圖。對(duì)于局部剖視、重合剖視等更為復(fù)雜的剖視圖有待進(jìn)行更深入的研究。
[1]Wesley M A, Markowsky G. Fleshing out projections [J].IBM Journal of Research & Development, 1981, 25(6):934-954.
[2]Geng W D, Wang J B, Zhang Y Y. Embedding visual cognition in 3D reconstruction from multi-view engineering drawings [J]. Computer-Aided Design,2002, 34(4):321-336.
[3]Aldefeld B. On automatic recognition of 3D structures from 2D representations [J]. Computer-Aided Design,1983, 15(2):59-64.
[4] Bin H. Inputting constructive solid geometry representations directly from 2D orthographic engineering drawings [J]. Computer-Aided Design,1986, 18(3):147-155.
[5] DIMRI J, GURUMOORTHY B. Handling sectional views in volume-based approach to automatically construct 3D solid from 2D viewsn [J].Computer-Aided Design, 2005, 37(5):485-495.
[6]Soni S, Gurumoorthy B. Handling solids of revolution in volume-based construction of solid models from orthographic views [J]. Journal of Computing and Information Science in Engineering, 2003, (3):250-259.
[7]GONG J H, ZHANG H, ZHANG G F, et al. Solid reconstruction using recognition of quadric surfaces from orthographic views [J]. Computer-Aided Design,2006, 38(8):821-835.
[8]CHEN D X. Technical drafting and CAD elements [M].Mechanical Industry Press, Beijing:2004. 13-19.
Cutaway View Processing in 3D Solid Reconstruction
WANG Xiang1, DING Yun-liang1, LI Jing2
( 1. College of Aerospace Engineering, Nanjing University of Aeronautics and Astronautics, Nanjing Jiangsu 210016, China 2. Automation College, Nanjing University of Aeronautics and Astronautics, Nanjing Jiangsu 210016, China )
Through providing extra information, cutaway view aids engineering view understanding and accelerates the 3D reconstruction process. This paper proposes a processing algorithm in 3D reconstruction based on the analysis of cutaway view features:to use the cutaway view information to intelligently fetch the basic entity, then to conduct Boolean operation on the basic entity and the reference object generated from view silhouette, and in this way to get the target object. The algorithm can process full cutaway views, half cutaway views and parallel cutaway views. Examples are provided to identify its feasibility in the paper.
engineering graphics; computer aided design; 3D reconstruction; cutaway view
TP 391
A
1003-0158(2010)06-0068-07
2009-02-27
國家自然科學(xué)基金資助項(xiàng)目(10377007)
王 翔(1981-),男,山東濟(jì)南人,博士研究生,主要研究方向?yàn)橛?jì)算機(jī)圖形學(xué)、三維重建。