PCL最小二乘法进行平面拟合原理

Posted jiangxing11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PCL最小二乘法进行平面拟合原理相关的知识,希望对你有一定的参考价值。

最小二乘法进行平面拟合原理

1 最小二乘原理

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小 。在图像领域,最小二乘法常用于直线、曲线拟合、平面拟合等。
首先我们来熟悉下最小二乘问题。考虑线性方程组Ax=b,其中A为mxn矩阵且m>n。这个方程一般不存在解x。因此,我们的任务是求最小化范数||A x ˉ \\bar x xˉ-b||的向量 x ˉ \\bar x xˉ。当x取遍所有值时,Ax将遍历A的整个列空间。因此我们的任务是在A的列空间中寻求最接近b的那个向量。因此,A x ˉ \\bar x xˉ-b必然是与A的列空间垂直的向量。因此
A T ( A x ˉ − b ) = 0 A^T(A\\bar x-b)=0 AT(Axˉb)=0
于是我们得到一个nxm的线性方程
( A T A ) x ˉ = A T b (A^TA)\\bar x=A^Tb (ATA)xˉ=ATb
可以通过 x ˉ = ( A T A ) − 1 A T b \\bar x=(A^TA)^-1A^Tb xˉ=(ATA)1ATb来求解
这个方程有多个叫法,有些称为正规方程,有些称为法线方程。这个解 x ˉ \\bar x xˉ其实就是Ax=b的最小二乘解。
很多人可能觉得这个不够直观,那么可以从另外一个角度去解释,举个例子:
x 1 + x 2 = 2 x 1 − x 2 = 1 x 1 + x 2 = 3 \\begincasesx_1+x_2=2\\\\x_1-x_2=1\\\\x_1+x_2=3\\endcases x1+x2=2x1x2=1x1+x2=3
根据线性代数的知识,m个方程n个未知量m>n时通常无解,但是虽然不能求出Ax=b的解,那何不退而求其次,去寻找与解近似的向量 x ˉ \\bar x xˉ
那么如何定义与解相似,一般使用欧氏距离来进行度量,即两点间的距离,这其实很好理解,越相似,欧氏距离越近,这样求出的 x ˉ \\bar x xˉ被称为最小二乘解。
将我们开始举的例子写成矩阵形式:
[ 1 1 1 − 1 1 1 ] [ x 1 x 2 ] = [ 2 1 3 ] \\beginbmatrix1&1\\\\1&-1\\\\1&1\\endbmatrix\\beginbmatrixx_1\\\\x_2\\endbmatrix=\\beginbmatrix2\\\\1\\\\3\\endbmatrix 111111[x1x2]=213
写成等价方程为:
x 1 [ 1 1 1 ] + x 2 [ 1 − 1 1 ] = [ 2 1 3 ] x_1\\beginbmatrix1\\\\1\\\\1\\endbmatrix+x_2\\beginbmatrix1\\\\-1\\\\1\\endbmatrix=\\beginbmatrix2\\\\1\\\\3\\endbmatrix x1111+x2111=213
对于任意 mxn 方程组Ax=b都可以看做向量方程:
x 1 v 1 + x 2 v 2 + . . . + x n v n = b x_1v_1+x_2v_2+...+x_nv_n=b x1v1+x2v2+...+xnvn=b
其实也就是把b 看做A的列向量的线性组合,对应的系数即为 x i x_i xi ,对于举的例子来说,就是把b表示为另外两个三维向量的线性组合,由于三维空间中两个三维向量的组合生成一个平面,方程仅当b在这个平面上才有解,推广至m个方程n个未知量m>n 时也是相同的情况。如下图所示,向量A x ˉ \\bar x xˉ-b(右下图虚线部分)与A所在平面垂直,也就是该平面的法向量。

以上就是对最小二乘的直观上的解释。当然,想把最小二乘法学透彻光看这些还是不够。因为还存在非线性,带约束和不带约束等情况。

2 最小二乘拟合平面

下面来介绍下最小二乘拟合平面的原理,已知空间中的一些离散点,对其进行平面拟合。首先,平面方程的一般式如下:
a x + b y + c z + d = 0 ax+by+cz+d=0 ax+by+cz+d=0
我们假设 c ≠ 0 c\\neq0 c=0的情况。那么 z = − a c x − b c y − d c z=-\\frac a c x- \\frac b c y- \\frac d c z=caxcbycd
a 0 = − a c a_0=-\\frac ac a0=ca, a 1 = − b c a_1=-\\frac bc a1=cb , a 2 = − d c a_2=-\\frac dc a2=cd以上是关于PCL最小二乘法进行平面拟合原理的主要内容,如果未能解决你的问题,请参考以下文章

什么是最小二乘法回归分析?

矩阵参数怎么用最小二乘法拟合

PCL 平面拟合——最小二乘

基于最小二乘法的点云空间平面拟合(C++实现)

Python最小二乘法拟合与作图

python_numpy最小二乘法的曲线拟合