PCL濾波 使用索引濾波器過濾地面

2021-10-07 16:36:27 字數 2367 閱讀 6488

pcl濾波—從乙個點雲中提取乙個子集——extractindices濾波器——索引濾波器

索引濾波的官方教程新增鏈結描述

使用該方法結合降取樣和統計濾波可以很好的完成地面分離。

此處是索引濾波標頭檔案

#include

此處是重點,距離閾值的引數影響計算速度和地面分割精度,不同模型的引數不一樣,一般是0.01-0.2之間取值

seg.

setmaxiterations

(100);

//設定最大迭代次數

seg.

setdistancethreshold

(0.15);

//設定判斷是否為模型內點的距離閾值

此處是判斷保留內點還是反向選取,false是保留內點,true是反選

extract.

setindices

(inliers)

; extract.

setnegative

(false);

extract.

filter

(*cloud_p)

;

這裡加了乙個迴圈結構,當還有60%原始點雲資料時退出迴圈

while

(cloud_filtered-

>points.

size()

>

0.6* nr_points)

以下是原**和最終效果,保留了汽車分割掉了地面。

本文參考了新增鏈結描述

//索引濾波

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

intmain

(int argc,

char

** ar**)

// 分離內層

extract.

setinputcloud

(cloud_filtered)

; extract.

setindices

(inliers)

; extract.

setnegative

(false);

extract.

filter

(*cloud_p)

; std::cerr <<

"pointcloud representing the planar component: "

<< cloud_p-

>width * cloud_p-

>height <<

" data points."

<< std::endl;

std::stringstream ss;

ss <<

"table_scene_lms400_plane_"

<< i <<

".pcd"

;// writer.write(ss.str(), *cloud_p, false);

// 建立濾波器物件

extract.

setnegative

(true);

extract.

filter

(*cloud_f)

; cloud_filtered.

swap

(cloud_f)

; i++;}

cout <<

"迭代次數:"

<

pcl::visualization::cloudviewer viewer

("cloud viewer");

//建立viewer物件

viewer.

showcloud

(cloud_f)

;// viewer.runonvisualizationthreadonce(vieweroneoff);

while

(!viewer.

wasstopped()

)return(0);}

PCL 直通濾波器

二 示例 三 結果展示 直通濾波的作用是過濾掉在指定維度方向上取值不在給定值域內的點,實現原理如下 首先,指定乙個維度以及該維度下的值域,其次,遍歷點雲中的每個點,判斷該點在指定維度上的取值是否在值域內,刪除取值不在值域內的點,最後,遍歷結束,留下的點即構成濾波後的點雲。直通濾波器簡單高效,適用於消...

PCL 統計濾波器

二 實現 三 結果展示 四 cloudcompare 雷射掃瞄通常會產生密度不均勻的點雲資料集,另外測量中的誤差也會產生稀疏的離群點,此時,估計區域性點雲特徵 例如取樣點處法向量或曲率變化率 時運算複雜,這會導致錯誤的數值,反過來就會導致點雲配準等後期的處理失敗。統計濾波器用於去除明顯離群點,離群點...

PCL點雲濾波(直通濾波器與統計濾波器)

利用pcl中的直通濾波器和統計濾波器對原始點雲資料進行濾波處理。通過直通濾波器將z軸方向上範圍之外的點濾除 在背景與前景有一定距離的情況下,可以除掉背景 再利用統計濾波器去除離群點 雜訊點 濾波效果視資料和濾波引數而定。include include include include include ...