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虚拟环境virualenv的安装与使用
Dec 18 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
python实现搜索文本文件内容脚本
Jun 22 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
Python爬虫抓取技术的一些经验
Jul 12 Python
Pytorch之view及view_as使用详解
Dec 31 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
python数字类型math库原理解析
Mar 02 Python
详解Flask前后端分离项目案例
Jul 24 Python
python中使用.py配置文件的方法详解
Nov 23 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
Feb 22 Python
Python 循环读取数据内存不足的解决方案
May 25 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 mysql数据库操作类
2008/06/04 PHP
PHP7匿名类用法分析
2016/09/26 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
javascript实现的登陆遮罩效果汇总
2015/11/09 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
介绍Python中的文档测试模块
2015/04/28 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
python实现控制COM口的示例
2019/07/03 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
授权委托书格式模板
2014/04/03 职场文书
诚信考试倡议书
2014/04/15 职场文书
2014年双拥工作总结
2014/11/21 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书