iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python光学仿真学习处理高斯光束分布图像
  • 240
分享到

Python光学仿真学习处理高斯光束分布图像

2024-04-02 19:04:59 240人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录通过python处理光斑图像1 相关包与图像读取2 图像截取3显示强度4数据拟合问题通过Python处理光斑图像 1 相关包与图像读取 首先需要科学计算必备包numpy和画图包m

通过Python处理光斑图像

1 相关包与图像读取

首先需要科学计算必备包numpy和画图包matplotlib.pyplot,我们通过后者进行图像数据的读取.

plt.imread读取图片之后为数据格式为numpy数组,可以通过成员函数astype将整型数据变成浮点型,有利于后期处理。

plt.imshowimg的数据加载到窗口,plt.show()显示绘图窗口,默认显示为伪彩图。

python自动画出了伪彩图,可以通过在plt.imshow的过程中输入cmap参数使之得到灰度图


>>> plt.imshow(img,cmap=plt.cm.gray)
<matplotlib.image.AxesImage object at 0x000002E84F5B4788>
>>> plt.show()

2 图像截取

由于光斑只占据图片中很小一部分,大量的冗余信息等同于噪声,会对后期的数据处理造成影响,故需截取感兴趣的区域,plt.ginput函数提供一种交互操作方法,可返回鼠标点击的位置,其输入参数为选取点数,输出为点击的点的坐标。


>>> plt.imshow(img)
<matplotlib.image.AxesImage object at 0x000002E857A21448>
>>> plt.ginput(2)
[(717.0757575757577, 299.8290043290042), (783.5692640692644, 233.33549783549768)]

在python中,通过方括号进行矩阵索引,图片的截取方法为


>>> roi = img[233:299,717:783]
>>> plt.imshow(roi)
<matplotlib.image.AxesImage object at 0x000002E84F5B4948>
>>> plt.show()

img/py2.png

3显示强度

为了更加直观地反映光斑强度,以图片行列为坐标,可以绘制3D强度图。

绘制二维曲线,要求输入相应的自变量和因变量,通过点和点的一一对应,画出曲线。三维图像绘制亦然,通过np.meshgrid生成网格坐标,作为其 x , y x,y x,y向的自变量,其输入参数为两个一维数组,返回两个二维数组,用以表示这两个数组方向的坐标。


>>> xNum,yNum = roi.shape						#获取roi的维度
>>> xAxis,yAxis = np.meshgrid(range(yNum),range(xNum))	#range创建长度为xNum的自然数列
>>> ax = plt.GCa(projection='3d')				#建立3D坐标轴
>>> ax.plot_surface(xAxis,yAxis,roi)			#创建面元图
<mpl_toolkits.mplot3d.art3d.Poly3DCollection object at 0x0000019EAFF19D48>
>>> plt.show()

结果为

img/py3.png

4数据拟合

光斑在空间中的分布形式呈中心对称的特征,故可抽取出其径向坐标进行降维操作,考虑到数据的稳定性,并排除非信号区的影响,可提取每一列的最大值


>>> arr = np.max(roi,0)
>>> x = np.arange(len(arr))
>>> plt.plot(x,arr)
[<matplotlib.lines.Line2D object at 0x0000019EB469EB48>]
>>> plt.show()

结果如图所示

在这里插入图片描述

在python中,需要通过引入科学计算库scipy中的优化拟合包optimize中的curve_fit函数来进行数据的高斯拟合。curve_fit的输入参数为拟合函数,自变量和因变量;输出参数为拟合函数中的其他参数以及拟合评价参数。

其中高斯函数的表达形式为

在这里插入图片描述


>>> from scipy.optimize import curve_fit
>>> def gauss(x, a, b, c):
...     return a*np.exp(-(x-b)**2/c**2)
...
>>> abc,  para = curve_fit(gauss,x,arr)
>>> abc							#即上式中的a,b,c
array([89.72326971, 35.58522403, 20.86186403])	
>>> fitValue = gauss(x,abc[0],abc[1],abc[2])	#拟合值
>>> plt.scatter(x,arr)			#绘制原始数据的散点图
<matplotlib.collections.PathCollection object at 0x0000019EB5438D88>
>>> plt.plot(x,fitValue)		#绘制拟合数据的曲线图
[<matplotlib.lines.Line2D object at 0x0000019EB46D4048>]
>>> plt.show()

在这里插入图片描述

问题

如果包没有安装的话,可以在命令行中用pip文件进行安装


> pip install numpy
> pip install matplotlib
> pip install scipy

以上就是Python光学仿真学习处理高斯光束分布图像的详细内容,更多关于Python处理高斯光束分布图像的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python光学仿真学习处理高斯光束分布图像

本文链接: https://www.lsjlt.com/news/154902.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python光学仿真学习处理高斯光束分布图像
    目录通过python处理光斑图像1 相关包与图像读取2 图像截取3显示强度4数据拟合问题通过python处理光斑图像 1 相关包与图像读取 首先需要科学计算必备包numpy和画图包m...
    99+
    2024-04-02
  • Python光学仿真学习Gauss高斯光束在空间中的分布
    目录Gauss光束强度的表达式为 如图所示 左上图和左下图表示激光传输过程中的其束腰半径的变化情况;右图则表示高斯光束某一横截面处激光的能量分布。 绘制代码如下 import...
    99+
    2024-04-02
  • Python光学仿真光的偏振编程理解学习
    光的偏振 由于光波是横波,所以对于任意一个光波,其振幅方向与传播方向在一个固定的平面内。换言之,一束光波可以存在振幅方向不同的一群光波,对于其中一个光波而言,其振幅方向即为偏振方向。...
    99+
    2024-04-02
  • Python光学仿真之对光的干涉理解学习
    光的干涉 干涉即两束光在叠加过程中出现的强度周期性变化情况,其最简单的案例即为杨氏双缝干涉。 如图所示,光从 S S S点发出,通过两个狭缝 S 1 , S 2 S_1,S_2 S...
    99+
    2024-04-02
  • Python光学仿真理解Jones矩阵学习
    目录Jones向量Jones矩阵Jones矩阵的表示Jones向量 假设光波沿z轴传播,那么其三个方向的电场分量可以表示为 Jones矩阵 能够保证二维列向量形状不变的运算有无穷...
    99+
    2024-04-02
  • Python光学仿真wxpython之DC绘图
    一般来说,系统与绘图程序之间的信息交换是由图形设备接口(Graphics Device Interface,GDI)实现的,在wxpython中,通过device context(D...
    99+
    2024-04-02
  • Python光学仿真学习衍射算法初步理解
    对衍射最经典的解释是Huygens-Fresnel原理,Huygens认为波阵面上每一点都会成为新的波源,这些子波源的相互干涉就形成了衍射。这显然是一种离散的观点,仿佛是专门为程序员...
    99+
    2024-04-02
  • python光学仿真相速度和群速度计算理解学习
    目录波动模型相速度群速度从编程的角度来说,波动光学在某些情况下可以简单地理解为在光线模型的基础上,引入一个相位项。 波动模型 一般来说,三个特征可以确定空间中的波场:频率、振幅和相位...
    99+
    2024-04-02
  • python光学仿真学习wxpython创建手速测试程序
    滚动条是什么大家自然都是知道的,可以非常直观地显示数据的变化,或者可以非常方便地改变某些数值。 此前在介绍按钮、静态文本、输入文本这三个控件时,相对来说比较乏味,所以这次我们采用需求...
    99+
    2024-04-02
  • Python光学仿真从Maxwell方程组到波动方程矢量算法理解学习
    Maxwell方程组是十九世纪最伟大的公式,代表了传统物理学人对公式美学的孜孜追求,也影响了无数后来者的物理美学品味。 回顾历史,当1864年,Maxwell发出那篇著名的《电磁场的...
    99+
    2024-04-02
  • Python光学仿真wxpython透镜演示系统计算与绘图
    目录计算与绘图计算与绘图 这里的计算主要包括两个部分,分别是通过滚动条的参数得到光学器件的特征,这一点此前已经备述。其二则是光在传播过程中所产生的各种行为,反射折射函数也都已经讲过了...
    99+
    2024-04-02
  • Python光学仿真数值分析求解波动方程绘制波包变化图
    波动方程数值解 波动方程是三大物理方程之一,也就是弦振动方程,其特点是时间与空间均为二阶偏导数。其自由空间解便是我们熟知的三角函数形式,也可以写成自然虚指数形式。 一般来说,既然有了...
    99+
    2024-04-02
  • Python高光谱遥感影像处理问题详细分析讲解
    目录前言1.波段合并2.波段拆分3.影像裁剪4.批量影像裁剪前言 在写波段配准相关代码时经常需要用到tif影像的波段合成和分解,虽然可以用ENVI才处理,但是每次都要打开再设置一些参...
    99+
    2023-01-28
    Python高光谱遥感影像处理 Python影像处理
  • 【HSI】高光谱的数据集分类深度学习实战及代码理解
    【HSI】高光谱的数据集分类深度学习实战及代码理解 文章目录 【HSI】高光谱的数据集分类深度学习实战及代码理解一、配置文件编写二、高光谱图像的处理2.1图像数据变换2.2 数据整合2.3 数...
    99+
    2023-10-01
    python 深度学习 机器学习
  • 深入学习Python+Opencv常用四种图像处理操作
    目录改变色彩空间: cv.cvtColor()改变图像大小:cv.resize()二维卷积操作常用模糊opencv图像处理(深度学习中常用的) 改变色彩空间: cv.cvtColor...
    99+
    2024-04-02
  • Python计算机视觉入门漫谈:图像处理和分析的初学者指南
    计算机视觉是人工智能领域的一个重要分支,主要研究计算机如何从数字图像或视频中提取有意义的信息。计算机视觉技术广泛应用于各个领域,如医学成像、安全监控、机器人导航、工业自动化等。 对于初学者来说,学习计算机视觉的最好方法之一就是使用Pyt...
    99+
    2024-02-07
    Python 计算机视觉 图像处理 图像分析 OpenCV
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作