從點雲中提取桿狀物演算法

2022-05-17 20:55:53 字數 839 閱讀 2698

基於pcl的條件尤拉聚類(conditionaleuclideanclustering)和ransac擬合直線的一種從點雲中提取pole的演算法,核心思想就是先水平聚類,選擇出直徑小的cluster,然後豎直聚類,主要過程如下:

1.將點雲根據point.z的大小sort。

2.設定z_resolution,從下到上,對每一層的點雲進行尤拉聚類,每一層的點雲高度為z_resolution。

3.保留直徑小於一定threshold的cluster。

4.對保留下來的points做豎直方向的條件尤拉聚類,setclustertolerance設定的大一些,但是要加條件函式來限制生長的方向,condition_function如下:

1

condition_function(point_type point0, point_type point1)

2

5.上述過程提取的pole可能如圖1所示(帶有兩側的燈桿),因為condition_function雖然限制了生長方向主要是豎直方向,但是因為其中的dis_threshold不等於0(也不能為0,因為杆內部的點要聚類到一起),所以再進行ransac擬合直線,完成pole的提取,如圖2所示。

6.對杆上端的周圍點雲進行pca分析,判斷是樹冠,廣告牌還是燈支撐桿,進而過濾掉樹幹。

圖1                                           圖2

從檔案中提取數字

程式的功能是從指定的檔案中提取所有的整數,並把它們依次存入到乙個字串中 void iostest char a 50 char b 50 istrstream sin a ostrstream sout b,sizeof b ifstream file1 w1.dat ios in ios nocr...

從文字中提取特定資訊

嘗試了兩種方法,正規表示式提取效果更佳 usr bin env python coding utf 8 方法1 採用位置引數來提取,效果不佳 file data with open 待處理文字.txt encoding utf 8 as f data f.read split file while ...

從文字中提取所有的單詞

比如 hello world hello everyone,my name is caozhy 輸出 caozhy everyone hello ismy name world class dictgen public node public ienumerable string get publi...