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 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
Python代码的打包与发布详解
Jul 30 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
解决python升级引起的pip执行错误的问题
Jun 12 Python
Python 串口读写的实现方法
Jun 12 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
python实现遍历文件夹图片并重命名
Mar 23 Python
浅谈keras2 predict和fit_generator的坑
Jun 17 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 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
在线短消息收发的程序,不用数据库
2006/10/09 PHP
用ODBC的分页显示
2006/10/09 PHP
php查询及多条件查询
2017/02/26 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
索趣科技的答案
2007/02/07 Javascript
javascript jQuery插件练习
2008/12/24 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
python版微信跳一跳游戏辅助
2018/01/11 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
超市总经理岗位职责
2014/02/02 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
最常使用的求职信
2014/05/25 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
担保书范文
2019/07/09 职场文书
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android