首页 > 其他 > 详细

用matlab提取图片中曲线的数据

时间:2020-04-25 19:42:52      阅读:251      评论:0      收藏:0      [点我收藏+]

使用matlab提取图片中的曲线的数据,话不多说,代码如下,注释都比较详细

clc,clear;
disp(提示:命令行窗口键入:ctrl+c,表示停止运行 );
im=imread(a.png);%读入图片(替换成需要提取曲线的图片)
im=rgb2gray(im);%灰度变化
thresh = graythresh(im);%二值化阈值
thresh=thresh+0.2;%有时候thresh的值偏低,可以手动调节提高一点,这里就提高了
im=im2bw(im,thresh);%二值化
set(0,defaultfigurecolor,w);%设置MATLAB中figure的背景为白色
disp(请在Figrure中先后点击图片窗口,先左下取一点,然后右上取一点,用于裁剪掉坐标轴的信息 );
input(理解OK了之后输入‘‘1‘‘即可开始);
imshow(im)%显示图片
[NY,NX]=size(im);%获取图片像素矩阵的大小
[XX,YY]=ginput(2);%——获取图片剪裁的地方,消除坐标轴,先左下取一点,然后右上取一点
%消除坐标轴,让其变成白色
for i=1:1:XX(1)
    im(:,i)=1;
end
for i=XX(2):1:NX
    im(:,i)=1;
end
for i=1:1:YY(2)
    im(i,:)=1;
end
for i=YY(1):1:NY
    im(i,:)=1;
end
imshow(im)%显示图片
pause(1);%暂停一下,看看裁剪效果
close();%可以了,不看了
[y,x]=find(im==0);%找出图形中的“黑点”的坐标。该坐标是一维数据。
%坐标转换,变换成正常坐标轴
length_y=length(y);
for i=1:1:length_y
    y(i)=NY-y(i);
end
min_x=input(坐标轴最小的x值);%输入x轴最小值
max_x=input(坐标轴最大的x值);%输入x轴最大值
min_y=input(坐标轴最小的y值);%输入y轴最小值
max_y=input(坐标轴最大的y值);%输入y轴最大值
%实际坐标转化
x=x*(max_x-min_x)/NX+min_x;
y=y*(max_y-min_y)/NY+min_y;
plot(x,y,r.,Markersize, 2);%绘制最终坐标图
if exist(DATA.xlsx,file)%判断存储数据的文件是不是存在,存在就删掉
    delete(DATA.xlsx);
end
DATA=[x y];%横纵坐标数据整合
xlswrite(DATA.xlsx, DATA);%导出到excel
disp(坐标数据已经保存到DATA.xlsx中了,赶紧去看看吧 );

 

用matlab提取图片中曲线的数据

原文:https://www.cnblogs.com/caiya/p/12774821.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!