會與其所屬的各個面立方體集合的公共面相交。下面將在步驟Yl至Y8中 參照圖5詳細(xì)闡明步驟M4。
[0038] M5.為每一面立方體集合創(chuàng)建面邊界立方體集合。它由面立方體集合邊界上的全 部立方體組成。下面將在步驟Xl至XlO中參照圖6詳細(xì)闡明步驟M5。
[0039] M6.利用屬于面邊界立方體集合的立方體的邊緣,圍繞每一面立方體集合的外部 并且圍繞面立方體集合內(nèi)部的全部空洞,依序跟蹤面立方體集合的邊界多邊形。下面將在 步驟Zl至Z21中參照圖7詳細(xì)闡明步驟M6。
[0040] M7.為每一邊界多邊形的每一邊緣估計云邊界點。有別于其邊緣位于立方體表面 的邊界多邊形,每一云邊界點的位置均接近投射至每一面立方體集合公共面上的點云點的 凸殼。按照云邊界點遇到在步驟16算出的每一單獨邊界多邊形的順序存儲云邊界點。下 面將在步驟Ul至Ull中參照圖8詳細(xì)闡明步驟M7。
[0041] M8.若任何云邊界點的位置充分接近其公共面與另一面立方體集合的公共面的相 交處,則將云邊界點的位置移至相交線上的最近點。若云邊界點的位置充分接近于一個以 上平面的相交處,則將云邊界點移至相交處的最近線。下面將在步驟Vl至V14中參照圖9 詳細(xì)闡明步驟M8。
[0042] M9.將邊界多邊形的邊緣轉(zhuǎn)換為由依序的不同云邊界點組成的多段線,在步驟M8 結(jié)束時存儲這些云邊界點的順序。對每一邊界多邊形創(chuàng)建單獨的多段線。
[0043] M10.將其線大致共線的相鄰共線立方體整合,以形成線立方體集合。每一線立方 體集合均與稱作立方體集合公共線的單一數(shù)學(xué)直線相關(guān)。在步驟MlO結(jié)束時,各共線立方 體將確切僅屬于一個線立方體集合。每一線立方體集合將包含一個或多個共線立方體。下 面將在步驟Wl至W24中參照圖10詳細(xì)闡明步驟M10。
[0044] Mil.如下所述,使每一線立方體集合平整化。若任一共線立方體未與其線立方體 集合的公共線相交,則將該立方體移出線立方體集合并將其全部點都投射至公共線上。若 任一投影點位于尚未屬于線立方體集合的立方體中,則將該立方體添加至線立方體集合。 這表示,在步驟Mll結(jié)束時,線立方體集合可能包含在步驟M2中并未分類為共線的立方體。 立方體可能同樣歸屬于一個以上線立方體集合(立方體確實可能同時屬于線立方體集合 和面立方體集合)。然而,任何屬于一個以上線立方體集合的立方體都將與其所屬的各個線 立方體集合的公共線相交。下面將在步驟Tl至T8中參照圖11詳細(xì)闡明步驟Mil。
[0045] M12.標(biāo)識每一線立方體集合的公共線上的一個以上線段的端點。下面將在步驟 Sl至S17中參照圖12詳細(xì)闡明步驟M12。正如前述,該過程的最終結(jié)果是產(chǎn)生邊界分明的 多邊形以及其他線段。還可進(jìn)行進(jìn)一步處理,其中將滿足特殊要求的相鄰多邊形邊界標(biāo)識 為確定部分對象邊緣。通過這種方式整合越來越多的多邊形且利用充足的數(shù)據(jù),由此可重 建整個三維對象。實現(xiàn)這一過程之后,可將對象標(biāo)識為主要特征,并且可為3D模型的用戶 提供有關(guān)主要特征數(shù)量及位置的數(shù)據(jù)以及其他相關(guān)信息。直接從點云數(shù)據(jù)標(biāo)識或比較對象 的效率極低。例如,若對象的點云包含~IO 6個點,則比較兩個這樣的對象需要~10 12次計 算(每一次計算將一個對象的點云點與另一對象的相似點數(shù)的點云點相比較)。與此相反, 若通過由少量多邊形(例如~100)組成的模型表示同一對象,所需計算的次數(shù)則大幅減少 (~10000),從而處理過程在計算方面十分高效。在街景模型中,公共街道設(shè)施物品可能通 過其形狀(多邊形組合)得以甄別。還可將其替換為精確的虛擬模型或利益相關(guān)方可提取 有關(guān)街道設(shè)施位置的數(shù)據(jù)。為產(chǎn)生三維圖像,若可使用平行攝影圖像,則由此導(dǎo)出的圖像部 分可能與每一用作表面填充的多邊形有關(guān)。
[0046] 圖3是M2的流程圖,示出下述步驟Al至A7,其將每一立方體(在步驟Ml中創(chuàng)建) 分類為空白(立方體不含任何點)、重合(立方體的全部點都大致位于相同位置)、共面(立 方體的全部點都大致位于同一平面內(nèi))、共線(立方體的全部點都大致位于同一直線上)或 空間填充。應(yīng)指出,只要點云點恰好位于兩個以上立方體之間的表面或頂點上,則這些立方 體中僅有一個被認(rèn)定為包含該點。
[0047] 數(shù)學(xué)中面和線的厚度為零。由于點云會存在測量誤差及其他攝動(統(tǒng)稱為擾動), 因此點云點自身可能與其所代表的實際數(shù)學(xué)面或線相距一小段距離。考慮到這一點,在步 驟Al至A9中所述的計算運用到厚度公差。其最佳值取決于點云的精確度。
[0048] 協(xié)方差矩陣定義為:V=-厶Ι.Χ -Α?(χ -心 ^ k=i
[0049] 其中η為立方體中點云點的數(shù)目,和為全部這些點;其中
[0050] 分類過程如下所述:
[0051] Al.在非空立方體列表中選取第一立方體。
[0052] A2.利用雅可比方法或任何其他有效方法,用計算機計算立方體內(nèi)所含的點云點 的協(xié)方差矩陣的三個特征值。將全部負(fù)特征值設(shè)定為零。若在立方體中恰好僅有一點,則 將三個特征值全部設(shè)定為零。
[0053] A3.若全部特征值都小于厚度閾值,則將立方體分類為重合,轉(zhuǎn)至步驟A7。在立方 體中全部點都大致重合時,便出現(xiàn)這種情況。
[0054] A4.若僅有兩個特征值小于厚度閾值,則將立方體分類為共線,轉(zhuǎn)至步驟A7。在立 方體中全部點都大致位于同一數(shù)學(xué)線上時,便出現(xiàn)這種情況。
[0055] A5.若僅有一個特征值小于厚度閾值,則將立方體分類為共面,轉(zhuǎn)至步驟A7。在立 方體中全部點都大致位于同一數(shù)學(xué)面上時,便出現(xiàn)這種情況。
[0056] A6.將立方體分類為空間填充。在非空立方體并非重合、共線或共面時,便出現(xiàn)這 種情況。
[0057] A7.若立方體是列表中的最后一個立方體,則停止。
[0058] A8.選擇列表中的下一立方體,轉(zhuǎn)至步驟A2。
[0059] 圖4是步驟M3的流程圖,具體示出下述步驟Bl至B24,其在公共面上形成相鄰共 面立方體的集合。以這種方式形成的共面立方體的每一集合均稱為面立方體集合。計算累 加面立方體集合中點的數(shù)目= Σ"/,其中ηι是共面立方體1中點的數(shù)目。計算還累加點 云點的總!,并 V !ξ=1
I .-/C=I 且在這兩種情況下,總和為面立方體集合內(nèi)全部共面立方體1中的全部點云點,其中χ(Μ) =(Xkl,Ykl,Zkl)是共面立方體1中的第k個點云點。
[0060] 可通過.? = <和F = 森3H十算出面立方體集合內(nèi)全部共面立方體中的點云 點的平均值$及協(xié)方差矩陣V。
[0061] 同理,可通i
計算出共面立方體1中點云點 的平均值Jpi及協(xié)方差矩陣v(1)。
[0062] 穿過共面立方體1中全部點云點的數(shù)學(xué)面的方程式為= 其中 u(1)為垂直于平面的單位向量,其等于協(xié)方差矩陣V (1)的特征向量,該特征向量對應(yīng)于協(xié)方 差矩陣v(1)的唯一最小特征值。
[0063] 同理,穿過面立方體集合內(nèi)全部立方體中全部點云點的數(shù)學(xué)面的方程式為 #〇-f) =Q,其中u為垂直于公共面的單位向量,其等于累加協(xié)方差矩陣V的特征向量,該 特征向量對應(yīng)于協(xié)方差矩陣V的唯一最小特征值。
[0064] 在步驟B14及B21中,所述方法將當(dāng)前的累加公共面與擬合穿過當(dāng)前共面立方體 1的平面相比較,以確定兩平面是否共面。在這兩個步驟中使用不同的標(biāo)準(zhǔn)。
[0065] 標(biāo)準(zhǔn)A用于步驟B14且規(guī)定uTu(1)> cos Θ。,其確保兩平面間的角度小于Θ?;《龋?并規(guī)定-幻I <名,其確保平均值$的與累加公共面的距離小于Cl1距離單位。
[0066] 其中第二條件的幾何圖形如圖13所示,圖13是包含?及的兩平面的橫截 面。線AB表示累加公共面的橫截面,線K 1L1表示特定當(dāng)前立方體平面的橫截面。點X 是累加公共面的平均值? ,點Y1是當(dāng)前面的平均值.W1 ,從而ZF1 =?(/1 -i。?1是橫截面 AB上距離近的點,從而YjIj AB的距離為長度Ip1Y1U若z P1Y1X = Φ,則Ip1Y1 =IXY1Ic0SiK由于P1Y1垂直于AB,由此推斷XY 1與法線u之間的角度亦為Φ,由此 1) = [^|_:參=[%|是#到累加公共面的距離。在圖13中,短劃線K2L2表示另 一當(dāng)前立方體平面的橫截面。Y2是妙;在這一其他當(dāng)前立方體實例中的位置。匕是¥2到AB 上的垂足點,從而在這種情況下,到累加公共面的距離為P2Y2。虛線麗平行于AB且到 AB的距離為Cl1。由此推斷,Y1視為充分接近AB,而Y 2則并非如此。
[0067] 標(biāo)準(zhǔn)B用于步驟B21且規(guī);
,其確保共面立方體1中的每 一點x(M)到公共面的平均平方距離小于d2距離單位。
[0068] 平面形成過程的實際步驟如下:
[0069] BI.創(chuàng)建未使用的立方體列表,其包含在步驟M2中標(biāo)識的全部共面立方體。在該 列表中的任意立方體均稱為未使用立方體。
[0070] B2.若未使用列表為空,則停止。
[0071] B3.創(chuàng)建稱作面立方體集合的空白立方體列表。該面立方體集合將擴展為包含面 立方體集合中立方體公共面上的全部共面立方體。最終,當(dāng)前處于未使用立方體列表中的 各立方體均將移至面立方體集合中,即便在該面立方體集合僅包含唯一立方體的情況下亦 然。
[0072] B4.將當(dāng)前立方體設(shè)定為未使用立方體列表中的第一立方體。
[0073] B5.創(chuàng)建稱作候選列表的空白立方體列表。該列表會包含視為納入面立方體集合 的候補者的未使用共面立方體。
[0074] B6.創(chuàng)建稱作特殊列表的空白立方體列表。該列表會包含新近拒為納入面立方體 集合的候補者的未使用共面立方體。
[0075] B7.將當(dāng)前立方體從未使用列表移入面立方體集合。因而,各面立方體集合均包含 至少一個立方體。
[0076] B8.將面立方體集合中點的總數(shù)設(shè)定為等于當(dāng)前立方體中點的總數(shù)。
[0077] B9.將面立方體集合中點的外積和設(shè)定為等于當(dāng)前立方體中點的外積和。
[0078] B10.將未使用列表中的當(dāng)前立方體的全部相鄰立方體都添加至候補列表。在此, 若立方體與當(dāng)前立方體共享表面或頂點,則其即為當(dāng)前立方體的相鄰者。
[0079] BlL若候補列表為空,則轉(zhuǎn)至步驟B18。
[0080] B12.將當(dāng)前立方體設(shè)定為候補列表中的第一立方體。
[0081] B13.將當(dāng)前立方體移出候補列表。
[0082] B14.若當(dāng)前立方體并未達(dá)到標(biāo)準(zhǔn)A,則將該當(dāng)前立方體添加至特殊列表,轉(zhuǎn)至步 驟 B11。
[0083] B15.將當(dāng)前立方體從未使用列表移至面立方體集合。
[0084] B16.將當(dāng)前立方體1中點的總數(shù)S1添加至面立方體集合中點的累加