Python 官方文档:入门教程 => 点击学习
目录通过python处理光斑图像1 相关包与图像读取2 图像截取3显示强度4数据拟合问题通过Python处理光斑图像 1 相关包与图像读取 首先需要科学计算必备包numpy和画图包m
首先需要科学计算必备包numpy
和画图包matplotlib.pyplot
,我们通过后者进行图像数据的读取.
plt.imread
读取图片之后为数据格式为numpy数组,可以通过成员函数astype
将整型数据变成浮点型,有利于后期处理。
plt.imshow
将img
的数据加载到窗口,plt.show()
显示绘图窗口,默认显示为伪彩图。
python自动画出了伪彩图,可以通过在plt.imshow
的过程中输入cmap
参数使之得到灰度图
>>> plt.imshow(img,cmap=plt.cm.gray)
<matplotlib.image.AxesImage object at 0x000002E84F5B4788>
>>> plt.show()
由于光斑只占据图片中很小一部分,大量的冗余信息等同于噪声,会对后期的数据处理造成影响,故需截取感兴趣的区域,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()
为了更加直观地反映光斑强度,以图片行列为坐标,可以绘制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()
结果为
光斑在空间中的分布形式呈中心对称的特征,故可抽取出其径向坐标进行降维操作,考虑到数据的稳定性,并排除非信号区的影响,可提取每一列的最大值
>>> 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文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0