【PCL】—基于形态学的点云分割算法详解
生活随笔
收集整理的這篇文章主要介紹了
【PCL】—基于形态学的点云分割算法详解
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
參考:https://www.cnblogs.com/ironstark/p/5017428.html
1. 航空測(cè)量與點(diǎn)云的形態(tài)學(xué)
- 航空測(cè)量是對(duì)地形地貌進(jìn)行測(cè)量的一種高效手段。生成地形三維形貌一直是地球?qū)W、測(cè)量學(xué)的研究重點(diǎn)。但對(duì)于城市、森林等獨(dú)特地形來(lái)說(shuō),航空測(cè)量會(huì)受到影響。因?yàn)橥恋乇砻娴臉?shù)、地面上的房子都認(rèn)為的改變了地貌,可以認(rèn)為是地貌上的噪聲點(diǎn)。設(shè)計(jì)一種有效的手段去除地面噪聲對(duì)地形測(cè)量的影響顯得非常重要。這種工作可以認(rèn)為是一種特殊的點(diǎn)云分割,一般情況下點(diǎn)云分割的目標(biāo)是去除地面,而這種方法需要在不使用地面平整假設(shè)的前提下獲得地面。
- 形態(tài)學(xué)是圖像處理中非常重要的概念,對(duì)二值圖像而言,可由簡(jiǎn)單的膨脹運(yùn)算和腐蝕運(yùn)算組成一個(gè)完整的圖像處理族。但是想要將這個(gè)算法移植到三維點(diǎn)云上是比較難的,首先一般的點(diǎn)云沒(méi)有明顯的映射值,也沒(méi)有清晰的定義域,很難設(shè)計(jì)形態(tài)學(xué)處理的基理。但是LIDAR點(diǎn)云例外。由于LIDAR點(diǎn)云由飛機(jī)獲得,飛機(jī)距離地面相對(duì)較遠(yuǎn),且測(cè)量方向和地面垂直,這就形成了比較完整的xy->z映射(z方向的范圍遠(yuǎn)遠(yuǎn)小于xy方向),z方向代表地面物體的高度,x、y方向?yàn)槠叫信c地面且相互垂直的兩個(gè)軸。有了明確的定義域以及單值映射關(guān)系就有了設(shè)計(jì)形態(tài)學(xué)算法的基本要素。實(shí)際上除了形態(tài)學(xué)算法之外,許多圖像處理算法都可以用來(lái)分割LIDAR點(diǎn)云了,本質(zhì)上這就是一幅大圖像。
2. 三維形態(tài)學(xué)算子
- 對(duì)于圖像而言,形態(tài)學(xué)運(yùn)算一般是針對(duì)二值圖像而言的。當(dāng)然也有針對(duì)灰度的形態(tài)學(xué)運(yùn)算,其原理應(yīng)該和針對(duì)點(diǎn)云的形態(tài)學(xué)運(yùn)算類似(我猜的)。形態(tài)學(xué)算子的設(shè)計(jì)實(shí)際上非常簡(jiǎn)單,只要能設(shè)計(jì)出基礎(chǔ)的膨脹和腐蝕算子就可以組合得到一系列的處理。
其中,d表示膨脹算子,e表示腐蝕算子。算子的原理有些像中值濾波,通過(guò)選取一個(gè)窗w中最高點(diǎn)或最低點(diǎn)來(lái)完成圖像的膨脹和腐蝕,其效果如下圖所示:
- 在航拍圖的橫截面上可以很清楚的看出膨脹與腐蝕的效果。對(duì)于房子和樹(shù)可以用不同的尺度窗(從小到大)先腐蝕至地面。但是這會(huì)導(dǎo)致一個(gè)巨大的問(wèn)題…如果地面上有個(gè)土包(比如秦始皇陵),那么這個(gè)土包也會(huì)在一次次的腐蝕中被消耗。那豈不是秦始皇陵就發(fā)現(xiàn)不了?所以還有一個(gè)補(bǔ)償算法用于解決這個(gè)問(wèn)題,稱為線性補(bǔ)償算法。
- 建筑物和土包有一個(gè)巨大的區(qū)別,建筑物往往相對(duì)比較陡峭,而土包卻是變化比較平緩的。這個(gè)可以作為一個(gè)判據(jù),用于判斷物體是否需要被腐蝕,也作為窗收斂的判據(jù)。
式中k稱為斜率,代表下一個(gè)窗的大小是上一個(gè)窗的2×k倍。
s是一個(gè)因子。
dh是切深判據(jù),每一次腐蝕大于切深判據(jù)才認(rèn)為是有效的,小于切深判據(jù)則是土包。
上述公式是怎么發(fā)現(xiàn)的就需要問(wèn)論文作者了,所有材料都被收錄于文章:《A Progressive Morphological Filter for Removing Nonground Measurements From Airborne LIDAR Data》
3. PCL對(duì)本算法的實(shí)現(xiàn)
//生成形態(tài)濾波器pcl::ProgressiveMorphologicalFilter<pcl::PointXYZ> pmf;pmf.setInputCloud(cloud);//設(shè)置窗的大小以及切深,斜率信息pmf.setMaxWindowSize(20);pmf.setSlope(1.0f);pmf.setInitialDistance(0.5f);pmf.setMaxDistance(3.0f);//提取地面pmf.extract(ground->indices);// 從標(biāo)號(hào)到點(diǎn)云pcl::ExtractIndices<pcl::PointXYZ> extract;extract.setInputCloud(cloud);extract.setIndices(ground);extract.filter(*cloud_filtered);算法效果如下圖所示:
總結(jié)
以上是生活随笔為你收集整理的【PCL】—基于形态学的点云分割算法详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 开源的防火墙
- 下一篇: Android - 自定义Dialog内