求解点云法向:(基于局部平面拟合点云的法向量

点云法向量求解需要其邻域内点支持,而邻域的大小一般由邻域半径值或临近点个数来表示。现实中需要根据点分辨率、物体细节精细程度和用途等因素来取值。过大的邻域会抹平三维结构细节使得法向量过于粗糙,而过小的邻域由于包含了太少的点受噪声干扰程度较强。

特征值物理意义:

事实上,我们求方阵特征值和特征向量是在处理一个半成品,对于一个非方阵的矩阵A,它往往代表一个多维空间里的多个数据。我们求这个矩阵A的协方差阵Cov(A,A’),即得到一个方阵B,而我们平时求的特征值,就是求B的特征值,那么求出的特征值是代表什么呢?它就是代表矩阵A的那些数据,在那个多维空间中,各个方向上分散的一个度量(即理解为它们在各个方向上的特征是否明显,特征值越大,则越分散,也就是特征越明显),而对应的特征向量,不言而喻,也就是它们对应的各个方向。

目标:选择最小特征值对应的特征向量,并进行单位化,则该向量为点云法向量。

求解点云法向量的形式与PCA降维求解协方差矩阵(是方阵,非方阵没有特征值和特征向量)的特征值和特征向量相同,于是我们可以借用PCA原理进行求解点云的法向量。需要注意是:基于PCA降维求解协方差矩阵的特征值要求越大越好,其特征向量就越能描述数据的特征,小就越不能区分样本之间的不同,也就是表征了数据中的共性。在我们的优化目标函数中,就是要为所有的邻域点寻找一个平面,使得所有的邻域点都在这个平面上,或者说所有点与该平面的距离最小,所以要求我们选择协方差矩阵的最小特征值和对应特征向量。(表明点之间的差异就小)

在求出法向量后还需要判断法向量的方向,一般来说法向量方向的矫正没有严格的数学公式可以使用。比较简单的方法是通过视点方向进行判断。比如我的视点方向是(0,0,1),那么求出来的法向量跟(0,0,1)进行点乘,如果小于0,就将法向量取反。更复杂的方法是使用最小生成树对法向量进行方向矫正。

来自:https://blog.csdn.net/o180o/article/details/97647657

参考:http://www.pclcn.org/study/shownews.php?lang=cn&id=105

点云法线计算

点云采样于物体表面,物体表面的法线即为点云法线,故可先对物体表面的几何进行估计,即可计算出点云法线。一般可用低阶多项式曲面进行局部拟合,如左图所示。如果点云均匀分布,希望计算速度快,也可以用平面进行局部拟合,平面法线即为点云法线,如右图所示。

平面的局部拟合,可以采用PCA(主成分分析)的方法。因为曲面局部是平坦的,法线所在的方向是主成分最低的方向,也就是PCA里面最小特征值对应的特征方向。具体操作如下:1)给每个点计算K邻近邻域(也可以用半径邻域);2)计算PCA的协方差矩阵 Cov = ∑ (Ni – C) X (Ni – C),其中Ni为邻域点,C为中心点。这个协方差矩阵的最小特征值对应的特征向量即为这个点的法线方向。

https://blog.csdn.net/weixin_45748803/article/details/102645605

PCL:最小特征值与特征向量为什么可以表示法向量??相关推荐

  1. MATLAB反幂法求矩阵最小特征值及其特征向量

    A=input('输入代解矩阵:'); x=input('输入特征向量的迭代初值(列向量):'); k=0; while 1jk=1;for j=2:numel(A(1,:)) % 由 numel(A ...

  2. 证明Ax=0的最小二乘解是ATA的最小特征值对应的特征向量(||x||=1)

    证明: 当 ||x||=1时,Ax=0的最小二乘解是ATAA^TAATA的最小特征值对应的特征向量 证:上式等同于证明如下命题:ATAA^TAATA的最小特征值所对应的特征向量可使||Ax||最小. ...

  3. python求特征值以及特征向量,并且输出最小特征值对应的特征向量

    我们输入一个对角阵 import numpy as np A=np.diag((1,2,3)) #求矩阵特征值以及特征向量 eig_value,eig_vector=np.linalg.eig(rel ...

  4. 幂法 反幂法 matlab,幂法反幂法求解矩阵最大最小特征值及其对应的特征向量

    数值计算解矩阵的按模最大最小特征值及对应的特征向量 一.幂法 1. 幂法简介: 当矩阵A 满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量.矩阵A 需要满足的条件为: (1) 的 ...

  5. 用幂法和反幂法分别计算矩阵按模最大和按模最小的特征值及其特征向量

    // // 用幂法和反幂法分别计算矩阵按模最大和按模最小的特征值及其特征向量 // // #include<stdio.h> #include<math.h> #include ...

  6. 反幂法求矩阵特征值matlab,幂法反幂法求解矩阵最大最小特征值及其对应的特征向量.doc...

    数值计算解矩阵的按模最大最小特征值及对应的特征向量 一.幂法 1. 幂法简介: 当矩阵A满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量.矩阵A需要满足的条件为: 存在n个线性无 ...

  7. PCL ——最小包围盒(画出了最小包围盒并求出顶点坐标)

    PCL --最小包围盒 2018年09月21日 15:31:01 不懂音乐的欣赏者 阅读数:35 标签: PCL包围盒外接矩形最小矩形收起 个人分类: PCL 1.包围盒简介   包围盒也叫外接最小矩 ...

  8. 机器学习中的数学基础:(1)实际应用中矩阵特征值与特征向量的几何意义

    关于特征值.特征向量的讲解有很多的教程,对于这些枯燥的数学基础怎么运用到自己的实际计算机视觉实验中,是一项很重要的任务.算法的底层其实就是数学公式的各种结合与推导,有时间不是我们不能很好的去理解这些算 ...

  9. 矩阵特征分解介绍及雅克比(Jacobi)方法实现特征值和特征向量的求解(C++/OpenCV/Eigen)

    对角矩阵(diagonal matrix):只在主对角线上含有非零元素,其它位置都是零,对角线上的元素可以为0或其它值.形式上,矩阵D是对角矩阵,当且仅当对于所有的i≠j, Di,j= 0. 单位矩阵 ...

最新文章

  1. 【组队学习】【32期】算法的应用
  2. 求表达式1-1/2+1/3-1/4+1/5-1/6+1/7-...+1/n的值
  3. 在ASP.Net Core 中使用枚举类而不是枚举
  4. ADT-bundle
  5. 调用另一个cpp的变量_再谈条件变量—从入门到出家
  6. 使用 Python 解数学方程
  7. 远程删除用户照片?刚刚,拼多多承认了!
  8. 结巴分词python教程_Python笔记:用结巴分词制作词云图
  9. 求一个只包含0、1的矩阵中只包含1的最大子矩阵大小
  10. 编写程序判断变量X的值 是偶数还是奇数,偶数buf为1,奇数buf为0
  11. Emacs Lisp语言
  12. Simulink仿真示波器波形出现小圆圈
  13. 最小生成树(Prim算法,Kruskal算法)
  14. Velocity中使用FCKeditor(FCKeditor for java)
  15. 远程视频监控:MJPG-Streamer
  16. python随笔-质数
  17. 机器学习中的MR和MRR
  18. 1k求和c语言使用方法,(C语言递归实现)S=1k +2k+……+nK(1的K次方,2的K次方等等),N,K从键盘浏览....
  19. 测试工程师,跳槽涨了4k,年总包算下来还降薪了?
  20. 飘浮广告显示脚本类(VBS,JS双版)

热门文章

  1. 零起点学算法24——求正弦和余弦
  2. C++ sizeof 运算符的使用
  3. ViewPager 设置间距的方法
  4. java流程控制语句
  5. 2022-2028年中国橡胶减震产品行业市场研究及前瞻分析报告
  6. Struts2标签库
  7. Android实战技巧之六:PreferenceActivity使用详解
  8. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
  9. JAVA语法基础 3
  10. ecos 编译时无法找到 tclConfig.sh 和 tkConfig.sh