PCL 低層次視覺 點雲濾波(初步處理)

2021-07-09 12:37:42 字數 2452 閱讀 8678

**:

點雲濾波是點雲處理的基本步驟,也是進行 high level 三維影象處理之前必須要進行的預處理。其作用類似於訊號處理中的濾波,但實現手段卻和訊號處理不一樣。我認為原因有以下幾個方面:

點雲不是函式,對於複雜三維外形其x,y,z之間並非以某種規律或某種數值關係定義。所以點雲無法建立橫縱座標之間的聯絡。

點雲在空間中是離散的。和影象,訊號不一樣,並不定義在某個區域上,無法以某種模板的形式對其進行濾波。換言之,點雲沒有影象與訊號那麼明顯的定義域。

點雲在空間中分布很廣泛。歷整個點雲中的每個點,並建立點與點之間相互位置關係成了最大難點。不像影象與訊號,可以有跡可循。

點雲濾波依賴於幾何資訊,而不是數值關係。

綜上所述,點雲濾波只在抽象意義上與訊號,影象濾波類似。因為濾波的功能都是突出需要的資訊。

pcl常規濾波手段均進行了很好的封裝。對點雲的濾波通過呼叫各個濾波器物件來完成。主要的濾波器有直通濾波器,體素格濾波器,統計濾波器,半徑濾波器 等。不同特性的濾波器構成了較為完整的點雲前處理族,並組合使用完成任務。實際上,濾波手段的選擇和採集方式是密不可分的。

如果使用線結構光掃瞄的方式採集點雲,必然物體沿z向分布較廣,但x,y向的分布處於有限範圍內。此時可使用直通濾波器,確定點雲在x或y方向上的範圍,可較快剪除離群點,達到第一步粗處理的目的。

如果使用高解析度相機等裝置對點雲進行採集,往往點雲會較為密集。過多的點雲數量會對後續分割工作帶來困難。體素格濾波器可以達到向下取樣同時不破壞點雲本身幾何結構的功能。點雲幾何結構不僅是巨集觀的幾何外形,也包括其微觀的排列方式,比如橫向相似的尺寸,縱向相同的距離。隨機下取樣雖然效率比體素濾波器高,但會破壞點雲微觀結構。

統計濾波器用於去除明顯離群點(離群點往往由測量雜訊引入)。其特徵是在空間中分布稀疏,可以理解為:每個點都表達一定資訊量,某個區域點越密集則可能資訊量越大。雜訊資訊屬於無用資訊,資訊量較小。所以離群點表達的資訊可以忽略不計。考慮到離群點的特徵,則可以定義某處點雲小於某個密度,既點雲無效。計算每個點到其最近的k個點平均距離。則點雲中所有點的距離應構成高斯分布。給定均值與方差,可剔除3∑之外的點。

半徑濾波器與統計濾波器相比更加簡單粗暴。以某點為中心畫乙個圓計算落在該圓中點的數量,當數量大於給定值時,則保留該點,數量小於給定值則剔除該點。此演算法執行速度快,依序迭代留下的點一定是最密集的,但是圓的半徑和圓內點的數目都需要人工指定。

實際上點雲濾波的手段和傳統的訊號濾波與影象濾波在自動化程度,濾波效果上還有很大的差距。學者大多關注影象識別與配準演算法在點雲處理方面的移植,而對濾波演算法關注較少。其實點雲前處理對測量精度與識別速度都有很大影響。

點雲庫中已經包含了上述所有濾波演算法。pcl濾波演算法的實現是通過濾波器類來完成的,需要實現濾波功能時則新建乙個濾波器物件並設定引數。從而保證可以針對不同的濾波任務,使用不同引數的濾波器對點雲進行處理。

直通濾波器:

// create the filtering object

pcl::passthroughpass;

pass.setinputcloud (cloud);

pass.setfilterfieldname ("z");

pass.setfilterlimits (0.0, 1.0);

(true);

pass.filter (*cloud_filtered);

體素濾波器:

//

create the filtering object

pcl::voxelgridsor;

sor.setinputcloud (cloud);

sor.setleafsize (

0.01f, 0.01f, 0.01f

); sor.filter (*cloud_filtered);

統計濾波器:

//

create the filtering object

pcl::statisticaloutlierremovalsor;

sor.setinputcloud (cloud);

sor.setmeank (

50);

sor.setstddevmulthresh (

1.0);

sor.filter (*cloud_filtered);

半徑濾波器:

//

build the filter

pcl::radiusoutlierremovaloutrem;

outrem.setinputcloud(cloud);

outrem.setradiussearch(

0.8);

outrem.setminneighborsinradius (2);

// outrem.filter (*cloud_filtered);

顯然,不同的濾波器在濾波過程中,總是先建立乙個物件,再設定物件引數,最後呼叫濾波函式對點雲進行處理(點雲為智慧型指標指向的一塊區域)

PCL 低層次視覺 點雲濾波(基於點雲頻率)

今天在閱讀分割有關的文獻時,驚喜的發現,點雲和影象一樣,有可能也存在頻率的概念。但這個概念並未在文獻中出現也未被使用,謹在本博文中濫用一下 高頻 一詞。點雲表達的是三維空間中的一種資訊,這種資訊本身並沒有一一對應的函式值。故點雲本身並沒有在講訴一種變化的訊號。但在抽象意義上,點雲必然是在表達某種訊號...

PCL 低層次視覺 點雲分割(RanSaC)

點雲分割可謂點雲處理的精髓,也是三維影象相對二維影象最大優勢的體現。不過多插一句,自niloy j mitra教授的global contrast based salient region detection出現,最優分割到底鹿死誰手還不好說。暫且不論他開掛的影象處理演算法,先安心做乙個pcl吹 點...

PCL 低層次視覺 關鍵點檢測(Harris)

除去narf這種和特徵檢測聯絡比較緊密的方法外,一般來說特徵檢測都會對曲率變化比較劇烈的點更敏感。harris演算法是影象檢測識別演算法中非常重要的乙個演算法,其對物體姿態變化魯棒性好,對旋轉不敏感,可以很好的檢測出物體的角點。甚至對於標定演算法而言,harris角點檢測是使之能成功進行的基礎。ha...