概述
曲率(curvature)
曲率试图去描述你车子拐弯拐的有多急(我的个人观点,不是定义一个数学量就产生了某种概念,而是为了描述一种概念找出一个合理的数学的定义)。(https://zhuanlan.zhihu.com/p/41795324)
曲率半径
显示方程
若有显示方程 ,把x看着参变量t,有
极坐标方程
把
θ
theta
θ 看作参变量,代入得
推导
设道路的函数为
我们规定上图中向量
T
T
T的范数为1,曲率的严格定义为
规定T向量范数为1是为了保证
其中T和S都是向量,注意到T是范数为1的切线向量,我们可以这样计算向量T:
因为S’就是S(t)的切线嘛,又有
(洛必达法则)
最终答案是:
PCL求取三维点云模型每点曲率
https://blog.csdn.net/GoodLi199309/article/details/80537310
鉴于在实际使用中只需要一些曲率较大的点作为特征点使用(我们这里只研究最大的前800个点),所以在使用PCL库求取所有点的曲率后,我们
- 首先将其曲率值与其对应的点在点集中的索引值进行结构化存储最终得到一个包含所有点索引与曲率值的集合。
- 接着应用选择排序特点的逆思想(每一次将最大值放在集合的最开始处)对集合进行排序,为了不影响运行速度,当找到前800个曲率最大值时中断操作。
- 通过对应的索引值在原始点集中找到这800个曲率值对应的模型点。
高斯曲率和平均曲率
for (int i = 0; i < cloud_curvatures->size();i++){
//平均曲率
//curvature = ((*cloud_curvatures)[i].pc1 + (*cloud_curvatures)[i].pc2) / 2;
//高斯曲率
curvature = (*cloud_curvatures)[i].pc1 * (*cloud_curvatures)[i].pc2;
//@yanyx 记得pcl里求的两个曲率pc1 pc2是用法线的主成分分析得到的,跟书上写的K1 k2这两个曲率是不同的,然后你在求高斯曲率的时候直接把pc1*pc2,这个是不对的吧?
//pv.cPoint = tempPoint;
pv.index = i;
pv.curvature = curvature;
tempCV.insert(tempCV.end(),pv);
}
曲面上任意一点都有无数个曲率,其中存在最大和最小值。
高斯曲率=最大曲率*最小曲率,(https://www.zhihu.com/question/40412131)
乘法,把它理解成**‘逻辑与’**,是否两个方向都有弯曲。
高斯曲率的几何意义表示曲面的弯曲程度,是相当重要的内蕴几何量,通过对高斯曲率的值的判断,可以大致分析出曲面上该点的弯曲情况,比如说K大于0说明是椭圆点,K可视作曲面相对球面的弯曲程度。参考文献:彭家贵, 陈卿. 微分几何[M]. 高等教育出版社, 2002.
K = 0 的面: 可展曲面,能够经弯曲(非拉伸、收缩、皱褶或撕裂)而而展开成一片平面
比如柱面
平均曲率=(最大曲率+最小曲率)/2
加法,把它理解成‘逻辑或’,是否任意一个方向上有弯曲.
当然值得注意
也会导致平均曲率为0.
H = 0 的面: 极小曲面, 满足一定的约束条件下表面积最小的曲面,
比如这个鞍面
代码: 求曲率最大的800个点
vector<PCURVATURE> allCurvates;
//计算模型所有点的曲率(Modelpath为模型所在路径)
allCurvates = getModelCurvatures(Modelpath);
//获取所有曲率中的最大、最小曲率
//选择排序
//找到最大的前800个曲率点
PCURVATURE temp;
int maxIndex = 0;
int count = 0;
for (int i = 0; i < allCurvates.size(); i++){
float maxCurvature = -99999;
for (int j = i + 1; j< allCurvates.size(); j++){
if (maxCurvature<allCurvates[j].curvature){
maxCurvature = allCurvates[j].curvature;
maxIndex = j;
}
}
if (maxCurvature>allCurvates[i].curvature){
temp = allCurvates[maxIndex];
allCurvates[maxIndex] = allCurvates[i];
allCurvates[i] = temp;
count++;
}
if (count>800){
break;
}
}
最后
以上就是饱满飞鸟为你收集整理的曲率定义与推导曲率(curvature)PCL求取三维点云模型每点曲率的全部内容,希望文章能够帮你解决曲率定义与推导曲率(curvature)PCL求取三维点云模型每点曲率所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复