這些步驟應用于計算云邊界 點的位置。步驟Ul至Ull應用于在步驟M6算出的每一單獨的邊界多邊形。應指出,在步 驟U4和U8規(guī)定的節(jié)點A和B可以在步驟M6存儲或者可通過比較邊界多邊形中前一邊緣 與下一邊緣的頂點推導得出。
[0143] UL將當前邊緣設定為邊界多邊形中的第一邊緣。
[0144] U2.將當前立方體設定為當前邊緣所在的立方體。在跟蹤邊界多邊形時,已在步驟 10存儲任一邊緣所在立方體的標識。立方體是面立方體集合的成員。
[0145] U3.將居首的邊緣設定為當前邊緣。
[0146] U4.將P設定為當前邊緣的A節(jié)點。
[0147] U5.若當前邊緣未邊界多邊形中的最后一邊緣,則轉(zhuǎn)至步驟U8。
[0148] U6.從邊界多邊形獲取下一邊緣。
[0149] U7.若下一邊緣位于當前立方體中,則將當前邊緣設定為下一邊緣,轉(zhuǎn)至步驟U6。 在跟蹤邊界多邊形時,已在步驟10存儲任一邊緣所在立方體的標識。重復步驟U6和U7,直 至當前邊緣為當前立方體中的最后一邊緣。
[0150] U8.將Q設定為當前邊緣的B節(jié)點。
[0151] U9.將云邊界點設定為到線PQ的有向距離最大的投影點云點。利用步驟Y4的公 式將點云點投射至平面。可通過dk= V T(p(k)_q)計算投影點p(k)的有向距離d k,其中q為 線PQ中的任意點(最簡單為P或Q),其中V是到PQ的法線,位于公共面內(nèi)并具單位長度。 應指出,-V同樣滿足這些條件。通過測定4對當前正交多邊形的任意頂點(同樣也是邊界 多邊形的頂點)非負以及4對任何其他頂點非正,做出對V和-V的正確選擇。相交多邊 形始終存在至少一個d k在其上非零的頂點,從而其標志可以得到區(qū)分。步驟U9的幾何圖 形如圖17至19所示。在這三個附圖中,相交多邊形為PCQBA,邊界多邊形的邊緣為QB、BA 和AP。唯有頂點C并不位于邊界多邊形上。如圖所示,法向量V指向dk必然增大的方向。 由陰影部分表示點云。使有向距離最大化的投影點云點標記為X,KL是穿過X并平行于PQ 的線。
[0152] U10.若在相交多邊形內(nèi)還有其他投影點云點接近穿過云邊界點且平行于PQ的直 線,則將云邊界點設定為充分接近穿過在步驟U9中算出的云邊界點位置的平行線的全部 投影點云點的平均數(shù)。在此,"充分接近"意指全部投影點云點到平行線的距離小于特定公 差,其所占比例很小,如分辨率的四分之一或十分之一。步驟UlO的幾何圖形如圖19所示, 其中KL為投影點云的邊緣。假設點云點均勻分布,則在PCQBA內(nèi)充分接近KL的點的平均 點大約會在X。
[0153] UlL若當前邊緣并非邊界多邊形中的最后一邊緣,則將當前邊緣設定為邊界多邊 形中的下一邊緣,轉(zhuǎn)至步驟U2,反之則停止。
[0154] 圖9是步驟M8的流程圖,具體示出步驟Vl至V14,這些步驟應用于將云邊界點移 至成對公共面之間的交線。
[0155] VI.創(chuàng)建全部面立方體集合的公共面的列表。該列表包含公共面的法向量及平均 值。
[0156] V2.若公共面列表為空,則停止。
[0157] V3.將當前面設定為公共面列表中的第一公共面。
[0158] V4.將當前云邊界點設定為當前面中的第一云邊界點。為進行步驟M8,云邊界點 可以任意次序列出。特別地,與不同邊界多邊形相關的云邊界點毋須存在區(qū)別。
[0159] V5.將最小距離設定為無窮。在此,"無窮"意指任意絕對大于云邊界點與任意公 共面間距離的正數(shù)。無窮的適當值為10至30次冪。
[0160] V6.將相鄰面設定為公共面列表中的第一公共面。
[0161] V7.若相鄰面與當前面相同,則轉(zhuǎn)至步驟VII。
[0162] V8.若當前與相鄰面的法向量間的角度充分小(如小于1度),則轉(zhuǎn)至步驟VII。 該測試的目的在于,防止意圖計算近乎平行平面的相交處。
[0163] V9.將當前云邊界點投射至相鄰面上,更確切而言,將其投射至由當前及相鄰面相 交形成的直線上。將當前云邊界點x(k)投射至點
[0164]
[0165] 該點位于由以下兩個公共面相交形成的直線上,
[0166]
[0167] 其中 a = [u⑴]T(u(i)),於,廣)]、山-戶0)且 A (,-
[0168] 在幾何圖形上,p(k)是直線上到x(k)的最近點。應指出,兩個法向量u (1)和u(D須 具單位長度。
[0169] V10.若當前云邊界點與其投影處之間的距離D小于最小距離,則將最小距離設定 為D并將最佳投影點設定為當前投影點。
[0170] VlL若相鄰面并非公共面列表中的最后一面,則將相鄰面設定為公共面列表中的 下一面,轉(zhuǎn)至步驟V7。
[0171] V12.若最小距離充分小,則將當前云邊界點的位置移至最佳投影點的位置,轉(zhuǎn)至 步驟V13。在此,"充分小"意指所占比例很小,如分辨率的四分之一或十分之一。在表示幾 何圖形的圖20中,ABCD是特定面立方體集合的公共面,DCFE和ADEG是兩個沿DC和AD相 交于ABCD的鄰近面立方體集合的公共面。短劃線MN和KL平行于DC和AD且表明視為充 分接近交線的點的距離。點? 112、?3和?4是云邊界點的示例位置。?2和? 4到〇(:的距離充 分小,從而將其移至其投影處QjPQ 4上。云邊界點P :充分接近DC和AD。然而,其更接近 AD,由此將其移至Q1。與之相反,P2并未充分接近任何相交處,由此并未移動。
[0172] V13.若當前云邊界點并非當前面的云邊界點列表中最后一云邊界點,則將當前云 邊界點設定為列表中的下一云邊界點,轉(zhuǎn)至步驟V5。
[0173] V14.若當前面并非公共面列表中的最后一面,則將當前面設定為公共面列表中的 下一面,轉(zhuǎn)至步驟V3。反之則停止。
[0174] 圖10是表示步驟Wl至W24的流程圖,其形成與公共直線(稱為公共線)相交 的連續(xù)共線立方體的集合。以這種方式形成的共線立方體的每一集合均稱為線立方體 集合。計算累加線立方體集合中點的數(shù)目《ζΣ"/?其中ηι是共線立方體1中點的數(shù) 目。計算還累加點云點的總數(shù)p Σ w,其中#}=? f>且外積的和妒=Σ %,其中 7 /碎 1 /
并且在這兩種情況下,總和為線立方體集合內(nèi)全部共線立方體1中的 ,Α·=1 全部點云點,其中χ(Μ)= (Xkl,Ykl,Zkl)是共線立方體1中的第k個點云點。
[0175] 可通過
f算出線立方體集合內(nèi)全部共線立方體中點云點 的平均值$及協(xié)方差矩陣V。
[0176] 同理,可通i3j
1 十算出共線立方體1中點云點 的平均值及協(xié)方差矩陣V(I)。
[0177] 在穿過共線立方體1中全部點云點的數(shù)學線上的任意點X均可寫為 λ- = #1+??#,其中α是標量參數(shù),其中u(1)是對應于協(xié)方差矩陣V(1)的唯一最大特征值的 協(xié)方差矩陣V (1)的特征向量并且在用于計算V (1)的特征向量時通過雅可比方法作為附帶結(jié) 果算出。
[0178] 同理,在穿過面立方體集合的全部立方體中全部點云點的數(shù)學面上的任意點均可 寫為X = If O?,其中u是垂直于公共線的單位向量,其等于對應于協(xié)方差矩陣V的唯一最 大特征值的累加協(xié)方差矩陣V的特征向量并且可通過雅可比方法算出。在步驟W14及W21, 所述方法將當前累加的線立方體集合中的數(shù)學直線與擬合穿過當前共線立方體1的線相 比較,以確定兩直線是否本身共線。在這兩個步驟中使用不同標準。
[0179] 標準A用于步驟W14且規(guī)定uTu(1)> cos Θ。,其確保兩平面間的角度小于Θ?;《?, 并規(guī)定-幻I < 4,其確保平均值#?的距離小于山距離單位。在此,標準A等同于在 步驟B14中所用的標準A,只不過此處u為公共線上的向量,而非公共面的法向量。可以該 角度重新解讀圖13。
[0180] 標準C用于步驟W21并規(guī)定
[0181]
[0182] 其確保共線立方體1中每一點x(M)到公共線的平均平方距離均小于d2距離單位。
[0183] WL創(chuàng)建未使用的立方體列表,其包含在步驟M2中標識的全部共線立方體。在該 列表中的任意立方體均稱為未使用立方體。
[0184] W2.若未使用列表為空,則停止。
[0185] W3.創(chuàng)建稱作線立方體集合的空白立方體列表。該線立方體集合將擴展為包含由 公共直線相交的全部共線立方體。最終,當前處于未使用立方體列表中的各立方體均將移 至線立方體集合中,即便在該線立方體集合僅包含唯一立方體的情況下亦然。
[0186] W4.將當前立方體設定為未使用列表中的第一立方體。
[0187] W5.創(chuàng)建稱作候選列表的空白立方體列表。該列表會包含視為納入線立方體集合 的候補者的未使用共線立方體。
[0188] W6.創(chuàng)建稱作特殊列表的空白立方體列表。該列表會包含新近拒為納入線立方體 集合的候補者的未使用共線立方體。
[0189] W7.將當前立方體從未使用列表移入線立方體集合。因而,各線立方體集合均包含 至少一個立方體。
[0190] W8.將線立方體集合中點的總數(shù)設定為等于當前立方體中點的總數(shù)。
[0191] W9.將線立方體集合中點的外積和設定為等于當前立方體中點的外積和。
[0192] W10.將未使用列表中的當前立方體的全部相鄰立方體都添加至候補列表。在此, 若立方體與當前立方體共享表面或頂點,則其即為當前立方體的相鄰者。
[0193] WlL若候補列表為空,則轉(zhuǎn)至步驟W18。
[0194] W12.將當前立方體設定為候補列表中的第一立方體。
[0195] W13.將當前立方體移出候補列表。
[0196] W14.若當前立方體并未達到標準A,則將該當前立方體添加至特殊列表,轉(zhuǎn)至步 驟 W11。
[0197] W15.將當前立方體從未使用列表移至線立方體集合。
[0198] W16.將當前立方體1中點的總數(shù)S1添加至線立方體集合中點的累加和s。
[0199] W17.將當前立方體1中點的外積和W1添加至線立方體集合中點的外積的累加和 W,轉(zhuǎn)至步驟WlO。
[0200] W18.若特殊列表為空,則輸出線立方體集合的數(shù)據(jù),轉(zhuǎn)至步驟W2。
[0201] W19.將當前立方體設定為特殊列表中的第一立方體。
[0202] W20.將當前立方體移出特殊列表。
[0203] W21.若當前立方體并未達到標準C,則轉(zhuǎn)至步驟W18。
[0204] W22.將當前立方體從未使用列表移至線立方體集合。
[0205] W23.將當前立方體1中點的總數(shù)