opencv图像处理学习(五十二)——拟合(最小二乘法)
怀着沉痛的心情,拖着疲惫的身心,为了拟合好圆,我实在不得不上最小二乘法了(我上班写的代码不要想了,不可能发在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图像处理学习(五十二)——拟合(最小二乘法)相关推荐
- opencv图像处理学习(十五)——minMaxLoc函数
函数原型: void minMaxLoc( const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, Point ...
- java 微信api框架_Java架构学习(五十二)使用框架开发微信微信框架介绍整合微信开发框架WxJava使用微信返回消息模板接口使用WxJava框架发送模板消息http协议参数转义知识...
一.微信框架介绍 1.access_token是公众号的全局唯一调用接口的凭证,它两个小时更新一次. 获取access_token方法: https请求方式: GET https://api.weix ...
- OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五
OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...
- Tensorflow深度学习之十二:基础图像处理之二
Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474 首先放出原始图像: ...
- OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换
OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...
- OpenCV学习笔记(十二)——图像分割与提取
在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...
- JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件
JavaWeb学习总结(五十二)--使用JavaMail创建邮件和发送邮件 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两 ...
- JavaScript学习(五十二)—继承、call方法和apply方法
JavaScript学习(五十二)-继承.call方法和apply方法 学习内容 一.继承 二.call方法 三.apply方法 一.继承 所谓继承就是两个构造方法建立起来的某种联系,通过某种联系,可 ...
- Python+OpenCV图像处理(五)——图像阈值和二值化
系列文章 Python+OpenCV图像处理(一)--OpenCV框架与图像插值算法 Python+OpenCV图像处理(二)--几何变换 Python+OpenCV图像处理(三)--彩色空间互换 P ...
- 深度学习入门(五十二)计算机视觉——风格迁移
深度学习入门(五十二)计算机视觉--风格迁移 前言 计算机视觉--风格迁移 课件 样式迁移 易于CNN的样式迁移 教材 1 方法 2 阅读内容和风格图像 3 预处理和后处理 4 抽取图像特征 5 定义 ...
最新文章
- tableau技术小积累
- CK40N成本估算错误处理
- Jquery中使用SweetAlert使弹窗更漂亮
- 【Python】Pandas groupby加速处理数据
- 基于用户的协同过滤(余弦相似度)
- Java中集合(四)LinkedList
- mysql中,一条select语句是如何执行的?
- 使用 OAuth2-Server-php 搭建 OAuth2 Server
- drools6.5_Drools 6.5.0.Final可用
- SSM 框架整合 spring 发送邮件功能实现!
- ddos源码 ntp_详解 NTP反射型DDos攻击
- 13 MM配置-主数据-定义物料状态
- STL---常用函数用法大集合-=-更新中...
- [C#] 软硬结合第二篇——酷我音乐盒的逆天玩法
- PIL 库介绍与简单应用
- 京东商品详情数据接口(APP端,H5端),实时了解商品价格走势,接口代码教程
- 使用PS批量处理图片大小
- Linux操作系统--文本编辑器(保姆级教程)
- 【Vue】Vue中mixins的使用方法及实际项目应用详解
- 关于与kafka的爱恨交织