Excel+VBA处理高斯光束

文章目录

    • 1 图片导入与裁剪
    • 2 获取图片数据
    • 3 数据拟合

1 图片导入与裁剪

插入图片没什么好说的,新建Excel,【插入】->【图片】。

由于图像比较大,所以要对数据进行截取,选中图片之后,点击选项卡右端的【图片格式】->【裁剪】,将光斑所在区域截取出来,如图所示

在这里插入图片描述

由于灰度图像在观感上比较单一,故可以通过重新着色的方法,为其添加伪彩色。

首先,复制一张图片,点击【图像格式】->【颜色】->【重新着色】;或者在【颜色】下选择其他变体,

在这里插入图片描述

然后将图片导出,由于Excel功能的限制,我们没法直接导出图片,所以将图片复制到PPT中,然后右键【图片】->【另存为图片】。为了便于后续的处理,保存为【bmp】格式。

2 获取图片数据

在选中图片的值之后,就可以提取图片中的数据了,我们需要用到VBA工具。如果初次使用,选择【文件】->【选项】->【自定义功能区】->选中开发工具。

添加之后,在菜单栏选择【开发工具】->【插入】->【按钮】,从而插入一个按钮,右键按钮->【编辑文字】,更名为【加载数据】。

然后右键按钮->【指定宏】,在弹出的对话框中添入【Load_Click】,然后点击【新建】,便可到达VBA编辑界面。并且已经写好了

Sub Load_Click()
End Sub

接下来我们就开始编写图片的编辑方法。

BMP文件包括三个部分,分别是文件头、颜色映射表和图片数据,其中文件头总计54位,存储着图片的格式宽高等信息;而数据区则根据图片的深度以及颜色信息对像素的值进行存储。

尽管我们拍摄的图像是灰度图,但经过PPT的重新存储,变成了24位的RGB图像,我们只需选择其中的一个通道即可。

VBA中通过单引号'进行注释。

Sub Load_Click()
    Const file As String = "E:\Pictures\Facula1.bmp"
    Dim bytes() As Byte
    Dim width, height, stride As Long   '分别位图像的宽,, 偏移
   
    '获取bmp图片二进制数组
    Open file For Binary As #1 '#1表示文件编号
        ReDim bytes(LOF(1) - 1)      '重新定义bytes的长度
        Get #1, , bytes              '将文件1的内容写入bytes
    Close #1
        
    
    For i = 0 To 3
        start = start + bytes(i + 10) * 256 ^ i
        width = width + bytes(i + 18) * 256 ^ i     'bitmap中第18-21位为列数
        height = height + bytes(i + 22) * 256 ^ i   'bitmap中第22-25位为行数
    Next
    

    stride = width * 3 + 2
    If (stride Mod 4) <> 0 Then
        stride = stride - (stride Mod 4) + 4       'bitmap格式每行必须是4的倍数
    End If
           
    Cells.Clear
    For i = 1 To height
        For j = 1 To width
            pos = start + (j-1) * 3 + (i - 1) * stride
            Cells(i, j).Value = bytes(pos)      '将像素的灰度值赋给单元格
        Next
    Next
End Sub

点击【加载数据】按钮,就可以看图像的数据被加载到单元格中。

若将赋值语句Cells(i, j).Value = bytes(pos)变成颜色变化,则可以通过单元格复现图像。

'...
    For i = 1 To height
        For j = 1 To width
            pos = start + (j-1) * 3 + (i - 1) * stride
            '将单元格的颜色变为图像的颜色
            Cells(i, j).Interior.Color = RGB(bytes(pos + 2), bytes(pos + 1), bytes(pos))
        Next
    Next

点击加载数据,就可以看到如下情景

在这里插入图片描述

3 数据拟合

当我们得到图像中的数据之后,需要对每一行的最大值进行提取。将鼠标定位到第一行数据的最后一列GH,在新的一列GI中输入=MAX(A1:GH1),从而从第一行的所有数据中求得最大值。

然后将鼠标放到刚刚操作的单元格的右下方,当鼠标变成黑色十字的时候双击,即可对这一列进行最大值操作。

得到最大值之后,将这一列的数据复制到新的sheet中,粘贴时如果出现错误,需选择右下角出现的复制选项,并选择粘贴数值。

选中这一列,点击【插入】->【推荐的图表】,从而得到光强分布的散点图,双击图表标题即可对其进行更改。

在这里插入图片描述

在Excel中,提供了初级的数据拟合功能,点击图像右上角的加号,会出现一系列图表元素,最底端即趋势线,鼠标浮动其上,右侧出现一个三角形,点击之后选择最下面的更多选项

可以看到Excel中提供了指数、对数、线性、多项式以及移动平均等多种拟合曲线,可惜并没有我们需要的Gauss函数。

y = a ⋅ exp ⁡ ( − ( x − b c ) 2 ​ ) y=a⋅\exp{(−(\frac{x−b}{c})^2​)} y=aexp((cxb)2)

其中,a的值表示该函数的最大值;b表示其中心值,c表示当y值降到 1 e 2 \frac{1}{e^2} e21分之一处时x距离中心的位置。

然而,我们可以通过对原始数据进行简单的变换

ln ⁡ y = ln ⁡ a − ( x − b ) 2 c 2 ln ⁡ y = − x 2 c 2 + 2 b x c 2 + ln ⁡ a − b 2 c 2 \begin{aligned} \ln y&=\ln a-\frac{(x-b)^2}{c^2}\\ \ln y&=-\frac{x^2}{c^2}+\frac{2bx}{c^2}+\ln a-\frac{b^2}{c^2} \end{aligned} lnylny=lnac2(xb)2=c2x2+c22bx+lnac2b2

Y = ln ⁡ y , A = − 1 c 2 , B = 2 b c 2 , C = ln ⁡ a − b 2 c 2 Y=\ln y, A=-\frac{1}{c^2}, B = \frac{2b}{c^2}, C=\ln a-\frac{b^2}{c^2} Y=lny,A=c21,B=c22b,C=lnac2b2,则Gauss函数变为

Y = A x 2 + B x + C Y=Ax^2+Bx+C Y=Ax2+Bx+C

待拟合成功后,有 c = 1 − A , b = − B 2 A , a = exp ⁡ 4 A C − B 2 4 A c=\frac{1}{\sqrt{-A}},b=-\frac{B}{2A},a=\exp\frac{4AC-B^2}{4A} c=A 1,b=2AB,a=exp4A4ACB2

从而就可以进行多项式拟合了。

所以,首先在【B1】单元格中输入【=LN(A1)】,然后按照刚才的方法,将鼠标放置在单元格的右下角,待其变为黑色十字后双击,从而新建一列数据。

随后,对新建的数据仍然插入推荐的图表,并添加趋势线,然后在趋势线设置栏选中显示公式

在这里插入图片描述

可见,由于存在大量光斑之外的数据,所以拟合效果并不好,所以需要对数据重新选择

在这里插入图片描述

在弹出的选择数据源窗口,重设图表数据区域。在本例中,将其设为=Sheet2!$B$50:$B$130。其中Sheet2为本sheet的名字,$B$50:$B$130表示B列第50行到B列第130行。

在这里插入图片描述

可见拟合效果好了很多,其中 A = − 0.0021 A=-0.0021 A=0.0021 B = 0.1567 B=0.1567 B=0.1567 c = 1.5589 c=1.5589 c=1.5589

根据 c = 1 − A , b = − B 2 A , a = exp ⁡ 4 A C − B 2 4 A c=\frac{1}{\sqrt{-A}},b=-\frac{B}{2A},a=\exp\frac{4AC-B^2}{4A} c=A 1,b=2AB,a=exp4A4ACB2,可新开一个sheet,并在其中输入公式

AB
1-0.0021=1/SQRT(-A1)
20.1567=-A2/A1/2
31.5589=EXP((4*A1*A3-A2^2)/A1/4)

从而计算出c=21.82, b=37.31, a=88.42,但需要注意的是,我们刚刚在选取数据的时候,是从50开始的,所以b=50+37.31=87.31

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Postgresql 的编译安装与包管理安装, 全发行版 Linux 通用

博客原文 文章目录 实验环境信息编译安装获取安装包环境依赖编译安装安装 contrib 下工具代码 创建用户创建数据目录设置开机自启动启动数据库常用运维操作 apt 安装更新源安装 postgresql开机自启修改配置修改密码 实验环境信息 Ubuntu 20.04Postgre 16.1 编译安装 获取安装…

HiveSQL——不使用union all的情况下进行列转行

参考文章&#xff1a; HiveSql一天一个小技巧&#xff1a;如何不使用union all 进行列转行_不 union all-CSDN博客文章浏览阅读881次&#xff0c;点赞5次&#xff0c;收藏10次。本文给出一种不使用传统UNION ALL方法进行 行转列的方法,其中方法一采用了concat_wsposexplode()方…

[经验] 喉咙沙哑的原因及应对方法是什么 #学习方法#其他#媒体

喉咙沙哑的原因及应对方法是什么 生活中&#xff0c;喉咙不舒服是很常见的情况&#xff0c;尤其是喉咙沙哑&#xff0c;让人感到特别难受&#xff0c;影响睡眠和生活质量。那么喉咙沙哑怎么办呢&#xff1f;接下来我会分享一些简单易行的方法&#xff0c;帮助你缓解这种不适感…

搭建yum仓库服务器

安装 1.安装linux 1.1安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 1.2下载 cd /opt/nginx wget http://nginx.org/download/nginx-1.25.3.tar.gz 1.3解压 tar -xvf nginx-1.25.3.tar.gz 1.4配置 cd nginx-1.25.3 ./configure --pre…

【Larry】英语学习笔记语法篇——从句=连词+简单句

目录 三、从句连词简单句 1、必须有连词 主从结构 疑问词的词性 2、名词性从句 同位语从句 形式主语 形式宾语 that的省略 3、形容词性从句&#xff08;上&#xff09; 关系代词 关系词的作用 介词前置问题 4、形容词性从句&#xff08;中&#xff09; 定语关系…

程序的内存模型

内存分区模型 C程序在执行时&#xff0c;将内存大方向分为4个区域 1.代码区&#xff1a;存放函数体的二进制代码&#xff0c;有操作系统进行管理 2.全局区&#xff1a;存放全局变量和静态变量以及常量 3.栈区&#xff1a;由编译器自动分配及释放&#xff0c;存放函数的参数…

开源微服务平台框架的特点是什么?

借助什么平台的力量&#xff0c;可以让企业实现高效率的流程化办公&#xff1f;低代码技术平台是近些年来较为流行的平台产品&#xff0c;可以帮助很多行业进入流程化办公新时代&#xff0c;做好数据管理工作&#xff0c;从而提升企业市场竞争力。流辰信息专业研发低代码技术平…

InternLM大模型实战-2.浦语大模型趣味demo

文章目录 前言笔记正文3个Demo的简要介绍InternLM模型简介Lagent介绍书生灵笔多模态大模型 Demo动手实践模型的下载更多 前言 本文是对于InternLM全链路开源体系系列课程的学习笔记。视频教程&#xff1a;【轻松玩转书生浦语大模型趣味Demo】 https://www.bilibili.com/video/…

appears to be hung in Auto SQL Tuning task

appears to be hung in Auto SQL Tuning task Oracle 自动定时优化任务执行失败分析 错误现象&#xff1a; Sat Feb 10 03:10:57 2024 Process 0x0x00007FFB81BE44A8 appears to be hung in Auto SQL Tuning task Current time 1707505857, process death time 1707505803 …

【医学大模型 尘肺病】PneumoLLM:少样本大模型诊断尘肺病新方法

PneumoLLM&#xff1a;少样本大模型诊断尘肺病新方法 提出背景PneumoLLM 框架效果 提出背景 论文&#xff1a;https://arxiv.org/pdf/2312.03490.pdf 代码&#xff1a;https://github.com/CodeMonsterPHD/PneumoLLM/tree/main 历史问题及其背景&#xff1a; 数据稀缺性问题&a…

DevOps落地笔记-13|自动化测试:提高测试效率的不二之选

上一课时主要介绍了通过 API 管理平台来管理企业内部的 API。持续集成是能够保证软件处于可工作状态的实践&#xff0c;但实施持续集成有一个必不可少的步骤——测试。只有尽可能全面的测试覆盖&#xff0c;才能降低软件出错的概率。但是&#xff0c;大多数企业里还是基于人工来…

第二十六回 母夜叉孟州道卖人肉 武都头十字坡遇张青-Ubuntu 防火墙ufw配置

武松到县里投案&#xff0c;县官看武松是个汉子&#xff0c;就把诉状改成&#xff1a;武松与嫂一时斗殴杀死&#xff0c;后西门庆前来&#xff0c;两人互殴&#xff0c;打死西门庆。上报东平府。东平府尹也可怜武松&#xff0c;从轻发落&#xff0c;最后判了个&#xff1a;脊杖…

2024 年 12 款最佳录屏软件【录屏必备指南】

在数字时代&#xff0c;共享屏幕就像发送短信一样常见。 无论是工作、创建教程还是流媒体游戏&#xff0c;找到合适的截屏软件可以决定您的在线形象。 我们测试并整理了一系列最佳的截屏和屏幕录制工具&#xff0c;可将您的内容提升到一个新的水平。 从功能丰富的选项到用户…

RM电控--机械入门

SW常用的快捷键&#xff1a; 多种视角观看&#xff1a; 左侧为自攻螺丝&#xff0c;右侧为钻尾螺丝 钻尾螺丝可以依靠自身进行钻孔操作&#xff0c;而自攻螺丝打之前必须先打好小孔。 螺钉; 这些螺钉大家认得全吗&#xff1f;你还知道哪些呢&#xff1f;_哔哩哔哩_bilibili …

今年春节联欢晚会中的扑克魔术到底是咋变的?

今年的刘谦给全国观众带来了俩魔术&#xff0c;一个是洗牌一个是撕牌&#xff0c;前面第一个魔术看不出来太神奇了&#xff0c;但是第二魔术感觉挺有趣的我可以简单分析分析。 然后我们列出这个魔术的关键步骤&#xff1a; 打乱四张牌 1 2 3 4 对折、撕开、面向同一个方向重…

机器学习系列——(二十二)结语

随着我们的机器学习系列的探索画上句号&#xff0c;我们不禁感慨于这一领域的广阔和深邃。从最初的基础概念到复杂的算法&#xff0c;从理论的探讨到实际应用的示例&#xff0c;我们一起经历了一段非凡的旅程。机器学习不仅是当前技术创新的核心驱动力之一&#xff0c;也是塑造…

【MySQL进阶之路】MySQL 中表空间和数据区的概念以及预读机制

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

ssm+vue的医药垃圾分类管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的医药垃圾分类管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结…

React18原理: 渲染与更新时的重点关注事项

概述 react 在渲染过程中要做很多事情&#xff0c;所以不可能直接通过初始元素直接渲染还需要一个东西&#xff0c;就是虚拟节点&#xff0c;暂不涉及React Fiber的概念&#xff0c;将vDom树和Fiber 树统称为虚拟节点有了初始元素后&#xff0c;React 就会根据初始元素和其他可…

使用Arcgis裁剪

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、掩膜提取二、随意裁剪三、裁剪 前言 因为从网站下载的是全球气候数据&#xff0c;而我们需要截取成中国部分&#xff0c;需要用到Arcgis的裁剪工具 一、掩…
最新文章