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 七种邮件内容发送方法实例
Apr 22 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
Dec 14 Python
详解python3中zipfile模块用法
Jun 18 Python
使用python对文件中的数值进行累加的实例
Nov 28 Python
python3实现表白神器
Apr 09 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
Python自动化测试笔试面试题精选
Mar 12 Python
Django 解决由save方法引发的错误
May 21 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
python cookie反爬处理的实现
Nov 01 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 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之readdir函数用法实例
2014/11/13 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
深入理解Promise.all
2018/08/08 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
基于Pandas读取csv文件Error的总结
2018/06/15 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
python 实现矩阵按对角线打印
2019/11/29 Python
python能否java成为主流语言吗
2020/06/22 Python
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
幼儿园保教管理制度
2014/02/03 职场文书
个人借款担保书
2014/04/02 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
2014年财政工作总结
2014/12/10 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js