怀着沉痛的心情,拖着疲惫的身心,为了拟合好圆,我实在不得不上最小二乘法了(我上班写的代码不要想了,不可能发在blog里的),现在进入正题。

(1)基本原理

名称            
自变量:x ……
函数(因变量):y ……

求以下拟合函数:

使得:

拟合条件:拟合曲线与各数据点在y方向的误差平方和最小.

拟合函数为一元函数时--函数图形为平面曲线--曲线拟合

解决曲线拟合,最先是确定拟合函数的形式。即适当选取

选幂函数{1,x,x2, ···,xn}, 则多项式拟合函数φ(x)可表示为:

PS:常见的曲线拟合方法:

1.使偏差绝对值之和最小

2.使偏差绝对值最大的最小

3.使偏差平方和最小

按偏差平方和最小的原则选取拟合曲线,并且采取二项式方程为拟合曲线的方法,称为最小二乘法。

a0、a1、a2......an是幂系数,也是拟合所求的未知量。
实际中拟合函数有指数函数、三角函数等,根据数据 的分布特点来选取合适的拟合函数。
将第 i 个样本点的x坐标带入φ(x),得到:

实际中拟合函数有指数函数、三角函数等,根据数据 的分布特点来选取合适的拟合函数。

这个就是二次方程,我们期望S最小。此时,方程中的x、y已知,想求的是a0 a1 a2 ...... an。

S最小的必要条件是:

整理得到如下正规方程组

解此方程组得系数a0 a1 a2 ...... an,, 得出拟合函数φ(x)

最小二乘法:以残差平方和最小问题的解来确定拟合函数

二、超定方程组得最小二乘解

写成向量内积形式:

a0 a1 a2 ...... an为待定系数,满足:

此m个等式如下建立方程组:

方程数(m)多于未知数个数(n+1),此类方程组称为超定方程组。下列正规方程组中k个方程中aj的系数

经推导,得到最小二次方,幂函数拟合公式如下:

ΦT* Φ*a= ΦT*y

其中Φ是样本点坐标x的超定矩阵,将所有x带入该向量[1  x  x^2 ... ...  x^n]中,就得到超定矩阵Φ。ΦT表示Φ的转置

把这些等式表示成矩阵的形式,就可以得到下面的矩阵:

即X*A=Y。

我们只要解出这个线性方程,即可求得拟合曲线多项式的系数矩阵。而在opencv中,有一个专门用于求解线性方程的函数,即cv::solve(),具体调用形式如下:

int cv::solve(    cv::InputArray X, // 左边矩阵X, nxn    cv::InputArray Y, // 右边矩阵Y,nx1    cv::OutputArray A, // 结果,系数矩阵A,nx1    int method = cv::DECOMP_LU // 估算方法);

我们只需要按照上述原理,构造出矩阵X和Y,即可调用该函数,计算出多项式的系数矩阵A

opencv图像处理学习(五十二)——拟合(最小二乘法)相关推荐

  1. opencv图像处理学习(十五)——minMaxLoc函数

    函数原型:  void minMaxLoc( const Mat& src,  double* minVal, double* maxVal=0, Point* minLoc=0, Point ...

  2. java 微信api框架_Java架构学习(五十二)使用框架开发微信微信框架介绍整合微信开发框架WxJava使用微信返回消息模板接口使用WxJava框架发送模板消息http协议参数转义知识...

    一.微信框架介绍 1.access_token是公众号的全局唯一调用接口的凭证,它两个小时更新一次. 获取access_token方法: https请求方式: GET https://api.weix ...

  3. OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五

    OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...

  4. Tensorflow深度学习之十二:基础图像处理之二

    Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474   首先放出原始图像: ...

  5. OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换

    OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...

  6. OpenCV学习笔记(十二)——图像分割与提取

    在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...

  7. JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    JavaWeb学习总结(五十二)--使用JavaMail创建邮件和发送邮件 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两 ...

  8. JavaScript学习(五十二)—继承、call方法和apply方法

    JavaScript学习(五十二)-继承.call方法和apply方法 学习内容 一.继承 二.call方法 三.apply方法 一.继承 所谓继承就是两个构造方法建立起来的某种联系,通过某种联系,可 ...

  9. Python+OpenCV图像处理(五)——图像阈值和二值化

    系列文章 Python+OpenCV图像处理(一)--OpenCV框架与图像插值算法 Python+OpenCV图像处理(二)--几何变换 Python+OpenCV图像处理(三)--彩色空间互换 P ...

  10. 深度学习入门(五十二)计算机视觉——风格迁移

    深度学习入门(五十二)计算机视觉--风格迁移 前言 计算机视觉--风格迁移 课件 样式迁移 易于CNN的样式迁移 教材 1 方法 2 阅读内容和风格图像 3 预处理和后处理 4 抽取图像特征 5 定义 ...

最新文章

  1. tableau技术小积累
  2. CK40N成本估算错误处理
  3. Jquery中使用SweetAlert使弹窗更漂亮
  4. 【Python】Pandas groupby加速处理数据
  5. 基于用户的协同过滤(余弦相似度)
  6. Java中集合(四)LinkedList
  7. mysql中,一条select语句是如何执行的?
  8. 使用 OAuth2-Server-php 搭建 OAuth2 Server
  9. drools6.5_Drools 6.5.0.Final可用
  10. SSM 框架整合 spring 发送邮件功能实现!
  11. ddos源码 ntp_详解 NTP反射型DDos攻击
  12. 13 MM配置-主数据-定义物料状态
  13. STL---常用函数用法大集合-=-更新中...
  14. [C#] 软硬结合第二篇——酷我音乐盒的逆天玩法
  15. PIL 库介绍与简单应用
  16. 京东商品详情数据接口(APP端,H5端),实时了解商品价格走势,接口代码教程
  17. 使用PS批量处理图片大小
  18. Linux操作系统--文本编辑器(保姆级教程)
  19. 【Vue】Vue中mixins的使用方法及实际项目应用详解
  20. 关于与kafka的爱恨交织

热门文章

  1. python 散点图 置信区间_python 置信区间
  2. 根据文件名找到对应的lib库或者包
  3. 解决无法将卷压缩到超出任何不可移动的文件所在的点【磁盘碎片整理】
  4. CSAPP学习笔记——第九章 虚拟内存(一)内存陷阱
  5. 计算机网络第七版谢希仁课后习题3-24,3-25
  6. 第十三届蓝桥杯C++B组答案
  7. MapReduce源码解析之Mapper
  8. C实现SSDP协议的设备发现及设备搜索
  9. 八大名茶,铁观音为首
  10. 全国省市区数据库,带拼音,简称,行政编码,邮政编码等