專利名稱:面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法,屬于信息處理技術(shù)領(lǐng)域。
背景技術(shù):
二維平面域內(nèi)任意離散點(diǎn)集的不規(guī)則三角網(wǎng)構(gòu)建是GIS數(shù)據(jù)表達(dá)、管理、集成和可視化的一項(xiàng)重要內(nèi)容,也是地學(xué)分析、計(jì)算機(jī)視覺等相關(guān)領(lǐng)域的一項(xiàng)重要技術(shù)。在眾多三角網(wǎng)中,Delaunay三角網(wǎng)比較特殊,具有空圓特性和最大最小角特性,保證了 Delaunay三角網(wǎng)中不會(huì)出現(xiàn)過于狹長的三角形,使得三角網(wǎng)的構(gòu)建更加合理與準(zhǔn)確。Delaunay三角網(wǎng)特有的優(yōu)點(diǎn)使其生成算法得到了較多的研究,目前常見的構(gòu)建Delaunay三角網(wǎng)的方法有逐點(diǎn)插入法、生長法及掃描線算法。逐點(diǎn)插入法和生長法是較早提出的Delaunay三角網(wǎng)算法,這兩種算法思路簡單,算法實(shí)現(xiàn)較為容易,但算法效率相對較低,只能滿足對算法速度要求不高的場合,這在一定程度上限制了它的應(yīng)用性。掃描線算法作為較經(jīng)典的Delaunay三角網(wǎng)生成算法,與常見插入法和生長法相比較大地提升了算法性能,一般情況下都能達(dá)到O(NlgN)的時(shí)間復(fù)雜度,由于其較高的構(gòu)網(wǎng)效率及較好的魯棒性,在一些工程及GIS相關(guān)領(lǐng)域中得到了推廣應(yīng)用。分治算法作為提升構(gòu)網(wǎng)效率的一種有效策略也被廣泛地用來生成Delaunay三角網(wǎng),其基本思想是:將離散點(diǎn)集合按照一定的規(guī)則從空間域劃分為多個(gè)子集合,在各個(gè)子集合中生成獨(dú)立的小范圍Delaunay三角網(wǎng),最后完成子網(wǎng)間的合并,構(gòu)成整體的Delaunay三角網(wǎng)。但是因?yàn)槊總€(gè)分組子集生成的Delaunay三角網(wǎng)外邊界是一個(gè)凸包,在現(xiàn)有的子網(wǎng)合并算法中,通常是基于子網(wǎng)間的凸包進(jìn)行合并,以凸包的上頂點(diǎn)和下頂點(diǎn)為基礎(chǔ),提取相鄰?fù)拱g的底線和頂線,即合并的起始線與終止線,合并過程中伴隨著三角形的刪除與生成。由于凸包邊界形態(tài)復(fù)雜,這類合并算法的處理需要較為細(xì)致,較容易產(chǎn)生裂縫和重疊三角形而導(dǎo)致最終構(gòu)網(wǎng)無法順利完成。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問題是:提出一種面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法,可以避免三角子網(wǎng)拼合過程中產(chǎn)生裂縫和重疊三角形,簡化Delaunay三角子網(wǎng)的拼合過程,從而提高Delaunay三角網(wǎng)構(gòu)網(wǎng)的效率。為了解決上述技術(shù)問題,本發(fā)明提出的技術(shù)方案是:一種面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法,包括以下步驟:第一步、對平面空間進(jìn)行矩形劃分得到若干互相拼接的矩形區(qū)域,將落在同一矩形區(qū)域內(nèi)的所有點(diǎn)作為該矩形區(qū)域的子點(diǎn)集合,在劃分的矩形頂點(diǎn)處插入角點(diǎn),并將該角點(diǎn)添加到與其相鄰的矩形區(qū)域的子點(diǎn)集合內(nèi);
第二步、分別對添加角點(diǎn)后的子點(diǎn)集合構(gòu)建Delaunay三角子網(wǎng);第三步、利用每個(gè)矩形區(qū)域的子點(diǎn)集合的四個(gè)角點(diǎn)將所有Delaunay三角子網(wǎng)進(jìn)行拼接,得到整個(gè)平面空間的Delaunay三角網(wǎng);第四步、從Delaunay三角網(wǎng)中刪除所述第一步中添加的角點(diǎn)以及與所述角點(diǎn)相關(guān)的Delaunay三角形;第五步、對Delaunay三角網(wǎng)進(jìn)行優(yōu)化,完成平面空間的Delaunay三角網(wǎng)構(gòu)網(wǎng);其中對Delaunay三角網(wǎng)進(jìn)行優(yōu)化的方法如下:若刪除的角點(diǎn)位于Delaunay三角網(wǎng)內(nèi)部,貝U尋找與所述角點(diǎn)組成Delaunay三角形邊的頂點(diǎn),順次連接這些頂點(diǎn)形成封閉的多邊形,并對該多邊形進(jìn)行Delaunay三角剖分;若刪除的角點(diǎn)位于Delaunay三角網(wǎng)邊界上,按照順時(shí)針或逆時(shí)針方向依次刪除邊界上插入的角點(diǎn),尋找與所述邊界插入的角點(diǎn)組成Delaunay三角形邊的頂點(diǎn),構(gòu)成待處理邊界點(diǎn)集,并執(zhí)行以下步驟:A、任取待處理邊界點(diǎn)集上的一點(diǎn)為起始點(diǎn);B、從起始點(diǎn)開始取待處理邊界點(diǎn)集中的連續(xù)三點(diǎn);C、若果以起始點(diǎn)和第二點(diǎn)形成的線段以及第二點(diǎn)和第三點(diǎn)形成的線段之間的夾角朝向Delaunay三角網(wǎng)的外側(cè),貝U連接起始點(diǎn)和第三點(diǎn),這三點(diǎn)形成一個(gè)Delaunay三角形,并轉(zhuǎn)至步驟D,否則執(zhí)行步驟E ;D、以第三點(diǎn)為第二點(diǎn),待處理邊界點(diǎn)集中的下一點(diǎn)為第三點(diǎn),重復(fù)執(zhí)行步驟C ;E、以待處理邊界點(diǎn)集的下一點(diǎn)為起始點(diǎn),重復(fù)執(zhí)行步驟B,直到待處理邊界點(diǎn)集中
最后一點(diǎn)結(jié)束。本發(fā)明的創(chuàng)新點(diǎn)在于:本發(fā)明將平面空間的Delaunay三角網(wǎng)構(gòu)網(wǎng)方法中傳統(tǒng)的分治算法的三個(gè)主要計(jì)算過程進(jìn)行了改進(jìn),創(chuàng)造性地將平面空間進(jìn)行了矩形劃分,并在生成子點(diǎn)集合的Delaunay三角子網(wǎng)時(shí)引入了矩形頂點(diǎn)作為角點(diǎn),減少了 Delaunay三角子網(wǎng)構(gòu)網(wǎng)過程中出現(xiàn)的異常情況,同時(shí)角點(diǎn)的引入也簡化了 Delaunay三角子網(wǎng)的拼合過程,大大提高了 Delaunay三角網(wǎng)構(gòu)網(wǎng)的效率。本發(fā)明還提出了一種以平面空間的矩形分片為基礎(chǔ),采用主從模式,對平面空間的Delaunay三角網(wǎng)構(gòu)網(wǎng)進(jìn)行并行化處理的方法,由主機(jī)完成耗時(shí)較少的平面空間的矩形劃分以及Delaunay三角子網(wǎng)的拼合及三角網(wǎng)優(yōu)化工作,而由從處理機(jī)完成耗時(shí)較大的生成子點(diǎn)集合的Delaunay三角子網(wǎng)工作,從而進(jìn)一步提高了 Delaunay三角網(wǎng)構(gòu)網(wǎng)的效率。本發(fā)明的面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法還可以平面空間的矩形分片為基礎(chǔ),采用主從模式,對第一步到第五步進(jìn)行并行化處理的具體方法為:①主機(jī)按照給定的分裂次數(shù)將平面空間進(jìn)行矩形劃分,在劃分的矩形頂點(diǎn)處插入角點(diǎn),并將該角點(diǎn)加入到與其相鄰矩形區(qū)域的子點(diǎn)集合內(nèi);②對于空閑的從處理機(jī),主機(jī)通過網(wǎng)絡(luò)通信為其分配一個(gè)子點(diǎn)集合,在從處理機(jī)上進(jìn)行Delaunay子三角網(wǎng)的計(jì)算,主處理機(jī)監(jiān)聽其運(yùn)行結(jié)果;③從處理機(jī)計(jì)算完畢,主處理機(jī)接收來自從處理機(jī)上的運(yùn)算結(jié)果,若主處理機(jī)上還有未分配的子點(diǎn)集合,則繼續(xù)給當(dāng)前從處理機(jī)分配數(shù)據(jù)處理任務(wù);④若所有子點(diǎn)集合已經(jīng)分配完成,且都通過從處理機(jī)運(yùn)算完畢,則主處理機(jī)進(jìn)行Delaunay三角子網(wǎng)的合并計(jì)算。本發(fā)明第一步中提供了一種使用基于柵格統(tǒng)計(jì)和二叉樹的自適應(yīng)矩形分片方法對平面空間進(jìn)行矩形劃分,具體方法如下:I)把平面空間劃分為M*N的柵格,對數(shù)據(jù)點(diǎn)集進(jìn)行遍歷,計(jì)算每個(gè)數(shù)據(jù)點(diǎn)所屬柵格的行列號,并統(tǒng)計(jì)每個(gè)柵格內(nèi)的數(shù)據(jù)點(diǎn)的數(shù)量,如果數(shù)據(jù)點(diǎn)恰好落在柵格線上,則取上側(cè)相鄰柵格的行號為該數(shù)據(jù)點(diǎn)所屬柵格的行號,取右側(cè)相鄰柵格的列號為該數(shù)據(jù)點(diǎn)所屬柵格的列號;2)若M>N,則在X方向上對列進(jìn)行檢索,當(dāng)前K列內(nèi)的總數(shù)據(jù)點(diǎn)數(shù)達(dá)到平面空間點(diǎn)集數(shù)量的一半時(shí),將平面空間在K列折半對分成兩個(gè)矩形,同時(shí)將M減半;若狀隊(duì)則在Y方向上對行進(jìn)行檢索,當(dāng)前L行內(nèi)的總點(diǎn)數(shù)達(dá)到點(diǎn)集數(shù)量的一半時(shí),將平面空間在L行折半對分成兩個(gè)矩形,同時(shí)將N減半;3)對步驟2)折半對分后的所有矩形使用如步驟2)同樣的方法進(jìn)一步折半對分,直到達(dá)到所需要的塊數(shù)。本發(fā)明在第二步中,對添加角點(diǎn)后的子點(diǎn)集合使用經(jīng)典的掃描線算法構(gòu)建Delaunay三角子網(wǎng)。本發(fā)明帶來的有益效果是:I)本發(fā)明針對面積較大的平面區(qū)域或者數(shù)據(jù)量較大的點(diǎn)集,采用矩形劃分,得到若干較小的矩形子點(diǎn)集合,再對子點(diǎn)集合進(jìn)行三角劃分,最后對三角劃分后的子點(diǎn)集合進(jìn)行拼合。經(jīng)過矩形劃分后大大減小了子點(diǎn)集合中數(shù)據(jù)點(diǎn)集的數(shù)量,提高了構(gòu)網(wǎng)效率,且每個(gè)子點(diǎn)集合的Delaunay三角網(wǎng)生成不受其他子點(diǎn)集合的影響,采用何種生成算法完成可以自由選擇,具有很大的靈活性。本發(fā)明將平面空間的Delaunay三角網(wǎng)構(gòu)網(wǎng)方法中傳統(tǒng)的分治算法的三個(gè)主要計(jì)算過程進(jìn)行了改進(jìn),創(chuàng)造性地將平面空間進(jìn)行了矩形劃分,并在生成子點(diǎn)集合的Delaunay三角子網(wǎng)時(shí)引入了矩形頂點(diǎn)作為角點(diǎn),減少了 Delaunay三角子網(wǎng)構(gòu)網(wǎng)過程中出現(xiàn)的異常情況,同時(shí)角點(diǎn)的引入也簡化了 Delaunay三角子網(wǎng)的拼合過程,大大提高了 Delaunay三角網(wǎng)構(gòu)網(wǎng)的效率。2)本發(fā)明將并行計(jì)算思想引入Delaunay三角網(wǎng)構(gòu)建方法中,以平面空間的矩形分片為基礎(chǔ),采用主從模式,對平面空間的Delaunay三角網(wǎng)構(gòu)網(wǎng)進(jìn)行并行化處理的方法,由主機(jī)完成耗時(shí)較少的平面空間的矩形劃分以及Delaunay三角子網(wǎng)的拼合及三角網(wǎng)優(yōu)化工作,而由從處理機(jī)完成耗時(shí)較大的生成子點(diǎn)集合的Delaunay三角子網(wǎng)工作,從而進(jìn)一步提高了 Delaunay三角網(wǎng)構(gòu)網(wǎng)的效率。
下面結(jié)合附圖對本發(fā)明的面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法作進(jìn)一步說明。圖1是本發(fā)明實(shí)施例建立柵格方法的示意圖。圖2是本發(fā)明實(shí)施例子點(diǎn)集合構(gòu)建Delaunay三角子網(wǎng)的示意圖。圖3是本發(fā)明實(shí)施例兩種角點(diǎn)類型的示意圖。圖4是本發(fā)明實(shí)施例對內(nèi)部角點(diǎn)優(yōu)化的示意圖。圖5是本發(fā)明實(shí)施例對邊界角點(diǎn)優(yōu)化的示意圖。
具體實(shí)施例方式實(shí)施例一本實(shí)施例的面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法,包括以下步驟:第一步、對平面空間進(jìn)行矩形劃分得到若干互相拼接的矩形區(qū)域,將落在同一矩形區(qū)域內(nèi)的所有點(diǎn)作為該矩形區(qū)域的子點(diǎn)集合,在劃分的矩形頂點(diǎn)處插入角點(diǎn),并將該角點(diǎn)添加到與其相鄰的矩形區(qū)域的子點(diǎn)集合內(nèi)。本實(shí)施例使用基于柵格統(tǒng)計(jì)和二叉樹的自適應(yīng)矩形分片方法,具體如下:I)如圖1所示,把平面空間劃分為M*N的柵格,對數(shù)據(jù)點(diǎn)集進(jìn)行遍歷,計(jì)算每個(gè)數(shù)據(jù)點(diǎn)所屬柵格的行列號,并統(tǒng)計(jì)每個(gè)柵格內(nèi)的數(shù)據(jù)點(diǎn)的數(shù)量,如果數(shù)據(jù)點(diǎn)恰好落在柵格線上,則取上側(cè)相鄰柵格的行號為該數(shù)據(jù)點(diǎn)所屬柵格的行號,取右側(cè)相鄰柵格的列號為該數(shù)據(jù)點(diǎn)所屬柵格的列號;2)若M>N,則在X方向上對列進(jìn)行檢索,當(dāng)前K列內(nèi)的總數(shù)據(jù)點(diǎn)數(shù)達(dá)到平面空間點(diǎn)集數(shù)量的一半時(shí),將平面空間在K列折半對分成兩個(gè)矩形,同時(shí)將M減半;若狀隊(duì)則在Y方向上對行進(jìn)行檢索,當(dāng)前L行內(nèi)的總點(diǎn)數(shù)達(dá)到點(diǎn)集數(shù)量的一半時(shí),將平面空間在L行折半對分成兩個(gè)矩形,同時(shí)將N減半;3)對步驟2)折半對分后的所有矩形使用如步驟2)同樣的方法進(jìn)一步折半對分,直到達(dá)到所需要的塊數(shù)。本實(shí)施例由于事先統(tǒng)計(jì)了每個(gè)柵格內(nèi)點(diǎn)的數(shù)量,故隨著列數(shù)的增加可較快速地動(dòng)態(tài)更新前K列的總點(diǎn)數(shù),不需對點(diǎn)集進(jìn)行重新遍歷。整個(gè)平面空間點(diǎn)集劃分過程實(shí)際上是對柵格進(jìn)行“空間劃分”,再把柵格劃分的結(jié)果,理解為平面空間點(diǎn)集劃分的結(jié)果,每一個(gè)子塊就是一個(gè)矩形分片。這種劃分是對平面空間點(diǎn)集的粗糙劃分,但粗糙程度可人為控制,當(dāng)柵格單元足夠小時(shí),基本可看作精確劃分。第二步、分別對添加角點(diǎn)后的子點(diǎn)集合構(gòu)建Delaunay三角子網(wǎng),如圖2所示即為一個(gè)子點(diǎn)集合的Delaunay三角子網(wǎng)。本實(shí)施例使用經(jīng)典的掃描線算法構(gòu)建Delaunay三角子網(wǎng)。第三步、利用每個(gè)矩形區(qū)域的子點(diǎn)集合的四個(gè)角點(diǎn)將所有Delaunay三角子網(wǎng)進(jìn)行拼接,得到整個(gè)平面空間的Delaunay三角網(wǎng)。本實(shí)施例將每個(gè)矩形區(qū)域的四個(gè)角點(diǎn)添加到三角子網(wǎng)的構(gòu)建過程中,生成的三角子網(wǎng)均為規(guī)則的矩形區(qū)域,因此只需將子網(wǎng)按照相對順序進(jìn)行拼接即可得到整網(wǎng)。第四步、從Delaunay三角網(wǎng)中刪除所述第一步中添加的角點(diǎn)以及與所述角點(diǎn)相關(guān)的Delaunay三角形。第五步、對Delaunay三角網(wǎng)進(jìn)行優(yōu)化,完成平面空間的Delaunay三角網(wǎng)構(gòu)網(wǎng)。本實(shí)施例由于將劃分后矩形的四個(gè)角點(diǎn)添加到三角子網(wǎng)的構(gòu)建過程中,生成的三角子網(wǎng)均為規(guī)則的矩形區(qū)域,因此只需將三角子網(wǎng)按照相對順序進(jìn)行拼接即可得到整網(wǎng),但是引入的矩形的角點(diǎn)并不屬于原始的平面空間點(diǎn)集,得到的整網(wǎng)與最終的三角網(wǎng)存在一些差異,需在添加的角點(diǎn)處做相關(guān)處理,進(jìn)而得到最終的三角網(wǎng)。如圖3所示,本實(shí)施例引入的矩形角點(diǎn)可以分為兩種類型,一種是整網(wǎng)內(nèi)部的矩形角點(diǎn),如點(diǎn)Cl、C2、C3等;另一種是整網(wǎng)邊界上的矩形角點(diǎn),如點(diǎn)El、E2、E3等,對這兩種矩形角點(diǎn)需進(jìn)行不同的處理。本實(shí)施例對Delaunay三角網(wǎng)進(jìn)行優(yōu)化的方法如下:若刪除的角點(diǎn)位于Delaunay三角網(wǎng)內(nèi)部,貝U尋找與所述角點(diǎn)組成Delaunay三角形邊的頂點(diǎn),順次連接這些頂點(diǎn),形成封閉的多邊形,并對該多邊形進(jìn)行Delaunay三角剖分。如圖3中矩形A自身的四個(gè)角點(diǎn)CpC2X4和C5分別在相鄰矩形的邊上,而相鄰矩形的角點(diǎn)C3和C6則在分組A的邊上。一般情況下,每個(gè)角點(diǎn)所在的邊呈“T”字型分布,即每個(gè)角點(diǎn)對應(yīng)三個(gè)矩形分區(qū)。在構(gòu)建子點(diǎn)集合的Delaunay三角子網(wǎng)時(shí),需要加入四個(gè)角點(diǎn)作為子點(diǎn)集合的內(nèi)部點(diǎn)參與Delaunay三角子網(wǎng)的運(yùn)算。如圖4所示,生成Delaunay三角子網(wǎng)后某角點(diǎn)及其對應(yīng)的多邊形,矩形分區(qū)有A、B、C三組,點(diǎn)O為三個(gè)矩形分區(qū)的公共角點(diǎn)。雖然各個(gè)三角子網(wǎng)已經(jīng)完成了無縫拼接,然而角點(diǎn)O是人為加入的一點(diǎn),改變了原始構(gòu)網(wǎng)的結(jié)果,需要摳除,并同時(shí)刪除與該角點(diǎn)相關(guān)的三角形,從而得到一個(gè)凹多邊形即為刪除三角形所覆蓋的區(qū)域,對該多邊形進(jìn)行三角剖分就構(gòu)成了 一張完整的三角網(wǎng)。若刪除的角點(diǎn)位于Delaunay三角網(wǎng)邊界上,按照順時(shí)針或逆時(shí)針方向依次刪除邊界上插入的角點(diǎn),尋找與所述邊界插入的角點(diǎn)組成Delaunay三角形邊的頂點(diǎn),構(gòu)成待處理邊界點(diǎn)集,并執(zhí)行以下步驟:A、任取待處理邊界點(diǎn)集上的一點(diǎn)為起始點(diǎn);B、從起始點(diǎn)開始取待處理邊界點(diǎn)集中的連續(xù)三點(diǎn);C、若果以起始點(diǎn)和第二點(diǎn)形成的線段以及第二點(diǎn)和第三點(diǎn)形成的線段之間的夾角朝向Delaunay三角網(wǎng)的外側(cè),貝U連接起始點(diǎn)和第三點(diǎn),這三點(diǎn)形成一個(gè)Delaunay三角形,并轉(zhuǎn)至步驟D,否則執(zhí)行步驟E ;如圖5中所示,線段AB和BC夾角朝向Delaunay三角網(wǎng)的外側(cè),那么就構(gòu)造新三角形,即連接第一點(diǎn)和第三點(diǎn)(連接AC);而相反地,圖5中B、C、D
三點(diǎn)就無需處理。D、以第三點(diǎn)為第二點(diǎn),待處理邊界點(diǎn)集中的下一點(diǎn)為第三點(diǎn),重復(fù)執(zhí)行步驟C ;E、以待處理邊界點(diǎn)集的下一點(diǎn)為起始點(diǎn),重復(fù)執(zhí)行步驟B,直到待處理邊界點(diǎn)集中最后一點(diǎn)結(jié)束。實(shí)施例二本實(shí)施例是在實(shí)施例一基礎(chǔ)上的改進(jìn),其不同之處在于:本實(shí)施例以平面空間的矩形分片為基礎(chǔ),采用主從模式,對實(shí)施例一中的第一步到第五步進(jìn)行并行化處理,具體方法為:①主機(jī)按照給定的分裂次數(shù)將平面空間進(jìn)行矩形劃分,在劃分的矩形頂點(diǎn)處插入角點(diǎn),并將該角點(diǎn)加入到與其相鄰矩形區(qū)域的子點(diǎn)集合內(nèi);②對于空閑的從處理機(jī),主機(jī)通過網(wǎng)絡(luò)通信為其分配一個(gè)子點(diǎn)集合,在從處理機(jī)上進(jìn)行Delaunay子三角網(wǎng)的計(jì)算,主處理機(jī)監(jiān)聽其運(yùn)行結(jié)果;③從處理機(jī)計(jì)算完畢,主處理機(jī)接收來自從處理機(jī)上的運(yùn)算結(jié)果,若主處理機(jī)上還有未分配的子點(diǎn)集合,則繼續(xù)給當(dāng)前從處理機(jī)分配數(shù)據(jù)處理任務(wù);④若所有子點(diǎn)集合已經(jīng)分配完成,且都通過從處理機(jī)運(yùn)算完畢,則主處理機(jī)進(jìn)行Delaunay三角子網(wǎng)的合并計(jì)算。
本實(shí)施例由主機(jī)完成耗時(shí)較少的平面空間的矩形劃分以及Delaunay三角子網(wǎng)的拼合及三角網(wǎng)優(yōu)化工作,而由從處理機(jī)完成耗時(shí)較大的生成子點(diǎn)集合的Delaunay三角子網(wǎng)工作,從而進(jìn)一步提高了 Delaunay三角網(wǎng)構(gòu)網(wǎng)的效率。本實(shí)施例在進(jìn)行平面空間點(diǎn)集的矩形的并行計(jì)算時(shí),由于添加角點(diǎn)的數(shù)量遠(yuǎn)小于原始子點(diǎn)集合內(nèi)點(diǎn)的數(shù)量,對子網(wǎng)生成效率的影響完全可以忽略。假設(shè)平面空間點(diǎn)集數(shù)目為N,設(shè)定分裂次數(shù)為L,經(jīng)矩形劃分后各個(gè)分組子點(diǎn)集合的數(shù)目約為N/2L,由于引入角點(diǎn)的相關(guān)操作對構(gòu)網(wǎng)效率影響極小,故單個(gè)子點(diǎn)集合采用掃描線算法構(gòu)網(wǎng)的時(shí)間效率仍可近似達(dá)到 0(N/2Llg(N/2L))。本實(shí)施例假定從處理機(jī)的個(gè)數(shù)為P,在進(jìn)行并行計(jì)算時(shí)需要分兩種情況分析時(shí)間復(fù)雜度:若從處理機(jī)個(gè)數(shù)P大于分組總數(shù)2L,此時(shí)子處理機(jī)可一次性為所有的子點(diǎn)集合構(gòu)建Delaunay三角網(wǎng),其算法復(fù)雜度仍近似為0(N/2Llg(N/2L));當(dāng)子處理機(jī)數(shù)目遠(yuǎn)小于子點(diǎn)集合數(shù)目時(shí),每個(gè)子處理機(jī)需要處理多個(gè)子點(diǎn)集合,因?yàn)槊拷M子點(diǎn)集合中點(diǎn)集數(shù)目大致相等,其算法處理時(shí)間可以近似看作相等,此時(shí)每個(gè)子處理機(jī)的總處理次數(shù)約為(2L/P+l) ≈ 2L/P,則子點(diǎn)集合并行計(jì)算階段的總體算法復(fù)雜度近似為0((N/2Llg(N/2L)*(2L/P))=0(N/Plg(N/2L))。本實(shí)施例的面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法,思路清晰,構(gòu)網(wǎng)過程靈活,可根據(jù)平面空間點(diǎn)集的分布情況靈活設(shè)置柵格的行列數(shù),針對平面空間點(diǎn)集的數(shù)量及子處理機(jī)的個(gè)數(shù)靈活設(shè)定平面空間點(diǎn)集分裂的次數(shù)可較大程度地提升構(gòu)網(wǎng)的效率,在并行計(jì)算環(huán)境下時(shí)間效率較優(yōu)。本發(fā)明的面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法不局限于上述實(shí)施例所述的具體技術(shù)方案,凡采用等同替換形成的技術(shù)方案均為本發(fā)明要求的保護(hù)范圍。
權(quán)利要求
1.一種面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法,包括以下步驟: 第一步、對平面空間進(jìn)行矩形劃分得到若干互相拼接的矩形區(qū)域,將落在同一矩形區(qū)域內(nèi)的所有點(diǎn)作為該矩形區(qū)域的子點(diǎn)集合,在劃分的矩形頂點(diǎn)處插入角點(diǎn),并將該角點(diǎn)添加到與其相鄰的矩形區(qū)域的子點(diǎn)集合內(nèi); 第二步、分別對添加角點(diǎn)后的子點(diǎn)集合構(gòu)建Delaunay三角子網(wǎng); 第三步、利用每個(gè)矩形區(qū)域的子點(diǎn)集合的四個(gè)角點(diǎn)將所有Delaunay三角子網(wǎng)進(jìn)行拼接,得到整個(gè)平面空間的Delaunay三角網(wǎng); 第四步、從Delaunay三角網(wǎng)中刪除所述第一步中添加的角點(diǎn)以及與所述角點(diǎn)相關(guān)的Delaunay三角形; 第五步、對Delaunay三角網(wǎng)進(jìn)行優(yōu)化,完成平面空間的Delaunay三角網(wǎng)構(gòu)網(wǎng);其中對Delaunay三角網(wǎng)進(jìn)行優(yōu)化的方法如下: 若刪除的角點(diǎn)位于Delaunay三角網(wǎng)內(nèi)部,貝U尋找與所述角點(diǎn)組成Delaunay三角形邊的頂點(diǎn),順次連接這些頂點(diǎn)形成封閉的多邊形,并對該多邊形進(jìn)行Delaunay三角剖分; 若刪除的角點(diǎn)位于Delaunay三角網(wǎng)邊界上,按照順時(shí)針或逆時(shí)針方向依次刪除邊界上插入的角點(diǎn),尋找與所述邊界插入的角點(diǎn)組成DeIaunay三角形邊的頂點(diǎn),構(gòu)成待處理邊界點(diǎn)集,并執(zhí)行以下步驟: A、任取待處理邊界 點(diǎn)集上的一點(diǎn)為起始點(diǎn); B、從起始點(diǎn)開始取待處理邊界點(diǎn)集中的連續(xù)三點(diǎn); C、若果以起始點(diǎn)和第二點(diǎn)形成的線段以及第二點(diǎn)和第三點(diǎn)形成的線段之間的夾角朝向Delaunay三角網(wǎng)的外側(cè),貝U連接起始點(diǎn)和第三點(diǎn),這三點(diǎn)形成一個(gè)Delaunay三角形,并轉(zhuǎn)至步驟D,否則執(zhí)行步驟E ; D、以第三點(diǎn)為第二點(diǎn),待處理邊界點(diǎn)集中的下一點(diǎn)為第三點(diǎn),重復(fù)執(zhí)行步驟C; E、以待處理邊界點(diǎn)集的下一點(diǎn)為起始點(diǎn),重復(fù)執(zhí)行步驟B,直到待處理邊界點(diǎn)集中最后一點(diǎn)結(jié)束。
2.根據(jù)權(quán)利要求1所述的面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法,其特征在于,以平面空間的矩形分片為基礎(chǔ),采用主從模式,對第一步到第五步進(jìn)行并行化處理,具體方法為: ①主機(jī)按照給定的分裂次數(shù)將平面空間進(jìn)行矩形劃分,在劃分的矩形頂點(diǎn)處插入角點(diǎn),并將該角點(diǎn)加入到與其相鄰矩形區(qū)域的子點(diǎn)集合內(nèi); ②對于空閑的從處理機(jī),主機(jī)通過網(wǎng)絡(luò)通信為其分配一個(gè)子點(diǎn)集合,在從處理機(jī)上進(jìn)行Delaunay子三角網(wǎng)的計(jì)算,主處理機(jī)監(jiān)聽其運(yùn)行結(jié)果; ③從處理機(jī)計(jì)算完畢,主處理機(jī)接收來自從處理機(jī)上的運(yùn)算結(jié)果,若主處理機(jī)上還有未分配的子點(diǎn)集合,則繼續(xù)給當(dāng)前從處理機(jī)分配數(shù)據(jù)處理任務(wù); ④若所有子點(diǎn)集合已經(jīng)分配完成,且都通過從處理機(jī)運(yùn)算完畢,則主處理機(jī)進(jìn)行Delaunay三角子網(wǎng)的合并計(jì)算。
3.根據(jù)權(quán)利要求1所述的面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法,其特征在于,第一步中,使用基于柵格統(tǒng)計(jì)和二叉樹的自適應(yīng)矩形分片方法對平面空間進(jìn)行矩形劃分,具體方法如下:1)把平面空間劃分為M*N的柵格,對數(shù)據(jù)點(diǎn)集進(jìn)行遍歷,計(jì)算每個(gè)數(shù)據(jù)點(diǎn)所屬柵格的行列號,并統(tǒng)計(jì)每個(gè)柵格內(nèi)的數(shù)據(jù)點(diǎn)的數(shù)量,如果數(shù)據(jù)點(diǎn)恰好落在柵格線上,則取上側(cè)相鄰柵格的行號為該數(shù)據(jù)點(diǎn)所屬柵格的行號,取右側(cè)相鄰柵格的列號為該數(shù)據(jù)點(diǎn)所屬柵格的列號; 2)若M>N,則在X方向上對列進(jìn)行檢索,當(dāng)前K列內(nèi)的總數(shù)據(jù)點(diǎn)數(shù)達(dá)到平面空間點(diǎn)集數(shù)量的一半時(shí),將平面空間在K列折半對分成兩個(gè)矩形,同時(shí)將M減半;若M〈N,則在Y方向上對行進(jìn)行檢索,當(dāng)前L行內(nèi)的總點(diǎn)數(shù)達(dá)到點(diǎn)集數(shù)量的一半時(shí),將平面空間在L行折半對分成兩個(gè)矩形,同時(shí)將N減半; 3)對步驟2)折半對分后的所有矩形使用如步驟2)同樣的方法進(jìn)一步折半對分,直到達(dá)到所需要的塊數(shù)。
4.根據(jù)權(quán)利要求1所述的面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法,其特征在于,第二步中,對添加角點(diǎn)后的子點(diǎn)集合使用經(jīng)典的掃描線算法構(gòu)建Delaunay三 角子網(wǎng)。
全文摘要
本發(fā)明涉及一種面向海量點(diǎn)云數(shù)據(jù)的基于矩形拼合的Delaunay三角網(wǎng)并行構(gòu)網(wǎng)方法,該方法包括以下步驟:第一步、對平面空間進(jìn)行矩形劃分得到若干互相拼接的矩形區(qū)域,將落在同一矩形區(qū)域內(nèi)的所有點(diǎn)作為該矩形區(qū)域的子點(diǎn)集合,在劃分的矩形頂點(diǎn)處插入角點(diǎn),并將該角點(diǎn)添加到與其相鄰的矩形區(qū)域的子點(diǎn)集合內(nèi);第二步、分別對添加角點(diǎn)后的子點(diǎn)集合構(gòu)建Delaunay三角子網(wǎng);第三步、利用每個(gè)矩形區(qū)域的子點(diǎn)集合的四個(gè)角點(diǎn)將所有Delaunay三角子網(wǎng)進(jìn)行拼接,得到整個(gè)平面空間的Delaunay三角網(wǎng);第四步、從Delaunay三角網(wǎng)中刪除所述第一步中添加的角點(diǎn)以及與所述角點(diǎn)相關(guān)的Delaunay三角形;第五步、對Delaunay三角網(wǎng)進(jìn)行優(yōu)化,完成平面空間的Delaunay三角網(wǎng)構(gòu)網(wǎng)。該方法可以簡化Delaunay三角子網(wǎng)的拼合過程,提高Delaunay三角網(wǎng)構(gòu)網(wǎng)的效率。
文檔編號G06F17/30GK103092933SQ20131000374
公開日2013年5月8日 申請日期2013年1月6日 優(yōu)先權(quán)日2013年1月6日
發(fā)明者王結(jié)臣, 芮一康, 伍鐘潔, 陶偉東, 倪皓晨 申請人:南京大學(xué)