Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】


Posted in Python onDecember 26, 2018

本文实例讲述了Python图像处理之直线和曲线的拟合与绘制。分享给大家供大家参考,具体如下:

在数据处理和绘图中,我们通常会遇到直线或曲线的拟合问题,python中scipy模块的子模块optimize中提供了一个专门用于曲线拟合的函数curve_fit()

下面通过示例来说明一下如何使用curve_fit()进行直线和曲线的拟合与绘制。

代码如下:

# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
#直线方程函数
def f_1(x, A, B):
  return A*x + B
#二次曲线方程
def f_2(x, A, B, C):
  return A*x*x + B*x + C
#三次曲线方程
def f_3(x, A, B, C, D):
  return A*x*x*x + B*x*x + C*x + D
def plot_test():
  plt.figure()
  #拟合点
  x0 = [1, 2, 3, 4, 5]
  y0 = [1, 3, 8, 18, 36]
  #绘制散点
  plt.scatter(x0[:], y0[:], 25, "red")
  #直线拟合与绘制
  A1, B1 = optimize.curve_fit(f_1, x0, y0)[0]
  x1 = np.arange(0, 6, 0.01)
  y1 = A1*x1 + B1
  plt.plot(x1, y1, "blue")
  #二次曲线拟合与绘制
  A2, B2, C2 = optimize.curve_fit(f_2, x0, y0)[0]
  x2 = np.arange(0, 6, 0.01)
  y2 = A2*x2*x2 + B2*x2 + C2
  plt.plot(x2, y2, "green")
  #三次曲线拟合与绘制
  A3, B3, C3, D3= optimize.curve_fit(f_3, x0, y0)[0]
  x3 = np.arange(0, 6, 0.01)
  y3 = A3*x3*x3*x3 + B3*x3*x3 + C3*x3 + D3
  plt.plot(x3, y3, "purple")
  plt.title("3water.com test")
  plt.xlabel('x')
  plt.ylabel('y')
  plt.show()
  return
plot_test()

拟合和绘制解果如下:

Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】

当然,curve_fit()函数不仅可以用于直线、二次曲线、三次曲线的拟合和绘制,仿照代码中的形式,可以适用于任意形式的曲线的拟合和绘制,只要定义好合适的曲线方程即可。

如高斯曲线拟合,曲线函数形式如下:

def f_gauss(x, A, B, C, sigma):
  return A*np.exp(-(x-B)**2/(2*sigma**2)) + C
Python 相关文章推荐
Python编程把二叉树打印成多行代码
Jan 04 Python
python实现按长宽比缩放图片
Jun 07 Python
python实现随机梯度下降法
Mar 24 Python
Python 中的lambda函数介绍
Oct 10 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
python根据txt文本批量创建文件夹
Dec 08 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
python3 logging日志封装实例
Apr 08 Python
Python requests模块cookie实例解析
Apr 14 Python
Python实现迪杰斯特拉算法过程解析
Sep 18 Python
python递归函数用法详解
Oct 26 Python
python处理multipart/form-data的请求方法
Dec 26 #Python
Python实现的简单线性回归算法实例分析
Dec 26 #Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 #Python
python使用knn实现特征向量分类
Dec 26 #Python
python调用staf自动化框架的方法
Dec 26 #Python
Django unittest 设置跳过某些case的方法
Dec 26 #Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 #Python
You might like
PHP 和 MySQL 基础教程(一)
2006/10/09 PHP
php汉字转拼音的示例
2014/02/27 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
jquery 常用操作方法
2010/01/28 Javascript
javascript 自动填写表单的实现方法
2010/04/09 Javascript
模拟select的代码
2011/10/19 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
python批量导出导入MySQL用户的方法
2013/11/15 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
详解python配置虚拟环境
2019/04/08 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
Ruby如何定义一个类
2012/10/08 面试题
大学生毕业的自我鉴定
2013/11/13 职场文书
应届生的求职推荐信范文
2013/11/30 职场文书
销售实习自我鉴定
2013/12/07 职场文书
高中政治教学反思
2014/01/18 职场文书
行政助理工作职责范本
2014/03/04 职场文书