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 ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
Python中random模块用法实例分析
May 19 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
scrapy爬虫完整实例
Jan 25 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
Python多进程写入同一文件的方法
Jan 14 Python
python批量下载抖音视频
Jun 17 Python
Python二进制文件读取并转换为浮点数详解
Jun 25 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
vscode配置anaconda3的方法步骤
Aug 08 Python
Python读取ini配置文件传参的简单示例
Jan 05 Python
python用tkinter开发的扫雷游戏
Jun 01 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
Yii2.0预定义的别名功能小结
2016/07/04 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
JavaScript中的事件处理
2008/01/16 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
python使用xmlrpc实例讲解
2013/12/17 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
python数据爬下来保存的位置
2020/02/17 Python
让IE支持HTML5的方法
2012/12/11 HTML / CSS
生产车间实习自我鉴定
2013/09/23 职场文书
大学生个人自我鉴定
2013/12/03 职场文书
感恩寄语大全
2014/04/11 职场文书
公司节能减排倡议书
2014/05/14 职场文书
婚宴主持词
2015/06/30 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
大学学生会竞选稿
2015/11/19 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
Nginx配置使用详解
2022/07/07 Servers