Octave处理高斯光束

文章目录

    • 读取图像
    • 截取感兴趣区域
    • 强度图
    • 拟合

Octave是一种开源的数值计算软件,主要用于科学计算、数据分析和数值模拟等领域。既提供了一个用户友好的命令行界面,使用户能够通过输入简单的命令来进行各种数学运算和数据操作。也提供了功能完备的GUI窗口,可以时刻监控变量。因其与Matlab相似的语法和功能,因此也被视为Matlab的开源替代品。

用不同的语言和工具处理高斯光束:
Python✨R语言✨Julia✨Mathemetica✨C#✨Excel+VBA✨ImageJ✨Octave

读取图像

Octave与Matlab有着几乎完全相同的语法,堪称Matlab的最佳开源替代。其图像处理方法也与Matlab如出一辙,首先,通过imread打开图像。

Octave界面上方会显示当前目录,若图像在当前目录中,可使用相对路径;否则需要使用绝对路径。

img = imread('test.bmp');%通过相对路径读取图片
img = imread('D:\Code\optics\img\test.bmp');%通过绝对路径读取图片
size(img)
%ans =
%        1024        1280
imshow(img)

下图是Octave的绘图窗口。

在这里插入图片描述

截取感兴趣区域

上图中存在大量的无用信息,目标光斑仅占据很小的一片区域,故需对图像进行截取,首先通过函数ginput选择截取区域。ginput操作的是最后被打开而未被关闭的窗口对象,其输入参数为将要选取的点的个数,在这里我们选择两个点将目标区域框起来,其返回值为选取点的横纵坐标。

和Matlab不同,如果不明确其输出变量X,Y,Btn,那么返回值将只显示第一项,即X。

imshow(img)
[X,Y,Btn] = ginput(2)
%X =
%   353.24
%   434.34
%Y =
%   178.93
%   265.93
%Btn =
%   1
%   1

接下来通过矩阵选取的方式,选择感兴趣的区域,需要注意的是,截取图像时行在前,列在后,而x代表列数,y代表行数。截取之后的图片如下图所示

roi = img(178:265, 353:434);
imshow(roi)

在这里插入图片描述

强度图

灰度图并不直观,相比之下,3D网格图可以更加直观地表现光斑的强度信息,mesh函数可以做到这一点

mesh(roi)

通过view函数,可调整网格图的视角,例如,[0 0 1]表示俯视图

view([0 0 1])

二者效果如下

默认视图view([0 0 1])
在这里插入图片描述在这里插入图片描述

拟合

高斯光束之所以被冠以高斯之名,乃因其在空间中强度呈现出高斯分布,所以接下来就要通过高斯函数对齐进行拟合。然而作为二维数据的图像,在拟合时并不直观,故此可从每一行选出最大值作为单一坐标下的强度,然后再行数据拟合。

arr = max(roi);
arr = double(arr);      %将其转为浮点型
x = 1:length(arr)*1.0;	%创建x坐标
plot(arr)

效果如下

在这里插入图片描述

Octave中并没有内置可视化的数据拟合工具,但开源软件的优势就是,有着无数开发者为其提供新的功能,比如一位瑞士老哥就开发了一款非线性

进入他的主页andreasstahel,点击Octave/Matlab,找到FitToolNL.m并下载。然后在当前Octave窗口,点击文件->打开,以打开FitToolNL.m文件,然后点击绿色三角号运行。输入参数即运行结果如下图所示

在这里插入图片描述

其中, x , y x,y x,y是待拟合变量,右侧function为拟合函数类型, p 0 p_0 p0为初始参数,60差不多是下面曲线的最大值,40差不多是其峰值所在位置。

左下角为拟合结果,得到高斯函数为

57.9767 exp ⁡ − ( x − 38.7699 14.1044 ) 2 57.9767\exp -(\frac{x-38.7699}{14.1044})^2 57.9767exp(14.1044x38.7699)2

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

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

相关文章

关于LayUI表格重载数据问题

目的 搜索框搜索内容重载数据只显示搜索到的结果 遇到的问题 在layui官方文档里介绍的table属性有data项,但使用下列代码 table.reload(test, {data:data //data为json数据}); 时发现,会会重新调用table.render的url拿到原来的数据,并不会显示出来传…

看懂基本的电路原理图(入门)

文章目录 前言一、二极管二、电容三、接地一般符号四、晶体振荡器五、各种符号的含义六、查看原理图的顺序总结 前言 电子入门,怎么看原理图,各个图标都代表什么含义,今天好好来汇总一下。 就比如这个电路原理图来说,各个符号都…

文件监控-IT安全管理软件

文件监控和IT安全管理软件是用于保护企业数据和网络安全的工具。这些工具可以帮助企业监控文件的变化,防止未经授权的访问和修改,并确保数据的安全性和完整性。 一、具有哪些功能 文件监控软件可以实时监控文件系统的活动,包括文件的创建、修…

L1-076:降价提醒机器人

题目描述 小 T 想买一个玩具很久了,但价格有些高,他打算等便宜些再买。但天天盯着购物网站很麻烦,请你帮小 T 写一个降价提醒机器人,当玩具的当前价格比他设定的价格便宜时发出提醒。 输入格式: 输入第一行是两个正整数…

条款13:以对象管理资源

文章目录 没有管理的情况解决办法之unique_ptr智能指针解决办法之shared_ptr智能指针总结 没有管理的情况 资源是指一旦你使用完它,就需要返回系统的东西。 class Investment { ... }; // 投资类型层次结构的基类 Investment* createInvestment(); // 工厂函数&…

2022–2023学年2021级计算机科学与技术专业数据库原理 (A)卷

一、单项选择题(每小题1.5分,共30分) 1、构成E—R模型的三个基本要素是( B )。 A.实体、属性值、关系 B.实体、属性、联系 C.实体、实体集、联系 D.实体、实体…

html-css-js移动端导航栏底部固定+i18n国际化全局

需求:要做一个移动端的仿照小程序的导航栏页面操作,但是这边加上了i18n国家化,由于页面切换的时候会导致国际化失效,所以写了这篇文章 1.效果 切换页面的时候中英文也会跟着改变,不会导致切换后回到默认的语言 2.实现…

oracle 9i10g编程艺术-读书笔记1

根据书中提供的下载代码链接地址,从github上找到源代码下载地址。 https://github.com/apress下载好代码后,开始一段新的旅行。 设置 SQL*Plus 的 AUTOTRACE 设置 SQL*Plus 的 AUTOTRACE AUTOTRACE 是 SQL*Plus 中一个工具,可以显示所执行…

分布式数据库事务故障恢复的原理与实践

关系数据库中的事务故障恢复并不是一个新问题,自70年代关系数据库诞生之后就一直伴随着数据库技术的发展,并且在分布式数据库的场景下又遇到了一些新的问题。本文将会就事务故障恢复这个问题,分别讲述单机数据库、分布式数据库中遇到的问题和…

华为商城秒杀时加密验证 device_data 的算法研究

前言 之前华为商城放出 Mate60 手机时, 想给自己和家人抢购一两台,手动刷了好几天无果后,决定尝试编写程序,直接发送 POST 请求来抢。通过抓包和简单重放发送后,始终不成功。仔细研究,发现 Cookie 中有一个名为 devic…

启动gazebo harmonic

ros2 launch ros_gz_sim gz_sim.launch.py gz_version:8 如果不输入gz_version:8,默认就是6,启动的就是默认版本ign版本 左边那个是8,右边那个是6

基于EPICS modbus模块的单通道电压监测项目

先介绍在本项目中使用到的硬件: 1)开发板:为香橙派Zero2,安装系统如下: Distributor ID: Ubuntu Description: Ubuntu 22.04.2 LTS Release: 22.04 Codename: jammy 2) USB转485模块&…

深入探索MongoDB集群模式:从高可用复制集

MongoDB复制集概述 MongoDB复制集主要用于实现服务的高可用性,与Redis中的哨兵模式相似。它的核心作用是数据的备份和故障转移。 复制集的主要功能 数据复制:数据写入主节点(Primary)时,自动复制到一个或多个副本节…

【Java 进阶篇】Linux 常用命令使用详解:玩转命令行的魔法世界

在计算机的世界里,Linux是一个强大而富有魅力的操作系统。对于很多小白用户来说,刚接触Linux时可能感觉有些陌生,尤其是在命令行界面下。然而,正是这个看似晦涩的命令行,才是Linux系统最为强大和灵活的地方。本文将围绕…

论文阅读——SG-Former

SG-Former: Self-guided Transformer with Evolving Token Reallocation 1. Introduction 方法的核心是利用显著性图,根据每个区域的显著性重新分配tokens。显著性图是通过混合规模的自我关注来估计的,并在训练过程中自我进化。直观地说,我们…

分布式【雪花算法】

雪花算法 背景:在分布式系统中,需要使用全局唯一ID,期待ID能够按照时间有序生成。 **原理:**雪花算法是 64 位 的二进制,一共包含了四部分: 1位是符号位,也就是最高位,始终是0&am…

【教学类-43-11】 20231231 3*3宫格数独提取单元格坐标数字的通用模板(做成2*2=4套、3*2=6套)

背景需求: 1、以前做单元格填充,都是制作N个分开的单元格 (表格8) 2、这次做五宫格数独的Word模板,我图方便,就只用了一个大表格,第六行第六列隐藏框线,看上去就是分开的&#xff…

Spring系列:Spring如何解决循环依赖

❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于Java后端开发,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得关注、点赞、收藏、…

Python+OpenGL绘制3D模型(六)材质文件载入和贴图映射

系列文章 一、逆向工程 Sketchup 逆向工程(一)破解.skp文件数据结构 Sketchup 逆向工程(二)分析三维模型数据结构 Sketchup 逆向工程(三)软件逆向工程从何处入手 Sketchup 逆向工程(四&#xf…

WSL使用VsCode运行cpp文件

文章目录 缘起主要步骤参考 缘起 今天在阅读《C20设计模式-可复用的面向对象设计方法(原书第2版)》的时候,遇到代码想要运行一下,于是决定使用wsl下的vscode配置cpp的环境。 主要步骤 1.安装gcc和g编译器 打开命令行输入wsl&am…