MATLAB对原始光斑进行运算

clc; 
clear all;
close all;
I=imread('ban.jpg');
figure(1)
subplot(1,3,1)
imshow(I)%显示原始光斑
title('原始光斑')
I1=imadjust(I,[0.2,0.6],[]);
subplot(1,3,2)
imshow(I1)%亮度调整后的光斑 
title('亮度调整后的图像') 
I2=rgb2gray(I1);%转换为灰度光斑
level=graythresh(I2);%求分割阈值
I3=im2bw(I2,level);%二值化
subplot(1,3,3)
imshow(I3);   %显示二值化光斑
title('二值化光斑')
I4=medfilt2(I3);
figure(2)
subplot(2,2,1)
imshow(I4)%中值滤波后的光斑
title('中值滤波后的光斑')
I5=bwmorph(I4,'open');%对二值噪声图像进行二值形态学开运算
subplot(2,2,2)
imshow(I5)%显示开运算后的光斑
title('开运算后的光斑')
I6=bwmorph(I5,'close');   %对开运算后的光斑进行形态学闭运算
subplot(2,2,3)
imshow(I6) %显示闭运算后的光斑
title('闭运算后的光斑')
L=bwlabel(I6); %标注二进制图像中已连接的部分
stats = regionprops(L, {'Area', 'ConvexHull', 'MajorAxisLength', ...
'MinorAxisLength', 'Eccentricity', 'Centroid'});
%测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域。
A =[];
for i=1:length(stats)
A=[A stats(i).Area]; %计算出在图像各个区域中像素总个数。
end
[mA,ind]=max(A);
I7=I6;
I7(find(L~=ind))=0;
subplot(2,2,4)
imshow(I7);%显示经过处理后的光斑
hold on;
temp=stats(ind).ConvexHull; %'ConvexHull'矩阵包含某区域的最小凸多边形。此矩阵的每一行 存储此多边形一个顶点的xy坐标。
t=linspace(0, 2*pi,1000);
c1=stats(ind).Centroid;
a1=stats(ind).MajorAxisLength;
b1=stats(ind).MinorAxisLength;
d1=stats(ind).Eccentricity;
x1=c1(1)+d1*b1*cos(t);
y1=c1(2)+d1*a1*sin(t);
m=plot(x1, y1, 'r-');%绘制拟合圆
title('拟合圆')
x2=x1(1,1);
y2=y1(1,1);
x3=x1(1,30);
y3=y1(1,30);
x4=x1(1,80);
y4=y1(1,80);
a=2*(x3-x2);
b=2*(y3-y2);
n=(x3*x3+y3*y3-x2*x2-y2*y2);
d=2*(x4-x3);
e=2*(y4-y3);
f=(x4*x4+y4*y4-x3*x3-y3*y3);
x0=(b*f-e*n)/(b*d-e*a+eps)                  % 求圆心x坐标
y0=(d*n-a*f)/(b*d-e*a+eps)                  % 求圆心y坐标
r0=sqrt((x0-x2)*(x0-x2)+(y0-y2)*(y0-y2))    % 求半径

在这里插入图片描述
在这里插入图片描述
本程序摘自《MATLAB仿真及其在光学课程中的应用》一书第六章

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 使用MATLAB对CSV文件进行运算并输出图表相对简单。首先,我们需要加载CSV文件并将其存储为MATLAB中的变量。可以使用`readtable`函数读取CSV文件并将其存储为表格变量。 ```matlab data = readtable('数据文件.csv'); ``` 接下来,根据需要可以对数据进行各种运算,例如计算平均值、标准差、最大值、最小值等。假设我们想计算每列的平均值和标准差,可以使用`mean`和`std`函数。 ```matlab meanValues = mean(data); stdValues = std(data); ``` 然后,我们可以使用MATLAB绘图函数创建各种图表。以绘制直方图为例,我们可以使用`histogram`函数。 ```matlab histogram(data); ``` 此外,MATLAB还提供了许多其他绘图函数,如`plot`用于绘制折线图、`bar`用于绘制条形图等,具体使用哪个函数取决于需要呈现的数据和图表类型。 最后,我们可以使用`saveas`函数将生成的图表保存为图像文件。 ```matlab saveas(gcf, '图表.png'); ``` 使用MATLAB对CSV文件进行运算并输出图表是一个灵活而强大的工具,可以根据具体需求进行各种定制和扩展。 ### 回答2: 使用MATLAB对.csv文件进行运算并输出图表非常简单。首先,你需要将.csv文件导入到MATLAB中。可以使用"readtable"函数来读取.csv文件并将其存储在一个表格变量中。例如,假设你的.csv文件名为"data.csv",你可以使用以下代码将其读取到一个表格变量中: ```matlab data = readtable('data.csv'); ``` 读取完数据后,你可以对表格变量中的数据进行各种数值运算和数据处理。例如,你可以计算数据的平均值、标准差等统计指标。假设你想计算数据的平均值和标准差,并将结果存储在变量"meanVal"和"stdVal"中,你可以使用以下代码: ```matlab meanVal = mean(data); stdVal = std(data); ``` 完成数值运算后,你可以使用MATLAB的绘图函数来绘制图表。例如,你可以使用"plot"函数绘制数据的线图。假设你想绘制表格变量中的第一列数据,你可以使用以下代码: ```matlab plot(data(:, 1)); ``` 如果你想绘制更复杂的图表,可以根据你的具体需求选择不同的绘图函数,如"bar"、"histogram"等。 当完成图表绘制后,你可以使用"savefig"函数将图表保存为图像文件。例如,如果你想将图表保存为PNG格式的图像文件,你可以使用以下代码: ```matlab savefig('plot.png'); ``` 通过以上步骤,你可以使用MATLAB对.csv文件进行运算并输出图表。你可以根据你的具体需求进行进一步的数据处理和图表设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值