最小二乘平面拟合。
假设有n多个点,我们需要对这n多个点进行平面拟合,我们会考虑采用最小二乘法去拟合这个平面。 下面我们介绍以下最小二乘拟合平面的原理: ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1b754fdb2e546050d6cf2a5439324018.png) 从推导过程分析,我们只需要计算出所有点的系数矩阵,然后等式同时左乘系数矩阵的逆,我们便能很容易的计算出a,b,c
C++实现:
实现思路:(此处随机以一个已知平面生成了一个平面点集) 1.首先初始化一个系数矩阵和结果矩阵。 2.判断系数矩阵是否为奇异阵 3.求逆,计算结果
//作者:dwy
//日期:2019/07/09
//用途:最小二乘拟合平面
#include
#include
#include
using namespace std;
using namespace cv;
void creatTestData(vector &output)
{
RNG rng(12345);
int a = 10;
int b = 2;
int c = 5;
cout
Mat dst = Mat(3, 3, CV_32F, Scalar(0));//初始化系数矩阵A
Mat out = Mat(3, 1, CV_32F, Scalar(0));//初始化矩阵b
for (int i = 0;i
cout
cout |