法線空間采樣
NormalSpaceSampling即:法線空間采樣,它在法向量空間內均勻隨機抽樣,使所選點之間的法線分布盡可能大,結果表現為地物特征變化大的地方剩余點較多,變化小的地方剩余點稀少,可有效保持地物特征。實現方法如下:
1、首先計算每個點的K領域,然后計算點到領域點的法線夾角值,以此來近似達到曲率的效果并提高計算效率,因為曲率越大的地方,夾角值越大。
2、設置一個角度閾值,當點的領域夾角值大于閾值時被認為是特征明顯的區域,其余區域為不明顯區域。
3、對明顯和不明顯區域進行均勻采樣,采樣數分別為U_(1-V)和U_V,U是目標采樣數,V是均勻采樣性。
// 創建基于鄰域的法向估計類對象
// // 基于omp并行加速,需配置開啟OpenMP
// pcl::NormalEstimationOMP< pcl::PointXYZ, pcl::Normal > ne;
// ne.setNumberOfThreads(10);
pcl::NormalEstimation< pcl::PointXYZ, pcl::Normal > ne;
// 創建一個空的kdtree對象,并把它傳遞給法線估計對象,
// 用于創建基于輸入點云數據的鄰域搜索kdtree
pcl::search::KdTree< pcl::PointXYZ >::Ptr
tree(new pcl::search::KdTree< pcl::PointXYZ >());
// 傳入待估計法線的點云數據,智能指針
ne.setInputCloud(cloud_src);
// 傳入kdtree對象,智能指針
ne.setSearchMethod(tree);
// 設置鄰域搜索半徑
ne.setRadiusSearch(0.1f); // 設置半徑時,要考慮到點云空間間距
// // 也可以設置最近鄰點個數
// ne.setKSearch(25);
// 設置視點源點,用于調整點云法向(指向視點),默認(0,0,0)
ne.setViewPoint(0,0,0);
// 計算法線數據
ne.compute(*cloud_normals);
// 通過concatenateFields函數將point和normal組合起來形成PointNormal點云數據
pcl::PointCloud< pcl::PointNormal >::Ptr
cloud_with_normal(new pcl::PointCloud< pcl::PointNormal >());
pcl::PointCloud< pcl::PointNormal >::Ptr
cloud_with_normal_sampled(new pcl::PointCloud< pcl::PointNormal >());
pcl::concatenateFields(*cloud_src, *cloud_normals, *cloud_with_normal);
// 創建法向空間采樣(模板)類對象
pcl::NormalSpaceSampling< pcl::PointNormal, pcl::Normal > nss;
// 設置xyz三個法向空間的分類組數,此處設置為一致,根據具體場景可以調整
const int kBinNum = 8;
nss.setBins(kBinNum, kBinNum, kBinNum);
// 如果傳入的是有序點云,此處可以嘗試設置為true
nss.setKeepOrganized(false);
// 設置隨機種子,這樣可以保證同樣的輸入可以得到同樣的結果,便于debug分析
nss.setSeed(200); // random seed
// 傳入待采樣的點云數據
nss.setInputCloud(cloud_with_normal);
// 傳入用于采樣分析的法線數據,需與傳入點云數據一一對應
nss.setNormals(cloud_normals);
// 設置采樣總數,即目標點云的總數據量
const float kSampleRatio = 0.1f;
nss.setSample(cloud_with_normal- >size()*kSampleRatio);
// 執行采樣并帶出采樣結果
nss.filter(*cloud_with_normal_sampled);
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
plc
+關注
關注
5031文章
13711瀏覽量
472088 -
數據
+關注
關注
8文章
7241瀏覽量
90995 -
采樣
+關注
關注
1文章
127瀏覽量
25910
發布評論請先 登錄
相關推薦
熱點推薦
關于232的NCL,PCL的疑問
有沒有大神接觸過這種232通訊的儀表,上面有NCL RXD,NCL TXD;PCL RXD,PCL TXD。這種能用DB9的芯片去采集數據嗎?我用DB9的RXD去接它的 NCL TXD,數據偶爾會有一位的偏移,請問該怎么正確的采集它的數據,拜謝
發表于 11-07 16:15
PCL點云庫介紹及項目配置方式
關于PCL點云庫,大家百度的時候可以找到很多相關的介紹,反正一堆專業性概念,相關的技術層面以及一些強大的應用敘述云云,不過關于這些小編實在不感冒,能先把這個工具好好用起來再說吧。關于PCL相關的論壇
發表于 07-02 07:44
阿爾法線圈是什么
在無線充電領域,我們平常可以看到各種不同尺寸、不同材質、不同形狀的線圈被廣泛應用于發射端與接收端產品上,alpha線圈,俗稱阿爾法線圈,因為它的兩個引出線均在線圈外側,形似α而得名。阿爾法線圈是單線
發表于 09-15 06:43
PCL6143運動控制器原理及應用
PCL6143運動控制器的原理及應用 可以用于設計開發相應的芯片電路。介紹了PCL6143 的功能結構、主要寄存器以及指令系統。設計了一款基于PC104總線的四軸運動控制卡, 介紹了如
發表于 09-26 08:14
PCL6143運動控制器的原理及應用
介紹了PCL6143的功能結構、主要寄存器以及指令系統。設計了一款基于PC104總線的四軸運動控制卡,介紹了如何編寫運動控制卡的功能函數庫。
發表于 12-13 17:16
?106次下載

中法海洋衛星成功發射 首次實現海風和海浪同步觀測
北京時間10月29日8時43分,中國在酒泉衛星發射中心用長征二號丙運載火箭,成功發射中法合作研制的首顆衛星中法海洋衛星。 中國國家航天局、自然資源部介紹說,中法海洋衛星由兩國歷時13年
使用MATLAB編程實現里查森迭代法線性方程組求解的資料和程序免費下載
本文檔的主要內容詳細介紹的是使用MATLAB編程實現里查森迭代法線性方程組求解的資料和程序免費下載。
發表于 08-09 16:56
?0次下載

空間曲線基于內在幾何量的均勻采樣方法
為解決均勻參數采樣在許多情況下得到質量不高的采樣點,進而生成不理想的B樣條擬合曲線,提出空間曲線基于內在幾何量的均勻采樣方法,以獲得給定總數且具有代表性的
發表于 04-22 11:34
?4次下載

PCL中基礎下采樣介紹
顧名思義,隨機下采樣就似乎在原始點云中隨機采樣一定點數的點。這種方法最終得到的點云數量也是固定的。 pcl::PointCloud ::Ptr cloud_sub( new pcl

PCL中最遠點采樣是什么
最遠點采樣(Farthest Point Sampling) 這里我們來單獨看一下調用代碼,這里可以看到PCL中支持直接調用farthest_sampling這個函數可以實現最遠點采樣。 最遠點
PCL泊松盤采樣具體流程
點之間最近的距離r,以及采樣點所在空間的維度n,比如2維平面 2、在空間里生成足夠多的網格,保證不接觸的兩個網格之間的點的距離大于r,并且網格數量足夠多保證每個網格至多只需裝一個采樣點

PCL中非均勻體素采樣介紹
非均勻體素采樣 SamplingSurfaceNormal,將輸入空間劃分為網格,直到每個網格中最多包含N個點,并在每個網格中隨機采樣點。 使用每個網格的N個點計算法線。 在網格內
評論