python打造光斑处理系统6:高斯拟合

文章目录

    • 构建拟合函数
    • 数据获取
    • 打印信息

光斑处理:python处理高斯光束的图像
光斑处理系统:

  • 程序框架🌟打开图像🌟参数对话框/伪彩映射🌟裁切ROI
  • 光强分布

构建拟合函数

scipy中提供了非线性最小二乘回归算法,在曲线拟合方面有着不错的表现,所以下面先不考虑UI,创建一个高斯拟合工具,非常简单,如下图所示

from scipy.optimize import curve_fitdef fitGauss(x, y):gauss = lambda x,a,b,c : a*np.exp(-(x-b)**2/c**2)abc,para = curve_fit(gauss,x,y)Y = gauss(x,abc[0],abc[1],abc[2])info = "fit Model : a*exp(-(x-b)^2/c^2)\n"info += f"a={abc[0]:3f},b={abc[1]:3f},c={abc[2]:3f}"info += f"\nfit para:\n{para}"return Y, info

其中, x , y x,y x,y是用于曲线拟合的数据, Y Y Y是拟合曲线,abc是一个包含 a , b , c a, b, c a,b,c的数组,这三个参数即可组成一个高斯函数

y = a exp ⁡ [ − ( x − b ) 2 c 2 ] y=a\exp[-\frac{(x-b)^2}{c^2}] y=aexp[c2(xb)2]

数据获取

有了拟合函数,接下来只要生成适用于拟合的数据,就可以得到拟合曲线了,为此,暂时对图像按列取最大值,并以此作为待拟合数据。

在完成数据拟合后,需要分别用散点图绘制原始数据,并用曲线图绘制拟合结果,img_fit定义如下。

    def img_fit(self):y = np.max(self.img, 0)x = np.arange(len(y))Y, info = fitGauss(x,y)self.fig.clf()ax = self.fig.gca()ax.scatter(x,y,marker='.',label="origin data")ax.plot(x,Y,lw=1, label="fit data")ax.legend()self.canvas.draw()

先点击【裁切】,在弹出对话框中输入【thres】模式,然后点击【拟合】,运行结果如下

在这里插入图片描述

打印信息

尽管绘制了数据,但图窗中并没有空间输出具体的拟合参数,所以也无法评价光束的拟合信息。为此,可以创建一个对话框,专门用于打印相关信息,

def showInfo(txt):root = tk.Tk("help")root.title("光斑分析工具帮助文件")text = tk.Text(root)text.pack(expand=1,fill=tk.BOTH)text.insert(tk.END,txt)root.mainloop()

然后再img_fit绘图之后加上一行

        showInfo(info)

从而拟合结束之后,就会弹出拟合的参数信息,至此,一个基本的光斑分析工具就算完成了。

fit Model : a*exp(-(x-b)^2/c^2)
a=58.680398,b=27.761098,c=19.362408
fit para:
[[ 0.38468135 -0.0015651  -0.09690099][-0.0015651   0.02802167  0.00143946][-0.09690099  0.00143946  0.06715842]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449259.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

颐和园龙纹珍宝展亮相,文物预防保护科技护航

在皇家园林颐和园的深处,一场独特的文化盛宴正静静上演。2月1日,“祥龙贺岁—颐和园藏龙纹题材文物特展”在德和园华丽揭幕。此次特展汇聚了66件珍贵文物,包括玉器、瓷器、书画、珐琅、家具等,每一件都是颐和园园藏的瑰宝。这些文…

Javascript | JS如何断点测试(WebStorm)

JavaScript的断点与之前所学到的Java和python在jetbrain系列编辑器中的断点debug不太一样,往常我们在编写python的时候用pycharm的时候是直接断点进入debug的,就像下面这样 只要直接在代码中断点,然后运行debug功能即可 但是在WebStorm中不是…

Linux 多线程 | 线程的互斥

在前面的文章中我们讲述了多线程的一些基本的概念以及相关的操作,那么在本章中我们就将继续讲述与多线程相关的同步与互斥之间的问题。 首先我们使用一个例子引出我们的问题,又一个全局的变量g_val 100,这个变量是被所有的执行流所共享的&a…

通过 ChatGPT 的 Function Call 查询数据库

用 Function Calling 的方式实现手机流量包智能客服的例子。 def get_sql_completion(messages, model"gpt-3.5-turbo"):response client.chat.completions.create(modelmodel,messagesmessages,temperature0,tools[{ # 摘自 OpenAI 官方示例 https://github.com/…

Jetpack Compose系列(1)-初识Jetpck

Jetpack Compose是什么 2019年的I/O大会上,Google宣布Kotlin成为Android开发首选语言(这次不是第一次说了),且后续会有新的Jetpack API和功能将在Kotlin中提供,并同时开源Jetpack Compose。 简介 Jetpack是一套库、…

题目: 有1234个数字, 组成多个互不相同且无重复数字的三位数? 都是多少?

lua脚本如下 最原始的解题方法 local str{} local i, j, k0, 0, 0 for i1, 4 do for j1, 4 do for k1, 4 do if i~j and i~k and j~k then str[#str1]i..j..k end end end end print("组成的数有"..#str) print(table.unpack(str)) 运行的结果如下 组成的数有24 1…

EF Core入门例子(以SqLite为数据库)

测试环境: visual studio 2017 .net core 2.1 具体步骤如下: 1 新增名称为EFCoreDemo的.net core控制台程序,版本选择.net core 2.1,项目不能放到带中文的目录下,不然到后面执行Add-Migration命令时会报如下的错误…

【android】对于google-webrtc的性能中, memory leak

目录 zlmediakit->webrtcplay->app webrtcutil1/3 测试程序等 zlmediakit->webrtcplay->app 编译sdk 32 有时候会从开始新增5M,就稳定在一个值了 webrtcutil1/3 测试程序等 编译sdk 30

基于springboot实现二次元商品购物系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现二次元商品购物系统演示 摘要 时代的变化速度实在超出人类的所料,21世纪,计算机已经发展到各行各业,各个地区,它的载体媒介-计算机,大众称之为的电脑,是一种特高速的科学仪器&#xff0…

LeetCode:138. 随机链表的复制之如何有效copy

自己复制的话,很容易写出来一个时间复杂度O(n ^ 2) 空O(n)的做法 我们可以参考基因的复制, 目录 题目: 实现思路(基因复制式的copy): 官方快慢指针解法&…

呼叫中心座席转接策略

在企业进行批量呼出任务的时候,为了最大效率使用坐席,通常是以班组为单位,进行批量呼出任务。在选择班组作为呼叫业务的基本单位时,就涉及到为呼叫选择坐席策略。 OKCC系统的班组对于选择坐席设计了五种策略,即轮选、最…

TCP/IP详细介绍以及TCP/IP寻址

目录 ​编辑 1. TCP/IP 介绍 2. 计算机通信协议(Computer Communication Protocol) 3. 什么是 TCP/IP? 4. 在 TCP/IP 内部 5. TCP 使用固定的连接 6. IP 是无连接的 7. IP 路由器 8. TCP/IP 9. TCP/IP 寻址 10. IP地址 …