最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

常用三維點云采樣方法總結

2022-04-22 16:35 作者:深藍學院  | 我要投稿

本文作者:William

前言:

對于大規(guī)模點云處理而言,直接對點云進行特征提取能較好地保留三維結構信息,但由于點云的無序性,直接處理的方式在對鄰域進行搜索時需要較高的計算成本,一個常用的解決方式就是對點云進行下采樣,將對全部點云的操作轉(zhuǎn)換到下采樣所得到的關鍵點上,從而達到降低計算量的目的?;蚴沁M行點云曲面重建時,所獲得的點云數(shù)量稀缺,則要對點云進行上采樣操作,來增加點云數(shù)量,以便更好的計算曲面特征。以下來介紹常用的點云采樣方法。

1.?體素下采樣

一般最常用的下采樣方法為體素化網(wǎng)格的采樣方法,即減少點的數(shù)量,并同時保持點云的形狀特征基本不變,同時基本上保留了空間結構信息。在點云配準、曲面重建、形狀識別等算法速度中非常實用。

體素下采樣的原理如圖1所示,首先將點云空間進行網(wǎng)格化,也稱體素化,即圖1(b),網(wǎng)格化后的每一個格子稱為體素,在這些劃分為一個個極小的格子中包含一些點,然后對這些點取平均或加權平均得到一個點,以此來替代原來網(wǎng)格中所有的點,即圖1(c)中藍色的點。顯然,網(wǎng)格選取越大則采樣之后的點云越少,處理速度變快,但會對原先點云過度模糊,網(wǎng)格選取越小,則作用相反。

體素下采樣的特點是效率高,采樣點分布相對比較均勻,同時可以通過控制網(wǎng)格尺寸控制點間距,但是不能精確控制采樣點個數(shù)。

其核心代碼如下:

pcl::VoxelGrid<pcl::PointXYZ> sor; ? ?//創(chuàng)建體素網(wǎng)格采樣處理對象 sor.setInputCloud(cloud); ? ? ? ? ? ? //設置輸入點云 sor.setLeafSize(0.01f, 0.01f, 0.01f); //設置體素大小,單位:m sor.filter(*cloud_filtered); ? ? ? ? ?//進行下采樣

2.?均勻采樣

均勻采樣的原理類似于體素化網(wǎng)格采樣方法,同樣是將點云空間進行劃分,不過是以半徑=r的球體,在當前球體所有點中選擇距離球體中心最近的點替代所有點,注意,此時點的位置是不發(fā)生移動的。球體半徑選取越大則采樣之后的點云越少,處理速度變快,但會對原先點云過度模糊,網(wǎng)格選取越小,則作用相反。

均勻采樣的特點是采樣點分布均勻,不會移動點云點,準確度較高,但時間復雜度提升。

其核心代碼如下:

pcl::UniformSampling<pcl::PointXYZ> form; ? // 創(chuàng)建均勻采樣對象 form.setInputCloud(cloud); ? ? ? ? ? ? ? ? ?//設置輸入點云 form.setRadiusSearch(0.02f); ? ? ? ? ? ? ? ?//設置半徑大小,單位:m form.filter(*after_cloud); ? ? ? ? ? ? ? ? ?//執(zhí)行濾波處理

3.?幾何采樣

其原理是以點云的幾何特征作為采樣依據(jù),這里以曲率為例。在點云中任意一點都存在某曲面,曲率計算示意圖如圖2所示,曲率越大,弧的彎曲程度越大,表示該地方的特征點越多,故在點云曲率越大的地方,采樣點數(shù)越多,實現(xiàn)方法如下:

1)首先計算每個點的K領域,然后計算點到領域點的法線夾角值,以此來近似達到曲率的效果并提高計算效率,因為曲率越大的地方,夾角值越大。

2)設置一個角度閾值,當點的領域夾角值大于閾值時被認為是特征明顯的區(qū)域,其余區(qū)域為不明顯區(qū)域。

3)對明顯和不明顯區(qū)域進行均勻采樣,采樣數(shù)分別為U*(1-V)和U*V,U是目標采樣數(shù),V是均勻采樣性。

圖2 點云曲率

其特點是計算效率高,且局部點云的采樣是均勻的,同時穩(wěn)定性高,使得采樣結果的抗噪性更強。

4.?隨機下采樣

隨機下采樣的原理十分簡單,如圖3所示,首先指定下采樣的點數(shù),然后進行隨機點去除進行采樣操作,得到圖3(b)。

隨機下采樣的特點是能控制輸出點云的數(shù)量,但隨機性太大,可能剔除點云的關鍵數(shù)據(jù)。

其核心代碼如下:

pcl::RandomSample<PointT> ran; ? ? //創(chuàng)建濾波器對象 ran.setInputCloud(cloud); ? //設置待濾波點云 ran.setSample(200); ? ? //設置下采樣點云的點數(shù) ran.setSeed(1); ? ? ?//設置隨機函數(shù)種子點 ran.filter(*after_cloud); ? //執(zhí)行隨機下采樣濾波

5.?增采樣

增采樣的原理如圖4所示,當目前擁有的點云數(shù)據(jù)量較少時,如圖4(a),通過內(nèi)插點云的方法對目前的點云數(shù)據(jù)對進行擴充,如圖4(b),達到保證基本形狀不變的情況下增加點云。

增采樣的特點是可極大的增加點云數(shù)據(jù),但由于內(nèi)插點的不確定性會導致最后輸出的結果不一定準確。

其核心代碼如下:

//創(chuàng)建增采樣對象 pcl::MovingLeastSquares<pcl::PointXYZ,pcl::PointXYZ> filter; ? ? filter.setInputCloud(cloud); ? ? ? ? ? ? ? ? ? ? //設置輸入點云 pcl::search::KdTree<pcl::PointXYZ>::Ptr kdtree; ?//定義搜索方法 filter.setSearchMethod(kdtree); ? ? ? ? ? ? ? ? ?//設置搜索方法 filter.setSearchRadius(0.03); ? ?//設置搜索鄰域的半徑為3cm ? //Upsampling 采樣的方法還有 DISTINCT_CLOUD, RANDOM_UNIFORM_DENSITY filter.setUpsamplingMethod(pcl::MovingLeastSquares<pcl::PointXYZ, pcl::PointXYZ>::SAMPLE_LOCAL_PLANE); ? ? //對點云進行上采樣 filter.setUpsamplingRadius(0.03); ? ?//設置采樣半徑大小,3cm filter.setUpsamplingStepSize(0.02); ?//設置采樣步長大小,2cm filter.process(*after_cloud); ? ? ?//執(zhí)行采樣操作

6.?滑動最小二乘法采樣

滑動最小二乘法采樣的原理是將點云進行了滑動最小二乘法的映射,使得輸出的點云更加平滑。

滑動最小二乘法的特點是適用于點云的光順處理,但有時會犧牲表面擬合精度的代價來獲得輸出點云。

其核心代碼如下:

pcl::PointCloud<pcl::PointNormal>::Ptr smoothedCloud(new pcl::PointCloud<pcl::PointNormal>); ? //定義法線 pcl::MovingLeastSquares<pcl::PointXYZ, pcl::PointNormal> filter; pcl::search::KdTree<pcl::PointXYZ>::Ptr kdtree; ?//定義搜索方法 filter.setInputCloud(cloud); ? ?//設置輸入點云 filter.setUpsamplingMethod(); ?//增加密度較小區(qū)域的密度對于holes的填補卻無能為力,具體方法要結合參數(shù)使用 filter.setSearchRadius(10);// 用于擬合的K近鄰半徑。在這個半徑里進行表面映射和曲面擬合。半徑越小擬合后曲面的失真度越小,反之有可能出現(xiàn)過擬合的現(xiàn)象。 filter.setPolynomialFit(true); ?//對于法線的估計是有多項式還是僅僅依靠切線。true為加多項式;false不加,速度較快 filter.setPolynomialFit(3); ? ? ?// 擬合曲線的階數(shù) filter.setComputeNormals(true); ?// 是否存儲點云的法向量,true 為存儲,false 不存儲 filter.setSearchMethod(kdtree); //設置搜索方法 filter.process(*smoothedCloud); //處理點云并輸出

總結:

以上就是常用的點云采樣方法,根據(jù)其特點我們來進行總結一下,在下采樣方法中,以體素化網(wǎng)格采樣方法最為常用,因為其速度快,代碼量少,且滿足大多數(shù)時的點云處理要求;均勻采樣雖然精度高,當耗時高,可以用于更追求精度的場合下;幾何采樣由于使用不多,方法很多,這里只是簡答介紹了一下曲率采樣,比較適用于不規(guī)則的且豐富表面特征的點云數(shù)據(jù)計算;隨機下采樣由于能準確控制點云的輸出數(shù)量,但過于隨機,較少使用;增采樣用于增加點云數(shù)據(jù),更適合用于解決曲面重建時點云數(shù)量缺少的問題;而滑動最小二乘法同樣是對點云數(shù)量的擴充,但主要是對點云形狀進行平滑處理,所以更適合用來對點云結構進行優(yōu)化。


常用三維點云采樣方法總結的評論 (共 條)

分享到微博請遵守國家法律
阜宁县| 鄱阳县| 健康| 牙克石市| 龙陵县| 新巴尔虎右旗| 湖州市| 武隆县| 武清区| 含山县| 华宁县| 松桃| 高邮市| 灵宝市| 景洪市| 湟源县| 区。| 临城县| 奈曼旗| 枣强县| 博野县| 曲周县| 阳泉市| 车致| 土默特右旗| 安远县| 梁山县| 分宜县| 江源县| 涞水县| 万荣县| 尖扎县| 沙坪坝区| 公安县| 北安市| 广水市| 绥德县| 天台县| 合作市| 汝阳县| 武定县|