通过matlab处理高斯光场分布图像
发布日期:2021-10-06 15:05:23 浏览次数:14 分类:技术文章

本文共 1111 字,大约阅读时间需要 3 分钟。

文章目录

光场分布图像处理

1 读图与显示

当被打开文件存在于Matlab的工作路径中时,可以使用相对路径;否则需要使用绝对路径。

读取图片的函数为imread,显示图片的函数为imshow

>> img = imread('test.bmp');%通过相对路径读取图片>> size(img)ans =        1024        1280>> img = imread('D:\MATLAB\Workfold\1106\test.bmp');%通过绝对路径读取图片>> size(img)ans =        1024        1280>> imshow(img)警告: 图像太大,无法在屏幕上显示;将以 50% 显示 > In images.internal.initSize (line 71)  In imshow (line 336)

imshow窗口

2 显示强度信息

灰度图并不直观,所以我们需要通过3D网格图来将图像进行三维表示,mesh函数可以做到这一点

>> mesh(img)

得到图片

在这里插入图片描述另外,通过view函数可以操作3D图的视角。

>> view([0 0 1])

其中,输入的向量[0 0 1]中的三个数分别代表三个轴,[0 0 1]表示从z轴的方向看去。

在这里插入图片描述

3 图像截取

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

>> ginput(2)ans =  709.9190  221.9512  800.6073  314.6341>> roi = img(221:315,709:801);

然后通过矩阵选取的方式,选择感兴趣的区域,需要注意的是,ginput的输出参数中,x在前,y在后,但是在截取的时候则为行在前,列在后,而x代表列数,y代表行数。截取之后的图片如下图所示

在这里插入图片描述

4 数据拟合

高斯光束在上述截面上自然遵循高斯分布,可以看到光斑基本符合中心对称,所以我们可以先将数据降维,可以通过对每一行选出最大值作为单一坐标下的强度

>> arr = max(roi);>> x = 1:length(arr);	%创建x坐标>> plot(arr)

在这里插入图片描述在这里插入图片描述

在matlab中,可以通过polyfit进行线性拟合,也可以通过fittype自定义函数进行拟合,不过对于初学者而言,可以通过Curve Fitting工具箱进行傻瓜式拟合。

在这里插入图片描述在左下角的Results选框中,即为拟合信息。

转载地址:https://blog.csdn.net/m0_37816922/article/details/102942686 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:通过python处理高斯光束的分布图像
下一篇:Matlab中视频的读取与写入

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月01日 03时50分07秒