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之不要红头文件(1)
Sep 28 Python
Python时间获取及转换知识汇总
Jan 11 Python
python中requests和https使用简单示例
Jan 18 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
django的autoreload机制实现
Jun 03 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 Python
python 使用cycle构造无限循环迭代器
Dec 02 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
python异常中else的实例用法
Jun 15 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
php图片添加水印例子
2016/07/20 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
用脚本调用样式的几种方法
2006/12/09 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
jQuery技巧总结
2011/01/01 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
Python实现图片尺寸缩放脚本
2018/03/10 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
美国创意之家:BulbHead
2017/07/12 全球购物
银行工作检查书范文
2014/01/31 职场文书
主题婚礼策划方案
2014/02/10 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
文明礼貌主题班会
2015/08/14 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android