日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

(曲率系列2:)Paper6:Curvature Estimation of 3D Point Cloud Surfaces Through the Fitting of Normal

發布時間:2023/11/27 生活经验 91 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (曲率系列2:)Paper6:Curvature Estimation of 3D Point Cloud Surfaces Through the Fitting of Normal 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文獻下載鏈接:https://download.csdn.net/download/m0_37957160/12919965

簡單說明原理就是:用一個點鄰域內點的法向量計算該點的法曲率,根據歐拉公式得法曲率與主曲率的關系,最后用最小二乘優化得到主曲率。(通過擬合正截面曲率估算三維點云曲面的曲率,正截面曲率就是法曲率)

不管他概念說的有多抽象,反正最終處理的只是數學上定義的xyz的三維坐標而已。

問:就這個啊,i表示p點周圍的鄰域是從1到m,那么n沒有具體含義就是表示與法線有關的計算?,n是法線我知道,我的意思就是這里的下標n沒有變化,不像i一樣從1到m的變化,n就一直是n,是為了說明法曲率的計算是與法線有關的?

答:是的。

問:一個P點和其鄰域內的一個點計算出來的是法曲率,這個計算出來的法曲率是P點的還是怎么理解?

答:是P點的。

問:表示p與鄰域內的第1個點的法曲率,表示k與鄰域第二個點的法曲率,即就是p有多少個鄰域,那么p點就有多少個法曲率?

答:原理上是用鄰域的一個點就可以表示p點的法曲率,因為有誤差之類的存在,所以用鄰域內k個點進行最小二成優化來得到p點的曲率。

選鄰域內多個點主要就是為了最小二乘尋優。

問:法曲率是p點的,那么k1和k2分別是哪個點的?

答:P點的。

問:最后獲得的特征值k1和k2就是主曲率?為啥有兩個主曲率?k1xk2是高斯曲率,一個高斯曲率?

答:數學上就是這么定義的!!!所以計算的k1和k2就是分別表示最大主曲率和最小主曲率

????? ??

#include <iostream>
#include <vector>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/features/normal_3d.h>
#include <pcl/features/principal_curvatures.h>
using namespace std;int main(int argc, char** argv){pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);pcl::io::loadPCDFile<pcl::PointXYZ>("A3  - Cloud.pcd", *cloud); //讀取點云cout << "Loaded " << cloud->points.size() << " points." << endl;//顯示讀取點云的個數// 計算點云的法線pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> n;n.setInputCloud(cloud);//設置鄰域點搜索方式pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);n.setSearchMethod(tree);//設置KD樹搜索半徑// n.setRadiusSearch (0.03);n.setKSearch(10);//定義一個新的點云儲存含有法線的值pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);//計算出來法線的值n.compute(*normals);// 建立主曲率計算pcl::PrincipalCurvaturesEstimation<pcl::PointXYZ, pcl::Normal, pcl::PrincipalCurvatures> p;// 提供原始點云(沒有法線)p.setInputCloud(cloud);// 為點云提供法線p.setInputNormals(normals);// 使用與法線估算相同的KdTreep.setSearchMethod(tree);//p.setRadiusSearch(1.0);p.setKSearch(10);// 計算主曲率pcl::PointCloud<pcl::PrincipalCurvatures>::Ptr pri(new pcl::PointCloud<pcl::PrincipalCurvatures>());p.compute(*pri);cout << "output points.size: " << pri->points.size() << endl;// 顯示和檢索第0點的主曲率。cout << "最大曲率;" << pri->points[0].pc1 << endl;//輸出最大曲率cout << "最小曲率:" << pri->points[0].pc2 << endl;//輸出最小曲率//輸出主曲率方向(最大特征值對應的特征向量)cout << "主曲率方向;" << endl;cout << pri->points[0].principal_curvature_x << endl;cout << pri->points[0].principal_curvature_y << endl;cout << pri->points[0].principal_curvature_z << endl;return 0;
}

PCL庫連接:https://pointclouds.org/documentation/classpcl_1_1_principal_curvatures_estimation.html

總結

以上是生活随笔為你收集整理的(曲率系列2:)Paper6:Curvature Estimation of 3D Point Cloud Surfaces Through the Fitting of Normal的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。