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多线程学习资料
Dec 19 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
Python创建一个空的dataframe,并循环赋值的方法
Nov 08 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
Django上线部署之IIS的配置方法
Aug 22 Python
django项目中新增app的2种实现方法
Apr 01 Python
深入了解Python enumerate和zip
Jul 16 Python
linux mint中搜狗输入法导致pycharm卡死的问题
Oct 28 Python
next在python中返回迭代器的实例方法
Dec 15 Python
Python 随机按键模拟2小时
Dec 30 Python
Python3中最常用的5种线程锁实例总结
Jul 07 Python
如何在python中实现ECDSA你知道吗
Nov 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
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
php错误日志简单配置方法
2016/07/11 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
php-fpm重启导致的程序执行中断问题详解
2019/04/29 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
关于JavaScript的一些看法
2009/05/27 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
python 统计代码行数简单实例
2017/05/04 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
Python3实现购物车功能
2018/04/18 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
Python中实现输入一个整数的案例
2020/05/03 Python
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
高级Java程序员面试题
2016/06/23 面试题
法定代表人身份证明书(含说明)
2014/10/02 职场文书
诚信承诺书
2015/01/19 职场文书
房产公证书格式
2015/01/26 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS