设有n个数据点Pi(xi,yi,zi).
假设平面方程为:a*x+b*y+c*z+d=0,其中a、b、c、d为待定系数a、b、c不能同时为0.
显然,a*x+b*y+c*z+d=0与
k*a*x+k*b*y+k*c*z+k*d=0(k≠0)
表示同一个平面.故,如d不为0,可通过把方程两边同除以d,把常数项化为1;但d=0时,情况稍微复杂一点.
现在说明大致思路,为讨论方便,开始时暂不假设d=1或0.
设拟合平面的方程为∏:a*x+b*y+c*z+d=0.
数据点Pi到平面a*x+b*y+c*z+d=0的距离设为di,
则di^2=(a*xi+b*yi+c*zi+d)^2/(a^2+b^2+c^2),
令L=∑di^2 (i=1,...,n),为目标函数,现欲使L最小.
L可以看成是关于(a,b,c,d)的函数((xi,yi,zi)均已知),
L取最小值的一个必要(非充分)条件是:
∂L/∂a=0,∂L/∂b=0,∂L/∂c=0,∂L/∂d=0,
∂L/∂a=∑2*xi*(a*xi+b*yi+c*zi+d)/(a^2+b^2+c^2) (i=1,...,n)
=A1*a+B1*b+C1*c+D1*d,
其中,
A1=2/(a^2+b^2+c^2)*(∑xi^2)(i=1,...,n),
B1=2/(a^2+b^2+c^2)*(∑xi*yi)(i=1,...,n),
C1=2/(a^2+b^2+c^2)*(∑xi*zi)(i=1,...,n),
D1=2/(a^2+b^2+c^2)*(∑xi)(i=1,...,n),
同理,
∂L/∂b=A2*a+B2*b+C2*c+D2*d,
∂L/∂c=A3*a+B3*b+C3*c+D3*d,
其中,
A2=2/(a^2+b^2+c^2)*(∑yi*xi)(i=1,...,n),
B2=2/(a^2+b^2+c^2)*(∑yi^2)(i=1,...,n),
C2=2/(a^2+b^2+c^2)*(∑yi*zi)(i=1,...,n),
D2=2/(a^2+b^2+c^2)*(∑yi)(i=1,...,n),
A3=2/(a^2+b^2+c^2)*(∑zi*xi)(i=1,...,n),
B3=2/(a^2+b^2+c^2)*(∑zi*yi)(i=1,...,n),
C3=2/(a^2+b^2+c^2)*(∑zi^2)(i=1,...,n),
D3=2/(a^2+b^2+c^2)*(∑zi)(i=1,...,n),
∂L/∂d=∑2*(a*xi+b*yi+c*zi+d)/(a^2+b^2+c^2) (i=1,...,n)
=D1*a+D2*b+D3*c+D4*d,
其中,D4=2n/(a^2+b^2+c^2).
于是有方程组:
A1*a+B1*b+C1*c+D1*d=0,
A2*a+B2*b+C2*c+D2*d=0,
A3*a+B3*b+C3*c+D3*d=0,
D1*a+D2*b+D3*c+D4*d=0,

解此方程组即可.具体如何解,可参考计算方法的书,上面有详细说明.

千万注意:上述矩阵的秩rank<=3, 会的人立刻明白怎么结算了,不会的留言吧.

最小二乘法平面方程拟合计算, 点云法向量估算相关推荐

  1. 多点平面方程拟合c语言,多点最小二乘法平面方程拟合计算

    <多点最小二乘法平面方程拟合计算>由会员分享,可在线阅读,更多相关<多点最小二乘法平面方程拟合计算(5页珍藏版)>请在人人文库网上搜索. 1.平面方程拟合计算平面方程的一般表达 ...

  2. Open3d系列 | 1. Open3d实现点云数据读写、点云配准、点云法向量计算

    如有错误,恳请指出. 从这一篇博客开始,开始利用Open3d来处理点云数据.之后将围绕点云数据的多种处理方式来记录笔记.本篇博客的内容包括点云的文件格式介绍,点云数据的读取,以及点云的配准与点云的法向 ...

  3. matlab 点云法向量计算和用箭头显示

    matlab 点云法向量计算和用箭头显示 点云法向量估计的方法有很多,应用最广泛和普遍的是,基于平面拟合的法向量计算,也就是基于PCA的法向量计算.当计算某个点的法向量时,首先,找到最近的K个点,然后 ...

  4. 点云法向量与点云平面拟合的关系(PCA)

    点云法向量估计的主要思路是对K-近邻的N个点进行平面拟合(平面过N点重心),平面法向量即为所求:所以求法向量就是变相的求拟合平面. 下面我们用最小二乘法求k近邻点云的拟合平面: 当 ||x||=1时, ...

  5. 基于ENVI/IDL 的一键化实现LST-NDVI的干湿边方程拟合,并得到TVDI计算结果图

    ENVI/IDL (5.3版本)一键化实现LST-NDVI的干湿边方程拟合,并得到TVDI计算结果图 0 原理介绍 利用IDL将NDVI异常值进行剔除,NDVI取值范围为0.2~1(植被覆盖区),对反 ...

  6. Meshlab读取三维点云、三维点云重建以及三维点云法向量计算

    Meshlab是一个强大的三维模型处理的软件,在三维点云的处理方面也十分强大,不仅仅可以用三维点云重构出三维模型,还可以计算出三维点云每个点的法向量,这在逆向工程和基于三维点云的隐式曲面重建中非常有用 ...

  7. MeshLab学习笔记——三维点云重建以及三维点云法向量计算

    Meshlab是一个强大的三维模型处理的软件,在三维点云的处理方面也十分强大,不仅仅可以用三维点云重构出三维模型,还可以计算出三维点云每个点的法向量,这在逆向工程和基于三维点云的隐式曲面重建中非常有用 ...

  8. pcl计算点云法向量

    最近因为项目,需要计算点云的法向量,所以在网上看了一些资料,然后知道pcl库里面有这些功能,pcl的法向量计算的原理: pcl里面计算点云(自己的理解) 根据顶点采样最近的局部点云(k个),根据自己的 ...

  9. OpenCV 最小二乘+距离最小拟合圆

    OpenCV 最小二乘+距离最小拟合圆 一. 最小二乘算法 二. 距离最小算法 三. 还可以优化吗 我们经常需要由给定的点精确地拟合出一个圆, 下面讲解从 最小二乘算法 到 距离最小算法 的实现过程, ...

  10. PCL教程指南-估计点云法向量

    PCL教程指南-Estimating Surface Normals in a PointCloud(估计点云法向量) 官方原文档 点云法向指每个点的法向量,它是基于各点所在邻域范围内估计而出,常用方 ...

最新文章

  1. MySQL面试题 | 附答案解析(二十)
  2. byte与char区别
  3. UNIX 环境高级编程 文件和目录
  4. View的事件分发机制简述
  5. Apache2.4.x与Apache2.2.x的一些区别
  6. Codeforces Round #253 DIV1 C 馋
  7. x64 盗版PCHunter
  8. 关于SOME/IP的理解
  9. Cocos Creater 获取和设置世界坐标
  10. win10系统安装+激活+去水印
  11. Golang Fyne项目实战(含源码)
  12. 使用Pixelmator Pro修饰照片
  13. 以太坊拜占庭硬分叉成功!前亚马逊首席科学家加盟京东金融;俄罗斯将发法定数字货币...
  14. 关于《十天学会AVR单片机》的教程头文件AVR_PQ1A.h
  15. 使用jsp+servlet来实现增加和删除功能
  16. selenium 鼠标悬停事件
  17. Win10 升级使用 WSL2
  18. extern声明变量或函数
  19. 快速过一遍计算机基础--操作系统—4.文件管理
  20. Uniapp苹果登录

热门文章

  1. WPF打开子窗口给父窗口添加蒙版效果
  2. 扫雷网站推荐及游戏攻略
  3. Unity3D研究院之静态自动检查代码缺陷与隐患
  4. 嵌入式arm(一)学ARM要掌握的预备知识(本篇文章持续更新)
  5. hdu-5064(dp)
  6. 《俞军产品方法论》阅读笔记2020-08-07
  7. 学计算机要数学吗,学习计算机真的需要数学能力超强吗?
  8. IllustratorCS6-桌面排版与插画绘制-01-使用散点画笔绘制璀璨星云
  9. Joplin使用坚果云WebDAV同步存在的问题以及解决办法
  10. windows 10 提升管理员权限