一. 基于凸包的凹點(diǎn)挖掘算法:
? ? 1. 提取點(diǎn)云的凸包
? ? 2. 計(jì)算凸包每條邊的頂點(diǎn)的點(diǎn)密度(即該點(diǎn) K 個(gè)臨近點(diǎn)到該點(diǎn)的距離平均值)
? ? 3. 如果頂點(diǎn)點(diǎn)密度大于所在邊的長(zhǎng)度的 X 倍,則刪除該邊,并從內(nèi)部點(diǎn)中選擇出一個(gè)滿足夾角最大的點(diǎn),插入邊界邊,形成兩條新的邊界邊
? ? 4. 迭代 2 和 3,一直到全部邊界邊的 X 倍小于其端點(diǎn)的點(diǎn)密度,算法結(jié)束
二. 基于 Delaunay 三角網(wǎng)的輪廓提取算法:
A. 不使用輔助點(diǎn):
? ? 1. 首先對(duì)點(diǎn)云進(jìn)行 Delaunay 三角構(gòu)網(wǎng)
? ?2. 同上,判斷每條網(wǎng)格邊長(zhǎng)度的X倍和其端點(diǎn)的點(diǎn)密度之間的大小關(guān)系,并刪除長(zhǎng)的網(wǎng)格邊
? ?3. 提取只屬于一個(gè)三角形的邊界,作為邊界邊
? ?4. 分類排序,得到有順序關(guān)系的內(nèi)外輪廓
B. 使用輔助點(diǎn):
? ?1. 手動(dòng)在點(diǎn)云的邊界附近選點(diǎn)
? ?2. Delaunay構(gòu)網(wǎng)
? ?3. 判斷每個(gè)三角形,如果其中一個(gè)點(diǎn)是輔助點(diǎn),而另外兩個(gè)點(diǎn)是點(diǎn)云中的點(diǎn),則連接這兩個(gè)點(diǎn)做為邊界邊
? ?4. 分類排序,得到有順序關(guān)系的內(nèi)外輪廓
總體來(lái)說(shuō),由于構(gòu)網(wǎng)算法的時(shí)間復(fù)雜度較高,因此可以有選擇的使用上面兩種算法,比如只有在確定要提取內(nèi)輪廓的情況下,可以選擇第二種輪廓提取算法