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模块学习 datetime介绍
Aug 27 Python
Python是编译运行的验证方法
Jan 30 Python
Python获取指定字符前面的所有字符方法
May 02 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
python动态视频下载器的实现方法
Sep 16 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
Python面向对象实现方法总结
Aug 12 Python
浅析python函数式编程
Sep 26 Python
10个示例带你掌握python中的元组
Nov 23 Python
python基础入门之字典和集合
Jun 13 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图片加水印原理(超简单的实例代码)
2013/01/18 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
jquery 查找新建元素代码
2010/07/06 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
浅谈Javascript事件处理程序的几种方式
2012/06/27 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
JavaScript简介
2015/02/15 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python ZipFile模块详解
2013/11/01 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
关于Keras Dense层整理
2020/05/21 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
大二自我鉴定
2014/01/31 职场文书
中学教师自我鉴定
2014/02/07 职场文书
初中三年毕业生的自我评价分享
2014/02/14 职场文书
高级编程求职信模板
2014/02/16 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
关于保护环境的建议书
2014/08/26 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
Golang jwt身份认证
2022/04/20 Golang