欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

三維模型分割裝置和方法

文檔序號(hào):6480728閱讀:452來(lái)源:國(guó)知局

專利名稱::三維模型分割裝置和方法
技術(shù)領(lǐng)域
:本發(fā)明涉及三維模型分割的裝置和方法,更具體地說(shuō),本發(fā)明涉及應(yīng)用三維幾何信息實(shí)現(xiàn)模型分割的裝置和方法。
背景技術(shù)
:隨著科學(xué)技術(shù)的進(jìn)步,在計(jì)算機(jī)圖形學(xué)、虛擬現(xiàn)實(shí)技術(shù)、計(jì)算機(jī)輔助設(shè)計(jì)技術(shù)、醫(yī)學(xué)圖像、地理信息系統(tǒng)等領(lǐng)域設(shè)計(jì)和使用的三維模型越來(lái)越精細(xì)、越來(lái)越復(fù)雜。這些復(fù)雜模型的面片動(dòng)輒數(shù)以萬(wàn)計(jì)、甚至達(dá)到百萬(wàn)量級(jí),對(duì)計(jì)算機(jī)存儲(chǔ)容量、處理速度、渲染效率、傳輸效率等提出了極高要求,同時(shí)也增加了目標(biāo)檢測(cè)、局部匹配等技術(shù)的難度。如果能將這些復(fù)雜模型分割成一系列相對(duì)簡(jiǎn)單、數(shù)據(jù)量小的模型,通過(guò)獨(dú)立存儲(chǔ)和處理這些簡(jiǎn)單模型,則可極大地提高存儲(chǔ)、處理、渲染等工作效率,并將有利于目標(biāo)檢測(cè)、局部匹配、三維檢索等工作,使得模型管理和重用成為可能。三維模型分割是一種將輸入的三維模型分割為若干部分的技術(shù),在目標(biāo)檢測(cè)、局部匹配、三維檢索等領(lǐng)域具有極高的應(yīng)用價(jià)值。三維模型分割技術(shù)大致可以分為兩類純幾何層次的分割,將輸入模型分割為一系列具有相近屬性的面片;以及語(yǔ)義層次上的分割,將輸入模型分割為一系列具有一定形狀的部分。第一種技術(shù)可以作為預(yù)處理手段,以提取有意義的特征;第二種技術(shù)得到廣泛關(guān)注,可用于目標(biāo)檢測(cè)等領(lǐng)域。作為現(xiàn)有的一種方法,[專利文檔-1]中介紹的方法屬于第一類方法,基于曲率估計(jì)和區(qū)域增長(zhǎng)技術(shù),將輸入模型分割為一系列區(qū)域,每個(gè)區(qū)域以一個(gè)參數(shù)化曲面來(lái)逼近。在該方法中,首先計(jì)算各個(gè)頂點(diǎn)的曲率,將頂點(diǎn)分為尖銳頂點(diǎn)和非尖銳頂點(diǎn);然后根據(jù)非尖銳頂點(diǎn)的曲率得到一系列種子區(qū)域,每一個(gè)種子區(qū)域表示一個(gè)參數(shù)化區(qū)域;接下來(lái)對(duì)每一個(gè)種子區(qū)域進(jìn)行參數(shù)擬合;然后,改善區(qū)域之間的邊緣,同時(shí)更新各個(gè)區(qū)域的參數(shù);最后輸出參數(shù)化區(qū)域。這種方法可以檢測(cè)出諸如平面、圓柱體、球、錐面等簡(jiǎn)單曲面,還可以檢測(cè)到圓角曲面等較高層次曲面。在[非專利文檔-1]的方法中,首先計(jì)算頂點(diǎn)的曲率,然后根據(jù)曲率的符號(hào)生成種子區(qū)域,接下來(lái)采取區(qū)域生長(zhǎng)算法逐漸更新區(qū)域的參數(shù),最后輸出自由參數(shù)化曲面。這兩種方法輸出一系列檢測(cè)到的曲面,可以作為預(yù)處理手段提取特征,進(jìn)而實(shí)現(xiàn)匹配。然而這兩種方法,容易受噪聲干擾,且計(jì)算量較大。[非專利文檔_2]中的方法,將分水嶺方法應(yīng)用于三維分割。在這種方法中,首先計(jì)算每個(gè)頂點(diǎn)的信息,例如曲率;然后,查找局部極小點(diǎn)作為源點(diǎn);接下來(lái),采用最速下降法對(duì)極小點(diǎn)附近的頂點(diǎn)進(jìn)行聚類,銳邊位于兩類頂點(diǎn)之間。這種方法對(duì)噪聲的干擾很敏感。[非專利文檔_3]中的方法,將輸入模型由粗到精逐步分割為若干部分。在這種方法中,首先,根據(jù)測(cè)地距離和角度距離計(jì)算三角形面片之間的距離;然后,初始化分割區(qū)域,并計(jì)算每個(gè)三角形面片屬于各個(gè)區(qū)域的概率;接下來(lái),以迭代方式逐步更新區(qū)域以及每個(gè)三角形屬于各個(gè)區(qū)域的概率;最后,采用最小割集方法得到準(zhǔn)確的邊界。與[非專利文檔-3]中的方法相似,[非專利文檔_4]由粗到精逐漸將輸入模型分割為若干部分,這種方法引入了MDS變換,使得分割結(jié)果具有空間位置不變性,提出了一種魯棒的特征點(diǎn)提取方法,從而將三維模型分割為若干部分,并且引入了割集方法進(jìn)一步改善各個(gè)部分的邊緣。[非專利文檔-3]和[非專利文檔_4]的兩種方法,理論上可以得到不錯(cuò)的分割結(jié)果,然而計(jì)算量比較大。[非專利文檔-5]中的方法,首先計(jì)算構(gòu)成三維模型的各個(gè)面片之間的相似度矩陣,面片之間的相似度結(jié)合了面片之間的測(cè)地距離和角度距離;接下來(lái),采取譜聚類的方法實(shí)現(xiàn)三維模型分割。這種方法需要預(yù)先設(shè)置分區(qū)的數(shù)目,而且對(duì)于具有平滑邊緣的模型可能得不到自然的分割結(jié)果。[非專利文檔-6]中的方法,首先計(jì)算各個(gè)頂點(diǎn)的曲率,并根據(jù)曲率判定銳化邊緣和頂點(diǎn);然后將頂點(diǎn)聚類,進(jìn)而根據(jù)頂點(diǎn)的聚類結(jié)果對(duì)三角形面片進(jìn)行分區(qū);接下來(lái)采用區(qū)域生長(zhǎng)方法合并相似的區(qū)域;最后改善分區(qū)之間的邊緣。這種方法理論上可以得到不錯(cuò)的分割結(jié)果,然而計(jì)算量比較大。綜合來(lái)看,現(xiàn)有的三維模型分割的主要問(wèn)題包括(1)提取參數(shù)化曲面的方法,如[專利文檔-1]和][非專利文檔-2]中方法輸出參數(shù)化曲面,應(yīng)用范圍比較窄,僅適合作為預(yù)處理手段;(2)對(duì)噪聲比較敏感,[非專利文檔_2]中的方法,頂點(diǎn)的曲率容易受噪聲干擾,從而導(dǎo)致分割結(jié)果準(zhǔn)確度不高;(3)效率不高,[非專利文檔_3]、[非專利文檔-4]、[非專利文檔-5]、以及[非專利文檔_6]這些方法理論上可以得到不錯(cuò)的分割結(jié)果,但是計(jì)算量比較大;(4)這些方法得到的分割結(jié)果通常是由面片或者面片組合的區(qū)域,而不是獨(dú)立的三維實(shí)體。[專利文檔-l]usPatent,NO.US2007/0188490A1[非專利文檔-1]Vieira,M.,Shimada,K.,Surfacemeshsegmentationandsmoothsurfaceextractionthroughregiongrowing.ComputerAidedGeometricDesign,Vol.22,No.8.(2005),771-792.[非專利文檔-2]Mangam,A.P.,Whitaker,R.Τ.,Partitioning3Dsurfacemeshesusingwatershedsegmentation,IEEETransactiononVisualizationandcomputergraphics,Vol.5,NO.4(1999),308-321.[非專利文檔_3]S.Katz,A.Tal,Hierarchicalmeshdecompositionusingfuzzyclusteringandcuts,SIGGRAPH,22(3):954_961,2003.[禾Ut豐當(dāng)-4]S.Katz,G.leifman,A.Tal,Meshsegmentationusingfeaturepointandcoreextraction,TheVisualComputer,21(8-10):865_875,2005.[非專利文檔-5]R.Liu,H.Huang,Segmentationof3dmeshesthroughspectralclustering,PacificconferenceonComputergraphicsandapplications,298-305,2004.[非專利文檔-6]G.Lavoue,F(xiàn).Dupont,A.Baskurt,AnewCADmeshsegmentationmethodbasedoncurvaturetensoranalysis,Computeraideddesign,Vol.37,975-987,2005.[禾Ijt豐當(dāng)-7]Ζ.Q.Wang,L.J.Xiao,J.Z.Hong,Simplicity,orientationandinclusiontestalgorithmsforpolygons,ChineseJ.Computers,Vol.21,No.2,183-187,1998.[非專禾Ij文檔-8]R.Seidel,Asimpleandfastincrementalrandomizedalgorithmforcomputingtrapezoiddecompositionsandfortriangulatingpolygons,ComputationalGeometryTheoryandApplications,Vol.1,No.1,51-64,1991.[非專利文檔-9]H.Hoppe,Surfacereconstructionfromunorganizedpoints,PhDThesis,Dept.ofComputerScienceandEngineering,UniversityofWashington,June1994.[非專利文檔-10]Jc^ph0,Rourke,ComputationalGeometryInC(SecondEdition),CambridgeUniversityPress,1998.
發(fā)明內(nèi)容本發(fā)明鑒于現(xiàn)有技術(shù)的上述問(wèn)題而作出,用以克服現(xiàn)有技術(shù)的一個(gè)或更多個(gè)問(wèn)題,至少提供一種有益的選擇。為了實(shí)現(xiàn)本發(fā)明的目的,本申請(qǐng)?zhí)峁┝艘韵路矫?。方?、一種三維模型分割方法,所述方法包括以下步驟平面檢測(cè)步驟,檢測(cè)輸入的三維模型中包括的平面,所述輸入的三維模型以三角形網(wǎng)格描述;輪廓圖提取步驟,根據(jù)所述平面檢測(cè)步驟中檢測(cè)出的平面,提取所述三維模型的輪廓,即輪廓圖;以及輪廓圖分離步驟,將所述輪廓圖提取步驟提取出的輪廓圖分離成若干個(gè)子圖;三維實(shí)體重建步驟,為所述輪廓圖分離步驟分離出的各個(gè)子圖重建三維實(shí)體模型,重建出的各三維實(shí)體采用三角形網(wǎng)格表達(dá)。方面2、根據(jù)方面1所述的三維模型分割方法,其中,所述三維模型分割方法還包括洞判別步驟,所述洞判別步驟判斷所述三維實(shí)體重建步驟所重建出的三維實(shí)體模型或判斷各所述子圖所對(duì)應(yīng)的三維實(shí)體是否是洞;洞模型矯正步驟,如果所述洞判別步驟判斷出所述三維實(shí)體重建步驟所重建出的某一三維實(shí)體模型是洞,則改變?cè)撝亟ǔ龅娜S實(shí)體模型的所有三角形的法線方向,或在判斷出某一子圖所對(duì)應(yīng)的三維實(shí)體是洞時(shí),改變子圖對(duì)應(yīng)三維實(shí)體的所有三角形的法線方向。方面3、根據(jù)方面1所述的三維模型分割方法,其中,所述三維模型分割方法還包括切面判斷步驟,判斷所述三維實(shí)體重建步驟所重建出的三維實(shí)體模型中是否包括切面,或判斷各所述子圖所對(duì)應(yīng)的實(shí)體中是否包括切面;再分割步驟,如果所述切面判斷步驟判斷出所述三維實(shí)體重建步驟所重建出的某一三維實(shí)體模型中包括切面,則利用該切面將該包括切面的三維實(shí)體模型分割成兩個(gè)或更多個(gè)子圖,如果所述切面判斷步驟判斷出某一子圖中包括切面,則利用該切面將該包含切面的子圖分割成兩個(gè)或更多個(gè)子圖。方面4、根據(jù)方面3所述的三維模型分割方法,其中,所述三維模型分割方法還包括合理性檢測(cè)步驟,檢測(cè)所述再分割步驟所分割出的子圖是否合理,如果不合理,則放棄該切面。方面5、根據(jù)方面4所述的三維模型分割方法,其中,在所述再分割步驟所分割出的子圖滿足以下所有條件時(shí),判斷該子圖合理(1)頂點(diǎn)的數(shù)目不小于4,平面的個(gè)數(shù)不小于4;(2)每個(gè)平面至少包含三個(gè)不共線的頂點(diǎn);(3)每條輪廓線至少屬于兩個(gè)不同的平面;(4)每一個(gè)平面上的頂點(diǎn)必須首尾相連,組成一個(gè)封閉區(qū)域。方面6、根據(jù)方面1所述的三維模型分割方法,其中,所述平面檢測(cè)步驟包括計(jì)算所述輸入的三維模型中的各個(gè)三角形面的法線方向;根據(jù)所述各個(gè)三角形面的法線方向,將相互連接并且方向一致或相反的三角形面聚集成子平面;以及將子平面合并成平面。方面7、根據(jù)方面6所述的三維模型分割方法,其中將滿足以下條件的兩個(gè)子平面合并成平面所述兩個(gè)子平面的法線方向相同或相反;并且所述兩個(gè)子平面之間存在公共的三角形、或存在公共邊、或存在連接分別屬于這兩個(gè)子平面的頂點(diǎn)并且垂直與所述兩個(gè)子平面的法線方向的直線。方面8、根據(jù)方面1所述的三維模型分割方法,其中所述輪廓圖提取步驟包括以下步驟獲取各平面上所有邊的集合;將各邊分為內(nèi)部邊或邊界邊;以及刪除所有的內(nèi)部邊,保留邊界邊。方面9、根據(jù)方面3所述的三維模型分割方法,其中,所述切面判斷步驟將這樣的平面判斷為切面在所述輪廓圖中,該平面上的頂點(diǎn)以外的頂點(diǎn),分別在該平面的兩側(cè)。方面11、根據(jù)方面3所述的三維模型分割方法,其中所述再分割步驟包括以下步驟切面頂點(diǎn)劃分步驟,將切面上的頂點(diǎn)分入第一朝向頂點(diǎn)集合和第二朝向頂點(diǎn)集合,所述第一朝向頂點(diǎn)集合中的頂點(diǎn)為與切面之外的頂點(diǎn)的連線在第一方向上的頂點(diǎn),所述第二朝向頂點(diǎn)集合中的頂點(diǎn)為與切面之外的頂點(diǎn)的連線在第二方向上的頂點(diǎn);切面外頂點(diǎn)劃分步驟,將切面之外的頂點(diǎn)分入第一朝向側(cè)頂點(diǎn)集合和第二朝向側(cè)頂點(diǎn)集合,所述第一朝向側(cè)頂點(diǎn)集合中的頂點(diǎn)為直接或間接與第一朝向頂點(diǎn)集合中的頂點(diǎn)相連的頂點(diǎn),所述第二朝向側(cè)頂點(diǎn)集合中的頂點(diǎn)為直接或間接與第一朝向頂點(diǎn)集合中的頂點(diǎn)相連的頂點(diǎn);切面頂點(diǎn)增加步驟,根據(jù)所述第一朝向側(cè)頂點(diǎn)集合中的不與第一朝向頂點(diǎn)集合中的頂點(diǎn)直接相連的頂點(diǎn)和所述第二朝向側(cè)頂點(diǎn)集合中的不與第二朝向頂點(diǎn)集合中的頂點(diǎn)直接相連的頂點(diǎn)之間的連接關(guān)系,通過(guò)在所述切面上增加頂點(diǎn),使所述第一朝向側(cè)頂點(diǎn)集合和第二朝向側(cè)頂點(diǎn)集合之間不存在跨切面的連接;以及子圖分割步驟,根據(jù)所述第一朝向頂點(diǎn)集合和第二朝向頂點(diǎn)集合以及所述第一朝向側(cè)頂點(diǎn)集合和第二朝向側(cè)頂點(diǎn)集合將所述含有切面的三維實(shí)體模型或含有切面的子圖分成兩個(gè)子圖或更多個(gè)子圖。方面11、根據(jù)方面10所述的三維模型分割方法,其中所述切面頂點(diǎn)增加步驟判斷所述第一朝向側(cè)頂點(diǎn)集合中的不與第一朝向頂點(diǎn)集合中的頂點(diǎn)直接相連的頂點(diǎn)和所述第二朝向側(cè)頂點(diǎn)集合中的不與第二朝向頂點(diǎn)集合中的頂點(diǎn)直接相連的頂點(diǎn)之間的直接連接是否與所述切面相交,如果相交,則在切面上新增加頂點(diǎn),并利用新增加的所述頂點(diǎn),使所述第一朝向側(cè)頂點(diǎn)集合中的不與第一朝向頂點(diǎn)集合中的頂點(diǎn)直接相連的頂點(diǎn)和所述第二朝向側(cè)頂點(diǎn)集合中的不與第二朝向頂點(diǎn)集合中的頂點(diǎn)直接相連的頂點(diǎn)之間不再存在直接連接關(guān)系,并將新增加的所述頂點(diǎn)分別并入所述第一朝向頂點(diǎn)集合和第二朝向頂點(diǎn)集合。方面12、一種三維模型分割裝置,所述裝置包括平面檢測(cè)單元,檢測(cè)輸入的三維模型中包括的平面,所述輸入的三維模型以三角形網(wǎng)格描述;輪廓圖提取單元,根據(jù)所述平面檢測(cè)單元中檢測(cè)出的平面,提取所述三維模型的輪廓,即輪廓圖;以及輪廓圖分離單元,將所述輪廓圖提取單元提取出的輪廓圖分割成若干個(gè)子圖;三維實(shí)體重建步驟,為所述輪廓圖分離單元分割出的各個(gè)子圖重建三維實(shí)體,重建出的各三維實(shí)體采用三角形網(wǎng)格表達(dá)。根據(jù)本發(fā)明的另一方面,還提供了一種計(jì)算機(jī)程序,在被計(jì)算機(jī)或其它邏輯部件執(zhí)行或解釋或編譯后執(zhí)行時(shí),使所述計(jì)算機(jī)實(shí)現(xiàn)上述方法或上述方法中的某些步驟。根據(jù)本發(fā)明的再一方面,還提供了一種計(jì)算機(jī)可讀介質(zhì),其存儲(chǔ)有上述計(jì)算機(jī)程序。圖IA是示意性地示出了本發(fā)明實(shí)施方式的模型分割方法的流程圖;圖IB是示意性地示出了本發(fā)明實(shí)施方式的模型分割裝置的結(jié)構(gòu)方框圖;圖2是示意性地示出了依據(jù)本發(fā)明的實(shí)施方式的圖IA中的平面檢測(cè)步驟SlOl的流程圖;圖3是示意性地示出了依據(jù)本發(fā)明一種實(shí)施方式的計(jì)算三角形平面的法線方向和面積的示意圖;圖4是是示意性地示出了三維模型中三角形平面鄰接關(guān)系的示意圖;圖5是示意示出了依據(jù)本發(fā)明的實(shí)施方式的子平面可合并的條件的示意圖;圖6是示意示出了依據(jù)本發(fā)明的實(shí)施方式的子平面可合并的另一條件的示意圖;圖7是示意性地示出了根據(jù)本發(fā)明的實(shí)施方式的平面內(nèi)部邊和邊界邊的示意圖;圖8是是示意性地示出了依據(jù)本發(fā)明實(shí)施方式的三維模型輪廓圖的示意圖;圖9是是示意性地示出了依據(jù)本發(fā)明實(shí)施方式的輪廓分割方法的流程圖;圖10是將一個(gè)示例輪廓圖分割為若干分離的子圖的示意圖;圖11是例示切面判定條件的示意圖;圖12是示意性地示出了輪廓圖再分割單元所進(jìn)行的處理的流程圖;圖13是示意性地示出了輪廓圖再分割單元中的分割單元的操作流程圖14是示意性地示出了對(duì)剩余頂點(diǎn)進(jìn)行分類的處理的流程圖;圖15是更詳細(xì)地示出了圖14中的步驟S1405的處理的流程圖;圖16是根據(jù)頂點(diǎn)分類結(jié)果建立子圖的示意流程圖;圖17是是示意性地示出了依據(jù)本發(fā)明實(shí)施方式的對(duì)平面進(jìn)行三角化的流程圖;圖18為輸入的示例三維模型;圖19顯示了從輸入模型中檢測(cè)到的平面結(jié)構(gòu)示意圖;圖20提取三維模型輪廓圖的示意圖;圖21將輪廓圖分割為若干子圖的結(jié)果示意圖;圖22從圖21中的四個(gè)子圖重建出三維模型的結(jié)果示意圖;圖23是示意性地示出了切面上的頂點(diǎn)以及與切面直接相連的頂點(diǎn)分類的結(jié)果示意圖;圖24是示意性地示出了頂點(diǎn)分類及其新增加頂點(diǎn)的示意圖;以及圖25是示意性地示出了圖24中模型的分割結(jié)果示意圖。具體實(shí)施例方式下面參照附圖,對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行說(shuō)明。圖IA給出了本發(fā)明實(shí)施方式的模型分割方法的流程圖,圖IB給出了本發(fā)明實(shí)施方式的模型分割裝置的示意性結(jié)構(gòu)方框圖。如圖IA所示,本發(fā)明的模型分割方法包括平面檢測(cè)步驟S101,其根據(jù)輸入模型的數(shù)據(jù),檢測(cè)出包含該模型三角形的所有平面信息;輪廓提取步驟S102,其根據(jù)三角形的平面信息,例如通過(guò)刪除由多邊形組成的有界平面內(nèi)部的連線,而得到每個(gè)平面的輪廓線,進(jìn)而得到輸入模型對(duì)應(yīng)的輪廓線,以圖的形式表達(dá)三維模型的輪廓信息三維模型的頂點(diǎn)和輪廓線分別作為節(jié)點(diǎn)和邊;輪廓圖分割步驟S103,其根據(jù)輸入模型的幾何信息,將輪廓圖分割成若干個(gè)不重疊的子圖,然后為每個(gè)子圖,重建出相應(yīng)的由三角形網(wǎng)格表達(dá)的三維實(shí)體。根據(jù)本發(fā)明的實(shí)施方式,輸入可以是以三角形網(wǎng)格描述的三維模型,這類模型提供的基本數(shù)據(jù)元素包括頂點(diǎn)的坐標(biāo)以及組成每一個(gè)三角形的頂點(diǎn)索引。因通過(guò)掃描產(chǎn)生的點(diǎn)云模型,通過(guò)各種建模工具產(chǎn)生的參數(shù)化模型、或者以多邊形(而不是三角形)網(wǎng)格表示的模型可以預(yù)先進(jìn)行三角化處理,轉(zhuǎn)化為三角形網(wǎng)格表達(dá)的三維模型。另一方面,如圖IB所示,依據(jù)本發(fā)明的一種實(shí)施方式的模型分割裝置包括平面檢測(cè)單元101、輪廓提取單元102以及輪廓分割單元103。其中,所述平面檢測(cè)單元例如可以包括法線方向計(jì)算單元1011、子平面獲取單元1012以及平面獲取單元1013。所述輪廓提取單元102可以包括邊獲取單元1021、邊分類單元1022以及邊刪除單元1023。在一種實(shí)施方式中,所述輪廓分割單元包括子圖獲取單元1031和重建單元1034。在另一種實(shí)施方式中,所述輪廓分割單元包括子圖獲取單元1031、洞處理單元1032、重建單元1034。在又一種實(shí)施方式中,所述輪廓分割單元包括子圖獲取單元1031、切面處理單元1033、重建單元1034。在再一種實(shí)施方式中,所述輪廓分割單元包括子圖獲取單元1031、洞處理單元1032、切面處理單元1033、重建單元1034。下面,參照附圖具體描述三維模型分割裝置和方法的各個(gè)模塊。平面檢測(cè)如圖IA所示,根據(jù)本發(fā)明的一種實(shí)施方式,首先在步驟SlOl中,由平面檢測(cè)單元101檢測(cè)組成該三維模型的平面。平面檢測(cè)單元101的輸入為由三角形網(wǎng)格表達(dá)的三維模型,該模型必需提供的數(shù)據(jù)包括頂點(diǎn)的三維坐標(biāo)以及各個(gè)三角形的頂點(diǎn)索引。根據(jù)這些數(shù)據(jù),檢測(cè)到包括三角形的所有平面。此處平面是有界的,可能是由一個(gè)多邊形或若干個(gè)多邊形組成的。圖2給出了依據(jù)本發(fā)明的實(shí)施方式的圖IA中的平面檢測(cè)步驟SlOl的流程示意圖。如圖2所示,首先,在步驟S201,計(jì)算每一個(gè)三角形的法線方向信息;然后,在步驟S202,獲得三角形之間的連接信息,并通過(guò)聚集相互連接且方向相同或相反的三角形,獲得一系列子平面;最后,在步驟S203,通過(guò)聚集符合條件的子平面,獲得最終的平面。下面將介紹該流程涉及到的每一個(gè)步驟。為描述方便,首先定義一些變量以描述輸入模型的幾何數(shù)據(jù)。·Vi=(xi;Yi,Zi),(i=1,...,ην)表示模型的頂點(diǎn)信息,其中ην表示頂點(diǎn)的數(shù)目,Vi表示第i個(gè)頂點(diǎn),而(Xi,Zi)表示該頂點(diǎn)的三維坐標(biāo);以Fi=(vn,vi2,vi3),(i=1,...,nf)表示模型的三角形面的信息,其中nf表示三角形平面的數(shù)目,F(xiàn)i表示第i個(gè)三角型,而(vn,vi2,vi3)表示該三角形三個(gè)頂點(diǎn)的索引;以NDi=(nix,niy,niz),(i=1,...,nf)表示模型的三角形面的法線方向,其中NDi表示第i個(gè)三角形的法線方向,而(nix,niy,niz)表示該三角形法線方向的三個(gè)分量。首先介紹步驟S201的法線方向確定步驟。該步驟的目的在于計(jì)算出每個(gè)三角形面的法線方向,目前有許多方法可以實(shí)現(xiàn)此目的。在本實(shí)施方式中,例如可以由法線方向計(jì)算單元1011采取下面步驟來(lái)計(jì)算給定三角形面的法線方向和面積。圖3給出了依據(jù)本發(fā)明一種實(shí)施方式的計(jì)算三角形平面的法線方向和面積的示意圖。假設(shè)三角形頂點(diǎn)的順序?yàn)锳—B—C。1)按照下式,計(jì)算矢量Xg和記。<formula>formulaseeoriginaldocumentpage10</formula>2)計(jì)算兩向量菇和Xe的向量積。<formula>formulaseeoriginaldocumentpage10</formula>(2)3)計(jì)算三角形的面積,其中Pl代表向量P的模。<formula>formulaseeoriginaldocumentpage10</formula>(3)4)計(jì)算三角形的法線方向。<formula>formulaseeoriginaldocumentpage10</formula>(4)此處三角形的面積可以采用其它方法來(lái)計(jì)算。例如,假設(shè)la,lb,lc代表三角形三邊的長(zhǎng)度,則VsG-la)(s-Ib)(s-lc)代表三角形的面積,其中S=(la+lb+lc)/2。遍歷完所有的三角形后,得到如下信息每個(gè)三角形的法線方向和面積,而且每一個(gè)三角形的法線方向向量均為單位向量。然后,在步驟S102的子平面獲得步驟中,由子平面獲取單元1012以每一個(gè)三角形平面為對(duì)象,將與之相連接的并且方向基本一致或者相反的三角形平面聚集生成一系列子平面。在本文中,方向基本一致是指兩個(gè)方向之間的差別小于預(yù)定閾值。方向基本相反是指兩個(gè)方向之間的差別與η之間的差小于預(yù)定閾值。首先,對(duì)每一個(gè)三角形平面,找到與之相連接的三角形平面。在本實(shí)施方式中,若兩個(gè)三角形平面擁有一條公共邊,且該邊在兩三角形平面中方向完全相反,則認(rèn)為它們相互連接。按照該原則,對(duì)每一個(gè)三角形Fi而言,有三個(gè)三角形平面與之相連,記為L(zhǎng)i={1η,li2,li3},(i=1,2,...,nf)。圖4是示意三維模型中三角形平面鄰接關(guān)系的示意圖。如圖4中,與三角形F相連接的三個(gè)三角形平面為L(zhǎng)i、L2和L3。除了上面這種判斷三角形相互連接的方法之外,也可以通過(guò)其他方式。例如,若兩個(gè)三角形平面擁有公共點(diǎn),則認(rèn)為它們相互連接。采用這種方式,最終結(jié)果與上述方法得到的平面數(shù)據(jù)相同。然而,這樣做的話,與每個(gè)三角形相連接的三角形數(shù)目有所增加,進(jìn)而后續(xù)工作的計(jì)算量會(huì)略有增加。然后,對(duì)每一個(gè)三角形平面Fi,按照式(5)計(jì)算每一個(gè)與之相連的三角形平面與Fi的夾角Angi={Angn,Angi2,Angi3I0其中^·B代表兩個(gè)向量i和ζ的點(diǎn)積。如圖4的情況,可得出,三角形平面F和三角形平面Li,L2,L3的夾角分別是0、0和π/2。Anga=cos"1(ND^·ND*)<formula>formulaseeoriginaldocumentpage11</formula>⑶<formula>formulaseeoriginaldocumentpage11</formula>接下來(lái),設(shè)置合適的閾值,聚集與Fi相連接的且符合條件的三角形從而生成以三角形平面Fi為對(duì)象的子平面。此處條件指的是與三角形平面Fi的法線方向相同或者相反,也就是Ang<=athl或者Ang>=ath2,其中athl的數(shù)值接近0,而ath2接近π。在圖4所示的情況下,以三角形F為對(duì)象,產(chǎn)生的子平面包括三個(gè)三角形F本身,還有Ll和L20遍歷完所有的三角形后,得到了以下信息以每一個(gè)三角形平面為對(duì)象,聚集產(chǎn)生的子平面信息,記為SubPi=(Fi,spn,·..,sPiJ},(i=1,2,...,nf,0彡j彡3)。最后,在步驟S203的平面獲取步驟中,由平面獲取單元1013通過(guò)聚集滿足條件的子平面的方式,得到最終的平面數(shù)據(jù)。通過(guò)前一步驟得到的各個(gè)子平面集合的大小介于1到4之間,在這一步驟中,隨著子平面合并過(guò)程的進(jìn)行,子平面逐漸擴(kuò)大,直到不能再擴(kuò)大為止。如果兩個(gè)子平面的法線方向相同或者相反,同時(shí)滿足下面條件之一,則將兩個(gè)子平面合并為一個(gè)新的子平面。重復(fù)該過(guò)程,直到所有的子平面不能繼續(xù)合并為止。1)在兩個(gè)子平面的三角形平面集合中,存在公共的三角形;圖5示意示出了子平面可合并的這一條件。如圖5所示,以Fl和F2分別為對(duì)象產(chǎn)生的子平面中,存在公共三角形F。2)在兩個(gè)子平面的頂點(diǎn)集合中,至少存在一條邊連接分屬兩個(gè)子平面的頂點(diǎn),同時(shí)該邊與子平面的法線向量垂直。圖5也示意示出了子平面可合并的這一條件。如圖5,以F3和F4為對(duì)象產(chǎn)生的子平面的頂點(diǎn)之間存在連接,如兩個(gè)實(shí)心方框之間的連線。3)在兩個(gè)子平面的三角形平面集合中,至少存在一對(duì)分屬兩個(gè)子平面且相互連接的三角形;圖6是示意示出子平面可合并的另一種條件的示意圖。如圖6,以Fl和F2分別為對(duì)象產(chǎn)生的子平面中,存在兩個(gè)相鄰接的三角形平面F11和F21。在當(dāng)前步驟結(jié)束后,就得到了最終的平面數(shù)據(jù)。對(duì)于每個(gè)平面,它包含的數(shù)據(jù)有平面的面積、平面的法線方向、所含三角形集合以及頂點(diǎn)集合。應(yīng)該注意,上面的平面檢測(cè)的方法只是示例性的,可以采取其它的檢測(cè)平面的方法。例如可以采用這樣的方法1、選擇不共線的三個(gè)頂點(diǎn)(或者任意三角形的三個(gè)頂點(diǎn))作為平面;2、進(jìn)而判斷其余頂點(diǎn)是否落在該平面上;3、判斷各個(gè)三角形平面是否落在該平面上。直到所有的三角形平面處理完為止。這種實(shí)現(xiàn)方式和前面介紹方法相比,增加了計(jì)鈴旦昇里。輪廓提取下面介紹輪廓提取步驟S102,在該步驟,由輪廓提取單元102根據(jù)平面檢測(cè)步驟得到的平面數(shù)據(jù),提取出模型的輪廓信息。為實(shí)現(xiàn)這一目的,首先提取每個(gè)平面的輪廓信息,從而得到整個(gè)模型的輪廓信息。對(duì)每個(gè)平面,執(zhí)行如下操作以得到平面的輪廓信息。首先,由邊獲取單元1021獲取平面上所有邊的集合。此處,邊集合包含平面上每個(gè)三角形的三條邊。圖7示出了根據(jù)本發(fā)明的實(shí)施方式的平面內(nèi)部邊和邊界邊的示意圖。如圖7所示平面中包含13條邊。當(dāng)然,也可以每取一條邊就由下面的邊分類單元進(jìn)行分類。接下來(lái),由邊分類單元1022判斷邊的類別。有界平面上的邊可以分為兩類內(nèi)部邊和邊界邊。在一個(gè)實(shí)施例中,采用一種簡(jiǎn)單的方法實(shí)現(xiàn)邊的分類。如果某條邊被該平面上兩個(gè)三角形所共有,則這條邊就是內(nèi)部邊,否則該邊就是邊界邊。如圖6中三角形Fl和F2的公共邊是內(nèi)部邊,同理其它幾條細(xì)線(包括虛線)也屬于內(nèi)部邊;而以粗線標(biāo)記的邊只屬于平面上一個(gè)三角形,因此這些邊是邊界邊。最后,由邊刪除單元1023刪除平面上所有的內(nèi)部邊,保留邊界邊。這些邊界邊首尾相連,組成封閉區(qū)域。這些邊界邊表達(dá)了平面的輪廓信息。遍歷完所有的平面后,所有平面的邊界邊組成了模型的輪廓。圖8顯示了一個(gè)三維模型的輪廓信息。在本實(shí)施方式中,以圖的方式表達(dá)輪廓信息,以模型的頂點(diǎn)(以實(shí)心方框標(biāo)記)作為圖的節(jié)點(diǎn),以模型的輪廓線作為圖的邊。關(guān)于輪廓圖提取方法,也可采用尋找凸包相似的方法,進(jìn)而確定由平面上各個(gè)三角形組成的區(qū)域的邊緣。這對(duì)于相對(duì)簡(jiǎn)單的模型也可以得到準(zhǔn)確的輪廓。輪廓分割回到圖1A,在步驟S103中,對(duì)輪廓圖進(jìn)行分割。在一種實(shí)施方式中,該步驟可以包括子圖獲得步驟,即由子圖獲取單元1031將輸入的輪廓圖分離為若干個(gè)不重疊的子圖;和輪廓重建步驟,即由重建單元1034重建各子圖的輪廓,即,為每個(gè)子圖重建相應(yīng)的三維實(shí)體。即在這種實(shí)施方式中,輪廓分割單元103由子圖獲取單元1031和重建單元1034組成。在本實(shí)施方式中,在步驟S103,首先由子圖獲取單元1031采取以下步驟,即將所有頂點(diǎn)(由于輪廓圖的頂點(diǎn)與輸入的模型的頂點(diǎn)是一一對(duì)應(yīng)的,因而在不需要區(qū)分時(shí),將它們簡(jiǎn)單地稱為頂點(diǎn))劃分到若干個(gè)子集合中,一個(gè)子集合中的頂點(diǎn)不與另一個(gè)子集合中的頂點(diǎn)相連接。換句話說(shuō),將互相連接的頂點(diǎn)劃分到一個(gè)集合中。將不互相連接的頂點(diǎn)劃分到不同的集合中。具體地,例如可以采取以下的步驟。1)初始化子集合的數(shù)目η=0,節(jié)點(diǎn)處理標(biāo)記Pi=0(i=1,2...,nV),其中nV代表節(jié)點(diǎn)的數(shù)目,將每個(gè)頂點(diǎn)的處理標(biāo)記初始化為0,表示所有的頂點(diǎn)未處理過(guò);2)如果存在未處理過(guò)的節(jié)點(diǎn),則更新子圖數(shù)目η=n+1,隨機(jī)選擇一個(gè)未處理過(guò)的節(jié)點(diǎn)Noden作為源點(diǎn),初始化一個(gè)集合Sn={NodeJ;3)將所有與集合Sn中節(jié)點(diǎn)相連接、并且不在集合中的節(jié)點(diǎn)合并到集合Sn中;4)重復(fù)步驟3,直到Sn不再變化為止;5)更新節(jié)點(diǎn)處理標(biāo)記,將所有包含在Sn中的節(jié)點(diǎn)的處理標(biāo)記設(shè)為1,表示這些節(jié)點(diǎn)已經(jīng)處理過(guò)了;6)如果所有的節(jié)點(diǎn)處理完畢,結(jié)束此過(guò)程,否則轉(zhuǎn)步驟2。接下來(lái),對(duì)于每一個(gè)子集合,利用該子集合中的節(jié)點(diǎn),以及節(jié)點(diǎn)之間的邊組成新的子圖。圖10所示的輪廓圖被分割為3個(gè)子圖,節(jié)點(diǎn)分別以菱形、星形和圓形標(biāo)記,其中實(shí)心方框所標(biāo)記的節(jié)點(diǎn)是生成這些子圖的三個(gè)源點(diǎn)。然后,由重建單元為每個(gè)子圖重建相應(yīng)的三維實(shí)體,重建三維實(shí)體也就是重建三維實(shí)體模型,在本文中,不對(duì)此進(jìn)行區(qū)分。在另一種實(shí)施方式中,所述步驟S103還包括洞處理單元1032所進(jìn)行的洞處理步驟。在本發(fā)明的一種實(shí)施方式中,洞處理單元1032例如包括洞判斷單元和洞模型矯正單元。相應(yīng)地,洞處理步驟包括洞判斷步驟和洞模型矯正步驟。具體地,在洞判斷步驟中,首先判斷重建單元1034所重建的各子圖對(duì)應(yīng)的三維實(shí)體模型在初始三維物體中是否對(duì)應(yīng)著一個(gè)洞。在本實(shí)施方式中,應(yīng)用了一個(gè)基本規(guī)則如果是洞,則面的方向指向物體內(nèi)部;如果不是洞,則面的方向指向物體外部。應(yīng)用此規(guī)則,采取以下步驟從而判斷輸入的三維實(shí)體模型是否是洞。1)初始化兩個(gè)變量Cntl=0,Cnt2=0,分別表示指向物體表面外側(cè)的平面的面積,以及指向物體表面內(nèi)側(cè)的平面的面積之和;2)遍歷該輪廓圖中的每一個(gè)平面,從而更新Cntl和Cnt2的數(shù)值。對(duì)每一個(gè)平面Pl做如下操作2-1判斷與該平面Pl上頂點(diǎn)相連接并且不在該平面上的頂點(diǎn),是否全部處于該平面的一側(cè);2-2如果不是,則不更新Cntl和Cnt2的數(shù)值;2-3如果是,判斷這些點(diǎn)位于該平面的正向一側(cè)還是負(fù)向一側(cè)。在本實(shí)施方式中,利用式(6)判斷這些點(diǎn)與平面的關(guān)系。在式(6)中,斤代表該平面的法線方向斥代表該平面上的一點(diǎn)、代表與P相連接且不在平面Pl上的一個(gè)點(diǎn)。如果d>0,則認(rèn)為該點(diǎn)位于平面的正向一側(cè),即與平面直接相連的頂點(diǎn)位于該平面的正向一側(cè),而該平面指向物體表面的外側(cè),則更新Cntl=CntHapl,其中apl表示平面pi的面積。如果d<0,則認(rèn)為該點(diǎn)位于平面的負(fù)向一側(cè),即與平面直接相連的頂點(diǎn)位于該平面的負(fù)向一側(cè),而該平面指向物體表面的內(nèi)側(cè),則更新Cnt2=CntZ+a^,其中apl表示平面pi的面積。c/=nP*(L-P)(6)遍歷所有平面后,根據(jù)Cntl和Cnt2之間的大小關(guān)系,確定該圖所對(duì)應(yīng)的物體是否是洞。如果Cntl>Cnt2表示輸入的圖對(duì)應(yīng)的物體不是洞,否則是洞。然后在判斷出該實(shí)體是洞時(shí),利用前述洞模型矯正單元改變Ml和M2(利用前述洞模型矯正單元改變?cè)搶?shí)體中所有三角形的法線方向,即對(duì)每一個(gè)三角形而言,將其改變?yōu)橄喾吹姆较颉?中所有三角形的法線方向。使得模型表面方向指向外側(cè),以便于模型渲染、顯不。在根據(jù)本發(fā)明的另一實(shí)施方式中,輪廓分割單元包括子圖獲取單元1031、切面處理單元1033和重建單元1034。也就是說(shuō),在該實(shí)施方式中,步驟S103可以包括子圖獲得步驟,即由子圖獲取單元1031將輸入的輪廓圖分離為若干個(gè)不重疊的子圖;輪廓重建步驟,即由重建單元1034重建各子圖的對(duì)應(yīng)的三維實(shí)體,S卩,為每個(gè)子圖重建相應(yīng)的三維實(shí)體,以及切面處理步驟,判斷重建單元1034所重建的各子圖對(duì)應(yīng)的三維實(shí)體中是否包含切面,如果包含切面,則進(jìn)行切面處理。在一個(gè)實(shí)施例中,切面處理單元1033包括切面檢測(cè)單元,用于檢測(cè)出輸入的輪廓圖中所有的切面;輪廓圖再分割單元,根據(jù)切面檢測(cè)單元檢測(cè)出的切面,對(duì)含有所述切面的輪廓圖進(jìn)行分割,獲得新的子圖。輪廓圖再分割單元可以包括分割單元和合理性判斷單元,合理性判斷單元用于判斷分割單元所分割出的子圖是否合理。下面首先介紹切面判斷單元的切面判斷準(zhǔn)則,在一個(gè)實(shí)施例中,一個(gè)平面被認(rèn)為是切面的首要條件就是除了當(dāng)前平面上的頂點(diǎn),其他頂點(diǎn)分布在當(dāng)前平面的兩側(cè)。如果對(duì)某一平面而言,除了平面上的頂點(diǎn),其他頂點(diǎn)均位于平面的同側(cè),則此平面不是切面。在圖11所示的輪廓圖的情況下,以黑色平面為例,其共有四個(gè)頂點(diǎn)兩個(gè)以圓形標(biāo)記的頂點(diǎn)和兩個(gè)以方框標(biāo)記的頂點(diǎn)。對(duì)方框標(biāo)記的兩個(gè)頂點(diǎn)而言,分別有一個(gè)不屬于黑色平面的頂點(diǎn)與之相連,這兩個(gè)頂點(diǎn)處于黑色平面的正向一側(cè);對(duì)圓形標(biāo)記的兩個(gè)頂點(diǎn)而言,分別有一個(gè)不屬于黑色平面的頂點(diǎn)與之相連,這兩頂點(diǎn)處于黑色平面的負(fù)向一側(cè)。因此該平面具備了切面的首要條件。除了上面所述的首要條件,還可以設(shè)置一些輔助條件1)該平面的面積與模型表面積之比不能小于某一設(shè)定閾值;該閾值一般小于1;2)對(duì)于平面上任何頂點(diǎn),與之相連的頂點(diǎn)之間的邊與平面之間的夾角不小于某一設(shè)定閾值;該閾值一般大于0;3)對(duì)于平面上任何頂點(diǎn),與之相連的頂點(diǎn)之間的長(zhǎng)度不得小于某一設(shè)定閾值。該閾值一般大于0。還可以根據(jù)實(shí)際經(jīng)驗(yàn),選擇或者設(shè)定一些新的條件。下面介紹輪廓圖再分割單元的操作。如前所述,輪廓圖再分割單元利用獲取的切面,將輸入的輪廓圖分割成為若干個(gè)子圖。對(duì)于輸入的輪廓圖而言,通常不止一個(gè)切面。在一個(gè)實(shí)施例中,將依次嘗試每一個(gè)切面,直到成功將輸入的輪廓圖成功地分割為若干子圖為止。在另一個(gè)實(shí)施例中,直到處理完所有平面為止,也就是說(shuō)當(dāng)所有的切面都嘗試過(guò)了,但輸入的輪廓圖不能被成功分割的情況下,輸入輪廓圖的分割就只能結(jié)束了。圖12示出了輪廓圖再分割單元所進(jìn)行的處理的流程圖。如圖12所示,在一個(gè)實(shí)施例中,輪廓圖再分割單元所進(jìn)行的處理主要由兩部分組成1)利用某一選定的切面,試圖將輸入輪廓圖分割為若干子圖;2)判斷分割結(jié)果是否合理。對(duì)于切面的處理順序,可以采用一些規(guī)則1)利用切面的面積進(jìn)行排序,優(yōu)先處理面積大的切面;2)利用切面的頂點(diǎn)數(shù)目進(jìn)行排序,優(yōu)先處理頂點(diǎn)數(shù)目多的切面;3)利用從切面外部直接與切面相連的邊與切面之間的夾角進(jìn)行排序,優(yōu)先處理角度大的平面。當(dāng)然在使用中,可以憑經(jīng)驗(yàn)選擇某些規(guī)則或者設(shè)定新的規(guī)則。如圖12所示,首先在步驟S1201,初始化一個(gè)變量i,即,使i=1,表示從第一個(gè)選定的切面開(kāi)始處理。然后再步驟S1202,用第i個(gè)候選切面對(duì)輸入的輪廓圖進(jìn)行分割。隨后在步驟S1203,對(duì)分割結(jié)果進(jìn)行合理性測(cè)試,如果合理(步驟S1204,是),則在步驟1206輸出分割結(jié)果,而如果分割結(jié)果不合理(步驟1204,否),則在步驟S1205中使i指向下一候選切面,即,使i=i+Ι。隨后在步驟S1207判斷是否已經(jīng)嘗試了所有切面,S卩,判斷i是否大于切面數(shù)目η。若已經(jīng)嘗試了所有的切面(S1207,是),則在步驟1208輸出分割不成功的提示或報(bào)警,該提示或報(bào)警例如可以以文本、音頻或視頻的方式作出。如果尚未嘗試完所有的切面(S1207,否),則返回步驟S1202。在待分割模型或子圖中含有多個(gè)切面時(shí),本發(fā)明的實(shí)施方式將逐一嘗試這些切面,直到將該模型對(duì)應(yīng)的輪廓圖合理地分割成若干子圖;若所有的候選切面經(jīng)合理性判斷,分割結(jié)果均不合理,則放棄對(duì)待分割模型的分割,將其直接輸出作為最終分割結(jié)果的一部分。對(duì)某一切面而言,若分割結(jié)果不合理,則放棄該切面的分割結(jié)果;嘗試另外的切面,對(duì)輸入的輪廓圖進(jìn)行分割。下面將介紹利用選定的切面對(duì)輪廓圖進(jìn)行分割的過(guò)程、圖13示出了輪廓圖再分割單元中的分割單元的操作流程圖。為表述方便,做如下設(shè)定假設(shè)切面是CPi(i=1,2,...,nC),其中nC表示檢測(cè)到切面的數(shù)目,該切面包含的數(shù)據(jù)信息有切面上的頂點(diǎn)信息PCi={pvn,pvi2,...,PViJ和切面的法線方向配,有時(shí)還可以包括切面的面積at;等;·C1和C2表示位于切面上的兩類頂點(diǎn)的集合;·S1和S2表示位于切面以外的兩類頂點(diǎn)的集合;·pro數(shù)組代表點(diǎn)處理標(biāo)記。在一個(gè)實(shí)施例中,首先找到切面左側(cè)(一側(cè))的點(diǎn),然后找到切面右側(cè)(另一側(cè))的點(diǎn),將左側(cè)的點(diǎn)和切面上的點(diǎn)封裝成若干子圖,將右側(cè)點(diǎn)和切面上的點(diǎn)封裝成若干子圖。在另一實(shí)施例中,在輪廓再分割單元中,將依次嘗試各個(gè)候選切面,直到將輪廓合理分割為若干子圖為止。對(duì)于某個(gè)給定切面,首先將切面附近的頂點(diǎn),包括切面上頂點(diǎn)和與切面上頂點(diǎn)直接相連的頂點(diǎn),劃分到兩個(gè)子集合中;其次,對(duì)于除所述切面附近的頂點(diǎn)之外的其它頂點(diǎn),利用它們與所述兩個(gè)子集合中頂點(diǎn)的連接關(guān)系,以及這些頂點(diǎn)與切面的位置關(guān)系,將它們分配到兩個(gè)子集合中,使得兩個(gè)子集合頂點(diǎn)之間不存在跨越切面的連接。下面參照?qǐng)D13對(duì)該分割單元所進(jìn)行的一種實(shí)施方式的操作進(jìn)行詳細(xì)的描述。如圖13所示,首先在步驟S1301,初始化頂點(diǎn)處理標(biāo)記prok=false,k=1,2,...,nk,其中nk為輪廓圖中的頂點(diǎn)數(shù)目,表示所有的頂點(diǎn)尚未處理。然后在步驟S1302,對(duì)切面上的頂點(diǎn)進(jìn)行分類。在步驟S1302中,利用切面上的各個(gè)頂點(diǎn)與切面外頂點(diǎn)間的連接關(guān)系,將切面上的頂點(diǎn)分為兩類,即第一朝向頂點(diǎn)和第二朝向頂點(diǎn),分別記為C1={Ι2,...,^4和C2丨^,“,…^小其中!^!^為兩集合的大小。為實(shí)現(xiàn)此目的,可采取以下三個(gè)步驟。1初始化兩個(gè)空集合,即第一朝向集合C1、第二朝向集合C2。2依次處理切面上的各個(gè)頂點(diǎn),并將其進(jìn)行分類。假設(shè)P為切面上的一個(gè)頂點(diǎn),假設(shè)與該頂點(diǎn)直接相連且不落在該切面的頂點(diǎn)集合<formula>formulaseeoriginaldocumentpage16</formula>其中nl為點(diǎn)的個(gè)數(shù)。對(duì)于集合S中的每一個(gè)頂點(diǎn)=1,2,...,岣,計(jì)算邊?與切面法線方向的內(nèi)積<=(〔.-朽。如果…大于0,則將此頂點(diǎn)并入第一朝向集合(^;如果…小于0,則將此頂點(diǎn)并入第二朝向集合c2。即某些頂點(diǎn)可能同時(shí)被包含在兩個(gè)集合中。3更新切面上各個(gè)頂點(diǎn)的處理標(biāo)記為true,表示這些頂點(diǎn)已經(jīng)被處理過(guò)了。如圖11所示,黑色切面上的四個(gè)頂點(diǎn)被分成兩類,其中C1包含兩個(gè)以方框標(biāo)記的頂點(diǎn),而C2包含兩個(gè)以圓形標(biāo)記的頂點(diǎn)。然后,在步驟S1303,將與切面上頂點(diǎn)直接相連且不落在該切面上的頂點(diǎn)進(jìn)行分類。即分為第一朝向側(cè)頂點(diǎn)和第二朝向側(cè)頂點(diǎn)。在這一步驟中,與平面上的頂點(diǎn)直接相連且不在切面上的頂點(diǎn)將被分成兩類,分別記為51二湯1,&2,...,11丨和&=621,“,...義2丨,其中sl、s2分別代表兩集合的大小??砂凑杖缦虏襟E得到這兩個(gè)頂點(diǎn)集合。1初始化兩個(gè)空集合,即第一朝向側(cè)集合S1和第二朝向側(cè)集合S2。2順序處理集合C1中的每個(gè)頂點(diǎn)二,i=1,2,...,nl。對(duì)頂點(diǎn)&而言,假設(shè)與&相連接且不屬于該切面上的頂點(diǎn)集合為7;={t5t,2,...,t,i},其中tl代表點(diǎn)的個(gè)數(shù)。依次處理T1中的每一個(gè)頂點(diǎn)j=1,2,...,tl,如果邊&—與切面的法線方向的內(nèi)積為正,且集合S1中不包含。,則將節(jié)點(diǎn)^并入集合S1O3順序處理集合C2中的每個(gè)頂點(diǎn)‘,i=1,2,...,π2。對(duì)頂點(diǎn)^而言,假設(shè)與。相連接且不屬于該切面上的頂點(diǎn)的集合為r2={t2.,t22,...,t(2},其中t2代表點(diǎn)的個(gè)數(shù)。依次處理T2中的每一個(gè)頂點(diǎn)j=1,2,...,tl,如果邊^(qū)—與切面的法線方向的內(nèi)積為負(fù),同時(shí)集合S2不含,則將節(jié)點(diǎn)并入集"pTS2。4更新集合S1和S2中各個(gè)頂點(diǎn)的處理標(biāo)記為true,表明這些頂點(diǎn)已經(jīng)處理過(guò)了。應(yīng)該注意,以上的這4個(gè)步驟不一定是順序執(zhí)行的,它們或它們中的某些步驟也可以是并行執(zhí)行的,并且即使是按順序執(zhí)行,執(zhí)行的順序也可以進(jìn)行改變。如圖11所示,與黑色切面上四個(gè)頂點(diǎn)直接相連接的四個(gè)頂點(diǎn)被分成兩類,其中集合S1包含兩個(gè)頂點(diǎn),如圖11所示,這兩個(gè)頂點(diǎn)通過(guò)虛線與兩個(gè)圓形標(biāo)記的頂點(diǎn)相連;而集合S2包含兩個(gè)頂點(diǎn),這兩個(gè)頂點(diǎn)通過(guò)實(shí)線與兩個(gè)方框標(biāo)記的頂點(diǎn)相連。然后在步驟S1304,對(duì)剩余的頂點(diǎn)進(jìn)行分類。最后,在步驟S1305,根據(jù)分類的結(jié)果,對(duì)輪廓圖進(jìn)行分割。對(duì)于步驟S1304,一種簡(jiǎn)單的實(shí)施方式是按照頂點(diǎn)處于哪一側(cè),直接將頂點(diǎn)進(jìn)行分類即可。這適用于結(jié)構(gòu)比較簡(jiǎn)單的模型。下面對(duì)步驟S1304的另一實(shí)施方式的操作進(jìn)行詳細(xì)介紹,在步驟S1304中,將剩余的頂點(diǎn)進(jìn)行分類,此處剩余的頂點(diǎn)表示尚未處理過(guò)的頂點(diǎn),也就是切面外、而且沒(méi)有邊與切面上頂點(diǎn)相連的那部分頂點(diǎn)。為此,可以采取如圖14所示的各個(gè)步驟。圖14是示出了對(duì)剩余頂點(diǎn)進(jìn)行分類的處理的流程圖。如圖14所示,首先在步驟S1401,將所有未處理過(guò)的頂點(diǎn)分到兩個(gè)集合XJPX2。其中X1包含了以集合S1中的頂點(diǎn)為源點(diǎn)進(jìn)行擴(kuò)張而得到的點(diǎn)集合,而X2包含了以集合S2中的頂點(diǎn)為源點(diǎn)進(jìn)行擴(kuò)張而得到的點(diǎn)集合。為得到這樣兩個(gè)集合采取以下步驟1初始化兩個(gè)空集合X1和X2。2將所有與集合S1頂點(diǎn)相連的,且未處理過(guò)的頂點(diǎn)并入集合X1;將所有與集合S2頂點(diǎn)相連的、且未處理過(guò)的頂點(diǎn)并入集合χ2。3:以X1中頂點(diǎn)為源點(diǎn)進(jìn)行擴(kuò)張,將所有與X1中頂點(diǎn)相連且未處理過(guò)的頂點(diǎn)包含進(jìn)來(lái),直到X1不再變化為止;以X2中頂點(diǎn)為源點(diǎn)進(jìn)行擴(kuò)張,將所有與X2中頂點(diǎn)相連且未處理過(guò)的頂點(diǎn)包含進(jìn)來(lái),直到X2不再變化為止。4對(duì)X1和X2進(jìn)行處理,使得X1和X2中各個(gè)頂點(diǎn)只出現(xiàn)一次。然后,在步驟S1402,查找集合X1和X2的公共點(diǎn),并組成集合XC=X}nX2={xci,xc2,...,xcnc},其中nc代表公共頂點(diǎn)的個(gè)數(shù)。然后在步驟1403,判斷集合XC是否為空,即nc是否為0。如果判斷出XC為空(S1403,是),則轉(zhuǎn)到步驟S1404,將集合X1和X2分別合并到第一朝向側(cè)集合S1和第二朝向側(cè)集合S2。另一方面,如果判斷出XC不為空(S1403,否),則轉(zhuǎn)到步驟S1405,從集合XC尋找候選頂點(diǎn),進(jìn)一步對(duì)未處理頂點(diǎn)進(jìn)行分類,然后轉(zhuǎn)步驟S1401。直到處理完所有的頂點(diǎn)為止。步驟S1405的目的在于從公共點(diǎn)集合XC尋找合適頂點(diǎn),進(jìn)一步對(duì)未處理頂點(diǎn)進(jìn)行分類。為實(shí)現(xiàn)此目的,在一種實(shí)施方式中,可采取如圖15所示的步驟。圖15示出了圖14中步驟S1405的更詳細(xì)的處理。如圖15所示,首先在步驟S1501中,從集合XC找到所有的候選頂點(diǎn)集合;然后在步驟S1502,從候選集合中找出最合適的頂點(diǎn);最后在步驟S1503,利用在步驟S1502選定的頂點(diǎn)采取相應(yīng)的操作,以進(jìn)一步對(duì)未處理頂點(diǎn)進(jìn)行分類。也就是說(shuō),如果存在公共頂點(diǎn),即XC不為空,則表示集合X1和集合X2頂點(diǎn)之間存在跨越切面的連接,因此需要找到這些頂點(diǎn),添加適當(dāng)?shù)男马旤c(diǎn),對(duì)剩余頂點(diǎn)繼續(xù)分類,將它們劃分到兩個(gè)子集合中。下面對(duì)步驟S1501的查找所有的候選頂點(diǎn)集合CV的步驟進(jìn)行更詳細(xì)的說(shuō)明。此步驟目的在于從集合XC找到所有的候選頂點(diǎn)集合,記為C1F=,此處nc為候選頂點(diǎn)的數(shù)目,以備后續(xù)操作。在本實(shí)施方式所述方法中,只有符合某些特定條件的頂點(diǎn),才可以作為候選頂點(diǎn)。以集合XC中任一頂點(diǎn)P為例,假設(shè)與之相連接的頂點(diǎn)集合為1=仏丄2,...,L/}。為判斷該點(diǎn)是否為候選節(jié)點(diǎn),從切面上頂點(diǎn)中任選一個(gè)頂點(diǎn)g作為輔助節(jié)點(diǎn)。然后計(jì)算祀和《=(L-e)/|(L-e)|·配,k=1,2,...,ηι,其中卩I表示向量&的模,而叾eg表示兩向量的內(nèi)積。當(dāng)頂點(diǎn)ρ滿足下面條件之一時(shí),則認(rèn)為候選頂點(diǎn)。條件1:如果|d|彡ε,其中ε為一個(gè)接近0的數(shù)值,同時(shí)丑,滿足dk>0或者dk<0的條件。(可以這樣理解條件1?位于切面上,以此點(diǎn)為界,將與之相連接的位于切面兩側(cè)的各個(gè)頂點(diǎn)劃分到兩個(gè)集合中。)條件2:如果|d|>λ并且d>0,其中λ為大于0且小于1的數(shù)值,同時(shí)丑,滿足IdkI彡ε或者dk<0且IdkI>λ的條件。(可以這樣理解條件2?位于切面正向一側(cè),與此點(diǎn)相連接的頂點(diǎn)中,存在位于切面負(fù)向一側(cè)的頂點(diǎn)。此時(shí)需要添加一些頂點(diǎn),將其分類。這些頂點(diǎn)為這些跨越切面的連接與切面的交點(diǎn),以這些交點(diǎn)為界,?和與P相連接的位于切面負(fù)向一側(cè)的頂點(diǎn)被劃分到兩個(gè)集合中。)條件3:如果|d|>λ并且d<0,其中λ為大于0且小于1的數(shù)值,同時(shí)3介,滿足IdkI(ε或者IdkI>λ且dk>0的條件。(可以這樣理解條件3?位于切面負(fù)向一側(cè),與此點(diǎn)相連接的頂點(diǎn)中,存在位于切面正向一側(cè)的頂點(diǎn)。此時(shí)需要添加一些頂點(diǎn),將其分類。這些頂點(diǎn)為這些跨越切面的連接與切面的交點(diǎn),以這些交點(diǎn)為界,P和與P相連接的位于切面正向一側(cè)的頂點(diǎn)被劃分到兩個(gè)集合中。)下面對(duì)步驟S1502從候選集合中選擇最合適的頂點(diǎn)進(jìn)行更詳細(xì)的說(shuō)明。本步驟旨在從候選集合中選擇最合適的一個(gè)頂點(diǎn),以備后續(xù)操作。在本實(shí)施方式中,距離S=S1US2中頂點(diǎn)最近的頂點(diǎn)巧被認(rèn)為是最合適的頂點(diǎn)。在本實(shí)施方式中,假定輪廓圖中所有邊的長(zhǎng)度為1,利用頂點(diǎn)之間的最短路徑來(lái)衡量?jī)身旤c(diǎn)間的距離。按照如下操作,確定頂點(diǎn)品。1計(jì)算CV中的每一個(gè)頂點(diǎn)^^k=1,2,...,nc到集合S的距離。此處,GjlJS的距離按照式(7)來(lái)計(jì)算,其中而(Gj)代表頂點(diǎn)Ji到i的最短距離。^=mini//;y(cvi,s)()2按照式(8),確定G。sp=arg_minrftCV^cOKV./下面對(duì)步驟S1503中的根據(jù)選定的頂點(diǎn),確定某些未處理頂點(diǎn)的類別信息進(jìn)行說(shuō)明。選定的候選頂點(diǎn)可能滿足以上所述的三個(gè)條件中的任何一個(gè)。對(duì)于滿足不同條件的頂點(diǎn),采取不同的操作。在介紹操作之前,我們假定選擇的頂點(diǎn)是P,與之相連接的頂點(diǎn)集合為L(zhǎng)=(LljL2,...,Ln,)。然后,按照計(jì)算出的d和dk,k=1,2,...,nl。操作1如果頂點(diǎn)滿足條件1,則采取如下操作。<table>tableseeoriginaldocumentpage19</column></row><table>操作3如果頂點(diǎn)符合條件3,采取如下操作。>將頂點(diǎn)P添加到集合S2中,并更新該節(jié)點(diǎn)的點(diǎn)處理標(biāo)記為true。>將與之相連接的每一個(gè)頂點(diǎn)進(jìn)行分類。Fork=1:nlif(|dk|^ε)添加頂點(diǎn)Git到集合CpC2中;elseif(dk>0)添加頂點(diǎn)到集合S1中;計(jì)算邊P—Gi與切面的交點(diǎn)&更新之間的連接關(guān)系,和涉及到的平面信息;將添加到集合CpC2中;更新L集合中每一個(gè)頂點(diǎn)的處理標(biāo)記為true。顯而易見(jiàn),在步驟2和步驟3所述的操作中均需要更新連接和相關(guān)平面信息。假設(shè)選定的候選節(jié)點(diǎn)是P,第k個(gè)與P相連接的頂點(diǎn)為^it,當(dāng)d、dk符號(hào)相反時(shí),需要計(jì)算邊P—Gft與切面的交點(diǎn)“將交點(diǎn)作為新的節(jié)點(diǎn)添加到輪廓圖中,并更新連接信息和相關(guān)平面信息。首先,按照下面步驟更新連接信息。<table>tableseeoriginaldocumentpage20</column></row><table>然后,按照下述兩個(gè)步驟更新相關(guān)的平面信息數(shù)據(jù)。1.將新增加的頂點(diǎn)^添加到切面;2.找到所有同時(shí)包含P和Ga的平面,并添加頂點(diǎn)^到這些平面。結(jié)合圖14和圖15的流程,每處理完一個(gè)候選頂點(diǎn),更新完相關(guān)信息后,采用步驟S1401獲取集合X1和Χ2,然后判斷X1和X2是否存在公共點(diǎn);如果存在公共點(diǎn),則采取步驟S1405繼續(xù)分割;直到所有的頂點(diǎn)處理完或者X1和X2不存在公共點(diǎn)為止。通過(guò)前面的步驟S1304的處理,平面上的頂點(diǎn)被分為C1和C2兩類,平面外的節(jié)點(diǎn)被相應(yīng)地分為S1和S2兩類。下面對(duì)步驟S1305進(jìn)行詳細(xì)的說(shuō)明。圖16是根據(jù)頂點(diǎn)分類結(jié)果建立子圖的示意流程圖。在步驟S1305中,首先將C1和S1合并得到第一個(gè)分割部分的點(diǎn)集合CS1JfC2與S2合并得到第二個(gè)分割部分的點(diǎn)集合cs2。然后,按照?qǐng)D16所示的步驟,分別處理兩個(gè)點(diǎn)集合CSpCS2,獲得若干個(gè)新的子圖。在圖16中,(C、S、CS)分別代表(CrSrCS1)或者(C2、S^CS1)中的某一組。如圖16所示,首先,在步驟SieoUfCS中的頂點(diǎn)分配到若干子集合中。在這一步驟中,首先,以CS中的頂點(diǎn)作為節(jié)點(diǎn),利用不屬于切面上的頂點(diǎn)之間的連接,切面上頂點(diǎn)與切面外頂點(diǎn)之間的連接作為邊,構(gòu)建一個(gè)結(jié)構(gòu)圖G。也就是說(shuō)該圖中,不包含切面上各個(gè)頂點(diǎn)之間的連接。然后,采用前面子圖獲取單元1031所述的方法,將圖G分割若干分離子圖,進(jìn)而將CS中的所有頂點(diǎn)分為若干子集合,記為2,...JfJ,i=1,2,...,ns,其中nS、ni分別表示子集合的數(shù)目,第i個(gè)子集合中頂點(diǎn)的數(shù)目。相應(yīng)地可以得到St^Ci={5n,$i2,...,Pd},SubPSi=Ipsll,psi2,..psJ,其中ci、si分別表示第i子圖中位于切面上頂點(diǎn)的數(shù)目以及切面外面頂點(diǎn)的數(shù)目。然后,在步驟S1602中,對(duì)每一個(gè)子集合,更新屬于切面上的頂點(diǎn)之間的連接關(guān)系從而構(gòu)建新的子圖。根據(jù)給定切面,輸入輪廓圖的頂點(diǎn)可以分為兩類即CS1和CS2,每一類頂點(diǎn)都可能是由多個(gè)部分組成的,因此需要根據(jù)其連接信息將其進(jìn)一步劃分為若干子圖。這種情況是存在的,例如在切面上方存在兩個(gè)或多個(gè)長(zhǎng)方體等情況。這一步驟目的在于對(duì)每一個(gè)子集合SubSi,i=1,2,...,ns,構(gòu)建其相應(yīng)的圖&。為達(dá)到這一目的,首先將SubSi中的各個(gè)頂點(diǎn)添加到Gi中作為節(jié)點(diǎn),把SubSi各個(gè)頂點(diǎn)之間的邊添加到Gi中作為邊;然后,采取如下步驟,在SubCi的頂點(diǎn)之間添加必要的邊,使得它們可以組成有界的封閉平面。1.尋找所有與SubCi存在公共頂點(diǎn)且公共點(diǎn)數(shù)目大于等于2的平面(不包含切面),記為plk,k=1,2,...,nk,其中nk代表這種平面的數(shù)目。2.對(duì)于每一個(gè)平面plk,k=1,2,...,nk,如果該平面與SubCi存在兩個(gè)公共點(diǎn),記為&和^,如果這對(duì)頂點(diǎn)之間沒(méi)有邊相連,則在圖Gi中添加這條邊。合理性判斷單元的目的在于檢驗(yàn)圖分割后產(chǎn)生的一系列子圖,是否合理。本實(shí)施方式設(shè)置了以下規(guī)則來(lái)判斷各個(gè)子圖是否具備產(chǎn)生三維實(shí)體的條件。以某一子圖G為例,假設(shè)包含該子圖所有頂點(diǎn)的平面PL={pi”pl2,...,plk},k=1,2,...,np,其中np為平面的個(gè)數(shù);PV=Iv1,V2,...,vk},k=1,2,...,ην表示頂點(diǎn)。G必須滿足以下所有條件,該子圖才具備生成三維實(shí)體的條件。>頂點(diǎn)的數(shù)目不得小于4,平面的個(gè)數(shù)不得小于4;>每個(gè)平面至少包含三個(gè)不共線的頂點(diǎn);>每條輪廓線至少屬于兩個(gè)不同的平面;>每一個(gè)平面上的頂點(diǎn)必須首尾相連,組成一個(gè)封閉區(qū)域。對(duì)前面的不利用切面分割的子圖,可以不利用這個(gè)判斷。在輪廓圖分割的第一步,將其分割為若干分離子圖的時(shí)候,可以利用第一個(gè)條件去判斷,主要是為了處理游離點(diǎn)或者游離平面。下面對(duì)重建單元和重建步驟進(jìn)行說(shuō)明。該單元和步驟的目的旨在為輸入的輪廓圖重建出相應(yīng)的三維實(shí)體。該模塊主要包括兩個(gè)主要步驟。首先,對(duì)于在圖分割過(guò)程中發(fā)生變化的平面采取三角化步驟,生成新的三角形;然后,校正新產(chǎn)生的三角形的法線方向,使得三維物體表面法線方向一致。3D模型重建的方法有很多,比如非專利文檔9中的基于點(diǎn)的重建方法。此外,還有基于序列圖像、基于深度數(shù)據(jù)、基于骨架、基于輪廓等的重建方法。在一種優(yōu)選的實(shí)施例中,采用以下的重建方法。在圖分割過(guò)程中的各個(gè)平面可以被分為兩類發(fā)生變化的平面和未發(fā)生變化的平面。在三角化步驟中,僅僅對(duì)產(chǎn)生變化的平面采取三角化算法,產(chǎn)生新的三角形平面,確保最終三維物體的完整性(封閉性);對(duì)于那些沒(méi)有發(fā)生變化的平面,本實(shí)施例將利用原有的三角形數(shù)據(jù)。下面將著重介紹對(duì)產(chǎn)生變化的平面進(jìn)行三角化的方法,圖17是示出了依據(jù)本發(fā)明實(shí)施方式的對(duì)平面進(jìn)行三角化的流程圖。假設(shè),平面pLi;i=1,2,...,nl是需要重新三角化的平面,其中nl是發(fā)生變化的平面的數(shù)目;7,t,k=l,2,...,nk是第Pli平面上點(diǎn)的數(shù)目。首先在步驟1701,找出位于該平面上的所有多邊形。因?yàn)槠矫嫔系母鱾€(gè)頂點(diǎn)首尾相連,可以采取下列步驟,檢測(cè)出所有的多邊形,結(jié)果記為L(zhǎng)i={iii;ii2,...,Iija=1,2,....,n,其中η代表多邊形的數(shù)目,Li中頂點(diǎn)序列代表各個(gè)多邊形的頂點(diǎn)序列。初始化多邊形個(gè)數(shù)η=0,頂點(diǎn)處理標(biāo)記pk=false,k=1,2,...,nk表示所有頂點(diǎn)尚未處理;更新多邊形數(shù)目η=η+1,隨機(jī)選擇一個(gè)未處理的頂點(diǎn)。為源點(diǎn),沿著與之相連接的其中一個(gè)頂點(diǎn)逐漸延伸,直到遇到頂點(diǎn)。為止。假設(shè)得到的頂點(diǎn)序列SLn={11;I2,...,I1J,代表第η個(gè)多邊形頂點(diǎn)序列;更新Ln={11;I2,...,IJ中頂點(diǎn)處理標(biāo)記為true,表明這些頂點(diǎn)已經(jīng)處理過(guò)了;如果所有的頂點(diǎn)都處理過(guò)了,則結(jié)束,否則轉(zhuǎn)步驟2。然后,在步驟1702中,確定多邊形之間的包含關(guān)系,重新組織多邊形。在前面步驟中,平面上的各個(gè)多邊形被檢測(cè)出來(lái),假設(shè)這η個(gè)多邊形為L(zhǎng)i=(Ii1,1χ2?···,Iiin^",土1,2,····,Πο如果多邊形數(shù)目為1,判斷該多邊形頂點(diǎn)順序?yàn)槟鏁r(shí)針還是順時(shí)針,如果是順時(shí)針則將其轉(zhuǎn)化為逆時(shí)針排列。此處可以采用[非專利文檔_7]中的方法確定多邊形的方向。如果多邊形數(shù)大于1,則計(jì)算多邊形之間包含關(guān)系矩陣為INy,i,j,....,η。如果INi,j=true表示第i個(gè)多邊形包括第j個(gè)多邊形。在本實(shí)施例中,如果一個(gè)多邊形Lj的所有頂點(diǎn)均位于另一個(gè)多邊形Li內(nèi)部,則稱多邊形Li包含多邊形Lp下面將介紹,根據(jù)矩陣INi,」,i,j,....,η重新組織這些多邊形。>首先,找出所有的簡(jiǎn)單多邊形Polyi,i=1,2,...,ni,此處的簡(jiǎn)單多邊形指的是不包含其它多邊形,也不被其他多邊形所包含的多邊形。>找出外部多邊形記為Polyk,k=1,2,...,nk,此處nk代表外部多邊形的數(shù)目。此處外部多邊形指的是不被任何其它多邊形包含的多邊形,同時(shí)又包含某些其它多邊形。>以每一個(gè)外部多邊形為對(duì)象組成一系列復(fù)雜多邊形。此處的每一個(gè)復(fù)雜多邊形包括一個(gè)外部多邊形,以及被該外部多邊形包圍的多邊形。以外部多邊形Polyk,k=1,2,...,nk為例,假設(shè)被它包含的多邊形LPk={lpkl,Ipk2,....,IpJ,其中kn代表被Polyk包含的多邊形數(shù)目,則復(fù)雜多邊形記為CPolyk={Polyk,LPj,k=1,2,...,nk。>使每一個(gè)簡(jiǎn)單多邊形的頂點(diǎn)序列按照逆時(shí)針排列;對(duì)于每一個(gè)復(fù)雜多邊形而言,外部多邊形按照逆時(shí)針排列,內(nèi)部多邊形按照順時(shí)針排列。然后在步驟1703,將多邊形三角化。將一個(gè)多邊形轉(zhuǎn)化為一系列多邊形,有多種方法可以采用,例如在非專利文檔10中提到的各種多邊形三角化的方法首先從輸入的多邊形中得到一系列梯形,然后在梯形中添加適當(dāng)?shù)膶?duì)角線,進(jìn)而將輸入的多邊形轉(zhuǎn)化為一系列單調(diào)多邊形,最后采取單調(diào)多邊形的三角化算法得到一系列不重疊的三角形。在本發(fā)明的實(shí)施方式中也可以采取[非專利文檔-8]介紹的方法,該方法可以處理上一步驟中提到的簡(jiǎn)單多邊形(單個(gè)凹多邊形或凸多邊形)以及復(fù)雜多邊形(也就是有洞的情況)。在該方法中,采用掃描線方法首先將多邊形轉(zhuǎn)化為一系列梯形,然后對(duì)某些梯形添加對(duì)角線,接下來(lái)利用對(duì)角線,將多邊形轉(zhuǎn)化為一系列單調(diào)多邊形,最后對(duì)單調(diào)多邊形進(jìn)行三角化,得到最終的三角形序列。下面介紹方向校正步驟。該步驟目的在于對(duì)新產(chǎn)生的三角形的方向進(jìn)行校正,使得三維實(shí)體表面的方向一致。如同在平面檢測(cè)單元中提到的那樣,以三角形網(wǎng)格表達(dá)的三維模型中,每一條邊為兩個(gè)三角形公有,且方向在兩個(gè)三角形中完全相反。本步驟正是按照這個(gè)約束條件,來(lái)校正新產(chǎn)生多邊形的法線方向。假設(shè)所有的三角形為廠={ν,1,ν,2,ν,3},i=1,2,…,nF。具體步驟如下1初始化三角形面處理標(biāo)記Proi=true,i=1,2,...,nF。2將新產(chǎn)生的三角形面的處理標(biāo)記設(shè)置為false。3找到所有的未處理三角形面UF=(Fu1jFu2,....,F(xiàn)j,其中im代表未處理平面的數(shù)目。4如果集合UF為空,則結(jié)束,否則轉(zhuǎn)步驟5。5按照下面步驟,依次處理UF的每一個(gè)三角形面Ff處理完后,轉(zhuǎn)步驟3。>找到與三角形面Fuk有公共邊且已經(jīng)處理過(guò)的三角形面F*。;>如果沒(méi)有找到廣,則處理下一個(gè)未處理過(guò)的三角形。>如果公共邊的方向在三角形Fuk和F*中方向相同,則改變Fuk中頂點(diǎn)的順序,使得公共邊的方向在這兩個(gè)三角形中相反;更新該三角形平面的處理標(biāo)記為true。6.轉(zhuǎn)步驟3,直到所有的三角形處理標(biāo)記為true為止。最后結(jié)合圖9對(duì)本發(fā)明的另一種實(shí)施方式的輪廓分割方法進(jìn)行說(shuō)明,在這種實(shí)施方式的輪廓分割方法中,既包括了洞處理步驟,也包括了切面處理步驟。但應(yīng)該注意到,雖然在圖中是先進(jìn)行洞處理然后再進(jìn)行切面處理的,但對(duì)這兩者沒(méi)有次序的限定,可以并行執(zhí)行,也可以先進(jìn)行切面處理然后再進(jìn)行洞處理。如圖9所示,首先,在步驟S901,將輪廓圖分割成幾個(gè)分離的子圖,其具體實(shí)現(xiàn)可以參見(jiàn)前面所述的子圖分離步驟。然后在步驟S902,為每個(gè)子圖重建相應(yīng)的三維實(shí)體。接著,在步驟S903,針對(duì)每個(gè)子圖,判斷該子圖對(duì)應(yīng)的實(shí)體是否為洞,如果為洞(步驟S904,是),則在步驟S910改變模型的法線方向,并輸出該子圖對(duì)應(yīng)的三維實(shí)體(步驟S911)。如果不是洞(步驟S904,否),則接著檢測(cè)所有可能的切面(或稱分割面)(步驟S905)。步驟S903和S904對(duì)應(yīng)于洞處理步驟,其具體實(shí)現(xiàn)可以參照前面的說(shuō)明。當(dāng)檢測(cè)出切面時(shí)(步驟S906,否),則在步驟S907,根據(jù)切面,將子圖分割成多個(gè)更小的子圖。然后在步驟S908,進(jìn)行合理性判斷,S卩,判斷步驟S907的分割是否成功。如果成功(步驟908,是),則在步驟909,為新產(chǎn)生的子圖重建出相應(yīng)的三維實(shí)體。并返回步驟S903,對(duì)新的三維實(shí)體,繼續(xù)進(jìn)行洞處理和切面處理。另一方面,當(dāng)在步驟S908判斷出分割不成功時(shí),則輸出該三維實(shí)體,不再繼續(xù)分割(S911)。很顯然,在圖9所示的流程圖中,切面處理的步驟可以重復(fù)多次,針對(duì)各個(gè)切面依次進(jìn)行,當(dāng)針對(duì)一個(gè)切面判斷分割不成功(S908,否)時(shí),可以不直接輸出該子圖對(duì)應(yīng)的三維實(shí)體,而嘗試?yán)孟乱磺忻孢M(jìn)行分割,直到不存在未處理的切面為止或者直到分割成功為止。應(yīng)該注意,雖然在圖9所示的實(shí)施方式中,在分離出子圖后,即步驟S901后,立即為個(gè)子圖建立三維實(shí)體(步驟902),但也可先針對(duì)各子圖進(jìn)行洞處理和切面處理,并最后一起重建各子圖的三維實(shí)體。根據(jù)本發(fā)明的實(shí)施方式,因?yàn)樵谀P头指钸^(guò)程中沒(méi)有復(fù)雜的計(jì)算和處理,所以效率高。其次,因?yàn)橐肓酥亟ú襟E,用三角形網(wǎng)格表達(dá)重建出的各三維實(shí)體模型,所以輸出結(jié)果為三維實(shí)體。再次,通過(guò)對(duì)分割結(jié)果引入了合理性判斷模塊,進(jìn)一步增強(qiáng)了抗噪聲能力。應(yīng)用示例下面,將通過(guò)一個(gè)示例說(shuō)明三維模型分割的過(guò)程。圖18為輸入的示例三維模型,該模型由52個(gè)頂點(diǎn)、108個(gè)三角形組成物體表面。在該輸入模型中,有兩個(gè)洞存在。首先,根據(jù)模型的相關(guān)數(shù)據(jù),計(jì)算各個(gè)三角形平面的面積、法線方向等數(shù)據(jù),然后將相互聯(lián)結(jié)的、同時(shí)方向相同或者相反的三角形組合起來(lái)得到組成該模型的平面數(shù)據(jù)。在本實(shí)施例中,如果兩個(gè)三角形法線之間的夾角小于0.001,則認(rèn)為兩三角形平面方向相同;如果兩三角形平面法線之間的夾角大于n-0.001,則認(rèn)為兩三角形平面方向相反。圖19顯示了從輸入模型中檢測(cè)到的平面數(shù)據(jù)。從如圖18所示的輸入模型中,共檢測(cè)到29個(gè)平面,其中每個(gè)平面包括如下信息落在平面上的頂點(diǎn)索引、三角形平面索引、平面面積、以及平面的法線方向。最終得到的平面數(shù)據(jù)如下表。以檢測(cè)到的第12個(gè)平面為例,圖19顯示出其數(shù)據(jù)信息。第12個(gè)平面包含兩個(gè)三角形面,索引分別為55和58;包含四個(gè)頂點(diǎn),索引分別為19、20、33和34。平面索引~I頂點(diǎn)索引三角形索引法線方向面積~{1,3,47,49}{1,6}(0,0,1)12.476—2{1,2,3,4,5,6}{2,4,22,30}(1,0,0)105.61~~3{3,4,49,50}{3,5}(0,-1,0)40.547~{1,2,7,9,10,13,16,18,20,2{7,8,9,10,11,13,15,16,1(0,1,0)227.062,24,26,28,30,32,34,36,37,18,19,20,23,24,25,26,8,39,41,42,45,47,48}27,28,29,42,43,44,46,49,53,61,64,68}~~5{47,48,49,50,51,52}{12,14,35,36}(-1,0,0)105.61~~6{2,6,48,52}{21,31}(0,0,-1)290.07—{5,6,8,11,12,14,40,43,44,{32,33,34,37,38,39,40,(0,-1,0)343.4546,51,52}41,92,94,95,96,97,98}~~8{15,16,21,22}{46,51}(1,0,0)45.216~~9{21,22,23,24}{47,48}(0.86,0,0.5)4.1379~10{15,16,17,18}{50,54}(0.97,0,0.25)5.1135~Π{17,18,19,20}{52,56}(0.42,0,0.9)5.1134~12{19,20,33,34}{55,58}(0,0,1)97.809~13{33,34,35,36}{57,60}(-0.42,0,0.91)5.1134<table>tableseeoriginaldocumentpage25</column></row><table>其次,根據(jù)已經(jīng)得到的平面數(shù)據(jù),提取輸入模型對(duì)應(yīng)的輪廓圖。刪除每個(gè)平面內(nèi)部的直線,得到了如圖20(a)所示的結(jié)果。圖20(b)顯示了以三維模型的頂點(diǎn)為節(jié)點(diǎn),以各個(gè)平面的輪廓線為邊構(gòu)造的輪廓圖。輸入模型對(duì)應(yīng)的輪廓圖包含52個(gè)節(jié)點(diǎn)和78條邊。接下來(lái),根據(jù)得到的輪廓圖,將輸入模型分割為若干部分。下面將介紹輪廓圖分割的各個(gè)步驟。1.將輪廓圖分割為若干個(gè)分離的子圖。在這一步驟中,將相互聯(lián)結(jié)的節(jié)點(diǎn)聚集起來(lái)得到若干個(gè)分離的子圖。如圖21所示,輸入模型對(duì)應(yīng)的輪廓圖被分割成4個(gè)分離的子圖,它們的頂點(diǎn)分別以菱形、五角星、圓形和星型來(lái)標(biāo)記。其中,以實(shí)心方框標(biāo)記的頂點(diǎn),代表在產(chǎn)生各個(gè)子圖時(shí)隨機(jī)選擇的源點(diǎn)。各個(gè)子圖的節(jié)點(diǎn)集合,每一個(gè)數(shù)字代表三維模型對(duì)應(yīng)的頂點(diǎn)索引S1={7,8,9,10,11,12,13,14};S2={39,40,41,42,43,44,45,46};S3={1,2,3,4,5,6,47,48,49,50,51,52};S4={15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38}ο2.重建每個(gè)子圖對(duì)應(yīng)的三維實(shí)體。在這一步驟中,各個(gè)子圖對(duì)應(yīng)的三維實(shí)體分別被重建出來(lái),且重建后的三維實(shí)體采用三角形網(wǎng)格表達(dá)三維實(shí)體的形狀。首先,對(duì)于每一個(gè)子圖,找到包含其所有頂點(diǎn)的平面,并判斷這些平面是否產(chǎn)生了變化。如果某一個(gè)平面包含兩個(gè)或者兩個(gè)以上子圖的頂點(diǎn),則該平面稱為變化的平面。結(jié)果如下<table>tableseeoriginaldocumentpage26</column></row><table>其次,對(duì)于每一個(gè)子圖,對(duì)所有變化的平面采取三角化操作。對(duì)于子圖1而言,平面{24,25,26,27}不需要三角化,可以直接利用原有的三角形組成集合{83,84,85,86,87,88,89,90};然而平面{4,7}需要重新三角化,新產(chǎn)生的三角形有(7,9,13),,(7,13,10),(8,11,14)和(8,14,12)。因此,子圖1對(duì)應(yīng)的三維實(shí)體由8個(gè)頂點(diǎn),12個(gè)三角形組成。對(duì)于子圖2而言,平面{20,21,22,23}不需要三角化,可以直接利用原有的三角形集合{75,76,77,78,79,80,81,82};平面{4,7}需要三角化,新產(chǎn)生的三角形有(39,41,45),(39,45,42),(40,43,46)和(40,46,44)。因此,子圖2對(duì)應(yīng)的三維實(shí)體由8個(gè)頂點(diǎn),12個(gè)三角形組成。對(duì)于子圖3而言,平面{1,2,3,5,6,28}不需要三角化,可以直接利用原始的三角形平面,得到三角形集合{1,2,3,4,5,6,12,14,21,22,30,31,35,36,91,93};然而平面{4,7}需要重新三角化,得到新的三角形(1,2,48)、(1,48,47),(5,6,52)和(5,52,51)。因此,子圖3對(duì)應(yīng)的三維實(shí)體由12個(gè)頂點(diǎn),20個(gè)三角形組成。對(duì)于子圖4而言,平面{8,9,10,11,12,13,14,15,16,17,18,19,29}不需要三角化,可以直接利用原有的三角形組成集合{46,47,48,50,51,52,54,55,56,57,58,59,60,62,63,65,66,67,69,70,71,72,73,74};然而對(duì)平面4需要重新三角化,產(chǎn)生新的三角形(16,18,20),(16,20,34),(16,34,36),(16,36,38),(16,38,32),(16,32,30),(16,30,28),(16,28,26),(16,26,24)和(16,24,22)。因此,子圖4對(duì)應(yīng)的三維實(shí)體由24個(gè)頂點(diǎn)、34個(gè)三角形組成。最后,校正新產(chǎn)生的三角形的方向。對(duì)于子圖1,在原始的三角形中,第83個(gè)三角形為(10,13,14),為保證模型表面方向的一致性,新產(chǎn)生的三角形(7,13,10)方向保持不變,同理(7,9,13)方向保持不變;第90個(gè)三角形為(11,9,8),因此新產(chǎn)生的三角形(8,11,14)需要改變方向?yàn)?8,14,11),同理(8,14,12)需要改變?yōu)?8,12,14)。按照同樣的方法處理對(duì)子圖2、子圖3和子圖4新產(chǎn)生的三角形的方向。圖22顯示了對(duì)應(yīng)于四個(gè)子圖的,重建后的三維實(shí)體Ml,M2,M3,M4。3.繼續(xù)分割重建后的實(shí)體,直到不能再分割為止。在這一步驟中,繼續(xù)分割重建的三維實(shí)體,直到所有模型都不能再分割為止。首先,判斷這四個(gè)模型是不是洞。判斷結(jié)果為Ml和M2為洞,而另外兩個(gè)模型不是洞。改變Ml和M2中所有三角形的方向,使得模型表面方向指向外側(cè),輸出這兩個(gè)模型,不再繼續(xù)分割。其次,判斷模型M3和M4模型中是否存在候選切面。在這一步驟中,在判斷某一平面是否為切面時(shí),采用的規(guī)則如下1)模型中的頂點(diǎn)位于該切面兩側(cè);2)切面的面積不小于表面積的百分之一;3)聯(lián)結(jié)切面上的頂點(diǎn)和切面外頂點(diǎn)的所有邊與切面的夾角不低于30度。根據(jù)這些條件來(lái)判斷,模型M3中存在兩個(gè)可能的切面,可以繼續(xù)分割;然而M4不存在切面,直接輸出該模型,不再繼續(xù)分割。接下來(lái),對(duì)模型M3進(jìn)行分割。由前面步驟得到的模型M3包含的頂點(diǎn)序列為=S3={1,2,3,4,5,6,47,48,49,50,51,52}0在分割之前,對(duì)頂點(diǎn)、三角形各個(gè)頂點(diǎn)的索引以及平面數(shù)據(jù)信息進(jìn)行更新。結(jié)果為頂點(diǎn)序列為S1={1,2,3,4,5,6,7,8,9,10,11,12},三角形平面數(shù)據(jù)為三角形索引I頂點(diǎn)1索引I頂點(diǎn)2索引I頂點(diǎn)3索引~39~~279““3132~234~~5625~~6524~~73910~~83104~~928~1087~Π9710<table>tableseeoriginaldocumentpage28</column></row><table>如圖23所示,Ρ8和Ρ3被檢測(cè)為候選切面。在此示例中,優(yōu)選處理面積最大的平面,即優(yōu)先處理平面Ρ8。1.初始化,12個(gè)頂點(diǎn)的處理標(biāo)記為false,prok=false,k=1,2,…,12,代表所有的頂點(diǎn)未處理。2.將切面上的四個(gè)頂點(diǎn)分成兩類C1={4,10}和C2={5,11}分別以方框和圓形標(biāo)記。更新點(diǎn)處理標(biāo)記:prox=true,χeC1UC2。3.把與切面上四個(gè)頂點(diǎn)直接相連,且不在切面上的頂點(diǎn)分成兩類X1={3,9}和X2={6,12},分別以星狀和菱形標(biāo)記。更新點(diǎn)處理標(biāo)記prox=true,χeX1UX2。4.將其它頂點(diǎn)分成兩類。利用X1={3,9}中的頂點(diǎn)作為源點(diǎn)進(jìn)行延伸,以未處理頂點(diǎn)組成集合PX1={1,2,7,8};利用X2={6,12}中頂點(diǎn)作為源點(diǎn)進(jìn)行延伸,以未處理頂點(diǎn)組成集合PX2={7,8,1,2}ο計(jì)算PX1和PX2的交集PX={1,2,7,8}ο從集合PX中選擇合適的節(jié)點(diǎn),進(jìn)一步對(duì)其它頂點(diǎn)進(jìn)行分類。經(jīng)過(guò)判斷這四個(gè)頂點(diǎn)均可以作為候選頂點(diǎn),且每一個(gè)頂點(diǎn)到X1或者X2得最短距離均為1。因此,可以隨機(jī)選擇一個(gè)頂點(diǎn)進(jìn)行處理。在本實(shí)施例中,選擇第一個(gè)頂點(diǎn),即頂點(diǎn)1進(jìn)行處理。與頂點(diǎn)1相連接的未處理頂點(diǎn)有2和7,其中直線1—2與切面相交,而直線1—7與切面平行。計(jì)算直線1—2與切面的交點(diǎn),作為第13個(gè)頂點(diǎn),如圖24所示,頂點(diǎn)1、2以五角星標(biāo)記,交點(diǎn)以指向上方的三角形標(biāo)記。更新頂點(diǎn)分類信息,頂點(diǎn)1位于切面的正側(cè),將其添加到集合X1中,得到X1={1,3,9},將頂點(diǎn)2添加到集合X2中得到X2={2,6,12};將新增加的第13個(gè)頂點(diǎn)添加到集合(^和C2中,結(jié)果為C1={4,10,13}C2={5,11,13}。更新頂點(diǎn)1、2和13的點(diǎn)處理標(biāo)記為true。更新頂點(diǎn)間的連接關(guān)系以及平面數(shù)據(jù)如下刪除頂點(diǎn)1和2之間的連接,在頂點(diǎn)1和13,2和13之間分別添加連接;在切面上,也就是第8個(gè)平面上添加頂點(diǎn)13,以及在平面2、4上添加頂點(diǎn)13。以X1={1,3,9}和X2={2,6,12}分別進(jìn)行延伸,由未處理頂點(diǎn)組成集合PX1={7,8}和PX2={8,7};計(jì)算PX1*PX2的交集PX={7,8}。經(jīng)過(guò)判斷得知,這兩個(gè)頂點(diǎn)均可以作為候選頂點(diǎn)進(jìn)行下一步處理。在本實(shí)施例中,選擇頂點(diǎn)8,其中與8直接相連的未處理頂點(diǎn)只有7,而且直線8—7跨越平面兩側(cè)。計(jì)算直線8—7與切面的交點(diǎn),記為第14個(gè)頂點(diǎn)。如圖24所示,頂點(diǎn)7和8以指向下方的三角形標(biāo)記,交點(diǎn)以指向上方的三角形標(biāo)記。然后更新頂點(diǎn)7、8和14的分類信息,其中第8個(gè)頂點(diǎn)處于切面的負(fù)向一側(cè),將其添加到集合X2中,得到X2={2,6,8,12},將第7個(gè)頂點(diǎn)添加到X1中,得到,X1={1,3,7,9}將新增加的第13個(gè)頂點(diǎn)添加到集合(^和C2中,結(jié)果為C1={4,10,13,14}C2={5,11,13,14}。更新頂點(diǎn)7、8和14的點(diǎn)處理標(biāo)記為true。更新頂點(diǎn)之間的連接信息和平面數(shù)據(jù)如下刪除頂點(diǎn)7和8之間的連接,添加7和14,8和14之間的連接;在切面上,即第8個(gè)平面上添加頂點(diǎn)14,在平面4和5上添加頂點(diǎn)14。至此,所有頂點(diǎn)的點(diǎn)處理標(biāo)記為true。此時(shí)的平面數(shù)據(jù)如下平面索引I頂點(diǎn)索引三角形索引法線方向面積~~I{1,3,7,9}{1,2}(0,0,1)12.476~~2{1,2,3,4,5,6,13}{3,4,5,6}(1,0,0)105.61<table>tableseeoriginaldocumentpage30</column></row><table>將集合Q={4,10,13,14}和C2={5,11,13,14}分別與={1,3,7,9}和X2={2,6,12}合并得到集合ex:={4,10,13,14,1,3,7,9}和CX2={5,11,13,14,2,6,8,12},代表以平面P8為切面將所有頂點(diǎn)分類的結(jié)果。接下來(lái),根據(jù)CX:={4,10,13,14,1,3,7,9}和CX2={5,11,13,14,2,6,8,12}建立子圖。對(duì)于集合中的頂點(diǎn)4和13而言,切面和第2個(gè)平面的交點(diǎn)只有4和13,因此在4和13之間添加連接,同理在頂點(diǎn)13和14之間添加連接,在頂點(diǎn)14和10之間添加連接;對(duì)于子圖2,在頂點(diǎn)5和13之間、13和14之間、以及11和14之間添加連接。然后根據(jù)各個(gè)集合的頂點(diǎn)以及聯(lián)結(jié)關(guān)系,建立兩個(gè)子圖。其中每一個(gè)子圖含有8個(gè)頂點(diǎn),12條邊。然后,判斷得知該分割結(jié)果有效,重建得到兩個(gè)三維實(shí)體,如圖25所示,分別記為M5和M6。這兩個(gè)實(shí)體均含有8個(gè)頂點(diǎn)和12個(gè)三角形平面,是兩個(gè)長(zhǎng)方體。接下來(lái),判斷得知M5和M6均不含有候選切面,因此輸入模型的分割到此結(jié)束,共得至IJ5個(gè)部分,艮口M1、M2、M4、M5禾口M6。熟悉本發(fā)明的領(lǐng)域的技術(shù)人員應(yīng)該理解,本文的流程圖中的或以其他方式描述的任何處理或方法描述或方框都可以被理解為即包括由單純硬件實(shí)現(xiàn)的部件、元件、裝置、單元等,也包括用于實(shí)現(xiàn)該處理中的具體邏輯功能或步驟的一個(gè)或更多個(gè)可執(zhí)行指令的代碼表達(dá)模塊、代碼段或代碼部,即也可由軟件實(shí)現(xiàn)。另外,也可以通過(guò)計(jì)算機(jī)軟件和硬件的結(jié)合來(lái)實(shí)現(xiàn)。在本文的流程圖中的或以其他方式描述的邏輯和/或步驟例如可以被考慮為用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的有序表達(dá),可以通過(guò)或結(jié)合指令執(zhí)行系統(tǒng)、設(shè)備或裝置(例如,基于計(jì)算機(jī)的系統(tǒng)、含有處理器的系統(tǒng)或可以從指令執(zhí)行系統(tǒng)、設(shè)備或裝置中調(diào)用并執(zhí)行該指令的其他系統(tǒng))在使用的任意計(jì)算機(jī)可讀介質(zhì)中實(shí)現(xiàn)這些邏輯和/或步驟。在本文的上下文中,“計(jì)算機(jī)可讀介質(zhì)”可以是能夠包含、存儲(chǔ)、傳達(dá)、傳播或傳輸通過(guò)或結(jié)合指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用的程序的任何裝置。計(jì)算機(jī)可讀介質(zhì)例如可以但不限于電學(xué)、磁性、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)、設(shè)備、裝置或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的更具體的實(shí)施例(非窮舉)包括以下各項(xiàng)具有一條或更多條導(dǎo)線的電連接(電學(xué))、便攜式計(jì)算機(jī)磁盤(pán)(磁性)、隨機(jī)存取存儲(chǔ)器(RAM)(電學(xué))、只讀存儲(chǔ)器(ROM)(電學(xué))、可擦除式可編程只讀存儲(chǔ)器(EPROM或閃速存儲(chǔ)器)(電學(xué))、光纖(光學(xué))以及便攜式光盤(pán)只讀存儲(chǔ)器(⑶ROM)(光學(xué))。注意,計(jì)算機(jī)可讀介質(zhì)甚至可以是在其上印有程序的紙件或其他適當(dāng)介質(zhì),因?yàn)榭梢越?jīng)由例如對(duì)紙件或其他介質(zhì)進(jìn)行光學(xué)掃描來(lái)電子捕獲該程序,接著編譯、解釋或根據(jù)需要以適當(dāng)方式對(duì)該程序進(jìn)行其他處理,接著將該程序存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。在前面的說(shuō)明書(shū)中參照特定實(shí)施例描述了本發(fā)明。然而本領(lǐng)域的普通技術(shù)人員理解,在不偏離如權(quán)利要求書(shū)限定的本發(fā)明的范圍的前提下可以進(jìn)行各種修改和改變。權(quán)利要求一種三維模型分割方法,所述方法包括以下步驟平面檢測(cè)步驟,檢測(cè)輸入的三維模型中包括的平面,所述輸入的三維模型以三角形網(wǎng)格描述;輪廓圖提取步驟,根據(jù)所述平面檢測(cè)步驟中檢測(cè)出的平面,提取所述三維模型的輪廓,即輪廓圖;以及輪廓圖分離步驟,將所述輪廓圖提取步驟提取出的輪廓圖分離成若干個(gè)子圖;三維實(shí)體重建步驟,為所述輪廓圖分離步驟分離出的各個(gè)子圖重建三維實(shí)體模型,重建出的各三維實(shí)體模型采用三角形網(wǎng)格表達(dá)。2.根據(jù)權(quán)利要求1所述的三維模型分割方法,其中,所述三維模型分割方法還包括洞判別步驟,所述洞判別步驟判斷所述三維實(shí)體重建步驟所重建出的三維實(shí)體模型或判斷各所述子圖所對(duì)應(yīng)的三維實(shí)體是否是洞;洞模型矯正步驟,如果所述洞判別步驟判斷出所述三維實(shí)體重建步驟所重建出的某一三維實(shí)體模型是洞,則改變?cè)撝亟ǔ龅娜S實(shí)體模型的所有三角形的法線方向,或在判斷出某一子圖所對(duì)應(yīng)的三維實(shí)體是洞時(shí),改變所述子圖對(duì)應(yīng)的三維實(shí)體的所有三角形的法線方向。3.根據(jù)權(quán)利要求1所述的三維模型分割方法,其中,所述三維模型分割方法還包括切面判斷步驟,判斷所述三維實(shí)體重建步驟所重建出的三維實(shí)體模型中是否包括切面,或判斷各所述子圖所對(duì)應(yīng)的實(shí)體中是否包括切面;再分割步驟,如果所述切面判斷步驟判斷出所述三維實(shí)體重建步驟所重建出的某一三維實(shí)體模型中包括切面,則利用該切面將該包括切面的三維實(shí)體模型分割成兩個(gè)或更多個(gè)子圖,如果所述切面判斷步驟判斷出某一子圖中包括切面,則利用該切面將該包含切面的子圖分割成兩個(gè)或更多個(gè)子圖。4.根據(jù)權(quán)利要求3所述的三維模型分割方法,其中,所述三維模型分割方法還包括合理性檢測(cè)步驟,檢測(cè)所述再分割步驟所分割出的子圖是否合理,如果不合理,則放棄該切面。5.根據(jù)權(quán)利要求4所述的三維模型分割方法,其中,在所述再分割步驟所分割出的子圖滿足以下所有條件時(shí),判斷該子圖合理(1)頂點(diǎn)的數(shù)目不小于4,平面的個(gè)數(shù)不小于4;(2)每個(gè)平面至少包含三個(gè)不共線的頂點(diǎn);(3)每條輪廓線至少屬于兩個(gè)不同的平面;(4)每一個(gè)平面上的頂點(diǎn)必須首尾相連,組成一個(gè)封閉區(qū)域。6.根據(jù)權(quán)利要求1所述的三維模型分割方法,其中,所述平面檢測(cè)步驟包括計(jì)算所述輸入的三維模型中的各個(gè)三角形面的法線方向;根據(jù)所述各個(gè)三角形面的法線方向,將相互連接并且方向一致或相反的三角形面聚集成子平面;以及將子平面合并成平面。7.根據(jù)權(quán)利要求6所述的三維模型分割方法,其中將滿足以下條件的兩個(gè)子平面合并成平面所述兩個(gè)子平面的法線方向相同或相反;并且所述兩個(gè)子平面之間存在公共的三角形、或存在公共邊、或存在連接分別屬于這兩個(gè)子平面的頂點(diǎn)并且垂直與所述兩個(gè)子平面的法線方向的直線。8.根據(jù)權(quán)利要求1所述的三維模型分割方法,其中所述輪廓圖提取步驟包括以下步驟獲取各平面上所有邊的集合;將各邊分為內(nèi)部邊或邊界邊;以及刪除所有的內(nèi)部邊,保留邊界邊。9.根據(jù)權(quán)利要求3所述的三維模型分割方法,其中所述再分割步驟包括以下步驟切面頂點(diǎn)劃分步驟,將切面上的頂點(diǎn)分入第一朝向頂點(diǎn)集合和第二朝向頂點(diǎn)集合,所述第一朝向頂點(diǎn)集合中的頂點(diǎn)為與切面之外的頂點(diǎn)的連線在第一方向上的頂點(diǎn),所述第二朝向頂點(diǎn)集合中的頂點(diǎn)為與切面之外的頂點(diǎn)的連線在第二方向上的頂點(diǎn);切面外頂點(diǎn)劃分步驟,將切面之外的頂點(diǎn)分入第一朝向側(cè)頂點(diǎn)集合和第二朝向側(cè)頂點(diǎn)集合,所述第一朝向側(cè)頂點(diǎn)集合中的頂點(diǎn)為直接或間接與第一朝向頂點(diǎn)集合中的頂點(diǎn)相連的頂點(diǎn),所述第二朝向側(cè)頂點(diǎn)集合中的頂點(diǎn)為直接或間接與第一朝向頂點(diǎn)集合中的頂點(diǎn)相連的頂點(diǎn);切面頂點(diǎn)增加步驟,根據(jù)所述第一朝向側(cè)頂點(diǎn)集合中的不與第一朝向頂點(diǎn)集合中的頂點(diǎn)直接相連的頂點(diǎn)和所述第二朝向側(cè)頂點(diǎn)集合中的不與第二朝向頂點(diǎn)集合中的頂點(diǎn)直接相連的頂點(diǎn)之間的連接關(guān)系,通過(guò)在所述切面上增加頂點(diǎn),使所述第一朝向側(cè)頂點(diǎn)集合和第二朝向側(cè)頂點(diǎn)集合之間不存在跨切面的連接;以及子圖分割步驟,根據(jù)所述第一朝向頂點(diǎn)集合和第二朝向頂點(diǎn)集合以及所述第一朝向側(cè)頂點(diǎn)集合和第二朝向側(cè)頂點(diǎn)集合將所述含有切面的三維實(shí)體模型或含有切面的子圖分成兩個(gè)子圖或更多個(gè)子圖。10.一種三維模型分割裝置,所述裝置包括平面檢測(cè)單元,檢測(cè)輸入的三維模型中包括的平面,所述輸入的三維模型以三角形網(wǎng)格描述;輪廓圖提取單元,根據(jù)所述平面檢測(cè)單元中檢測(cè)出的平面,提取所述三維模型的輪廓,即輪廓圖;以及輪廓圖分離單元,將所述輪廓圖提取單元提取出的輪廓圖分割成若干個(gè)子圖;三維實(shí)體重建單元,為所述輪廓圖分離單元分割出的各個(gè)子圖重建三維實(shí)體,重建出的各三維實(shí)體采用三角形網(wǎng)格表達(dá)。全文摘要本發(fā)明涉及三維模型分割裝置和方法。該三維模型分割方法包括以下步驟平面檢測(cè)步驟,檢測(cè)輸入的三維模型中包括的平面,所述輸入的三維模型以三角形網(wǎng)格描述;輪廓圖提取步驟,根據(jù)所述平面檢測(cè)步驟中檢測(cè)出的平面,提取所述三維模型的輪廓,即輪廓圖;以及輪廓圖分離步驟,將所述輪廓圖提取步驟提取出的輪廓圖分割成若干個(gè)子圖;三維實(shí)體重建步驟,為所述輪廓圖分離步驟分割出的各個(gè)子圖重建三維實(shí)體模型,重建出的各三維實(shí)體采用三角形網(wǎng)格表達(dá)。文檔編號(hào)G06T17/00GK101807308SQ20091000640公開(kāi)日2010年8月18日申請(qǐng)日期2009年2月12日優(yōu)先權(quán)日2009年2月12日發(fā)明者上原祐介,于浩,劉汝杰,增本大器,椎谷秀一,王月紅,遠(yuǎn)藤進(jìn),長(zhǎng)田茂美,馬場(chǎng)孝之申請(qǐng)人:富士通株式會(huì)社
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
云林县| 云梦县| 密云县| 金川县| 华蓥市| 河北区| 万全县| 喀喇沁旗| 肥西县| 柞水县| 天峨县| 黄山市| 抚宁县| 隆昌县| 安义县| 马尔康县| 黔西县| 独山县| 陆川县| 崇明县| 天柱县| 昌平区| 师宗县| 札达县| 台州市| 衢州市| 正镶白旗| 安仁县| 外汇| 云浮市| 岗巴县| 仁寿县| 贡嘎县| 水富县| 抚顺市| 嘉鱼县| 高安市| 新乡市| 灌阳县| 甘谷县| 札达县|