C++使用最小二乘法计算点云法向量原理以及全部代码

本文介绍了如何使用最小二乘原理,通过查找点云中邻近点,确定一个平面使其到所有点的距离平方和最小,从而计算出该点云的法向量。详细步骤包括构建矩阵方程和求解系数,最终通过矩阵运算得到法向量的精确表达。

最小二乘计算点云法向量原理

对于任意一点 p(x,y,z)p(x, y, z)p(x,y,z)查找其一定领域内的点{ pi}\{ {p_i}\}{ pi}

求得一个平面 ∏:a0x+a1y+a2z+1=0\prod: a_0x + a_1y+a_2z + 1 = 0:a0x+a1y+a2z+1=0使得其到平面距离的平方和最小,即:

min∑i=1ndist(pi,∏)min \sum_{i=1}^{n}dist(p_i, \prod)mini=1ndist(pi,) = min∑i=1n(a0xi+a1yi+a2zi+1)2min \sum_{i=1}^{n}(a_0x_i + a_1y_i+a_2z_i + 1 )^2mini=1n(a0xi+a1yi+a2zi+1)2

S=min∑i=1n(a0x+a1y+a2z+1)2S = min \sum_{i=1}^{n}(a_0x + a_1y+a_2z + 1 )^2S=mini=1n(a0x+a1y+a2z+1)2
要使得S最小,则∂S∂a0=0,∂S∂b0=0,∂S∂c0=0\frac{\partial S}{\partial a_0} = 0, \frac{\partial S}{\partial b_0} = 0, \frac{\partial S}{\partial c_0} = 0a0S=0,b0S=

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值