使用MATLAB读取科研论文中的结果图

使用说明:读论文的时候的时候,时常出现折线图,但是并不知道其中的X轴,Y轴的坐标,所参考的文章为:利用matlab从图片中提取曲线坐标数据。现在刚加了一下小小的改进,后续在使用场景下可一步步改写与升级。

第一版:功能将图像读取,可以基本实现取出均匀图像各个点的值,并作出图像。已经封装成函数,可以直接调用。

% 参数说明,其中im为读取到的图像,num为新图像所需要采集的点的个数,line为采集到的曲线个数
function [xg,yg]=draw_plot(im,num,line)   
im=rgb2gray(im); %灰度变化
% thresh = graythresh(im); %二值化阈值
im=imbinarize(im,0.9); %二值化
set(0,'defaultfigurecolor','w')
[y,x]=find(im==0); %//找出图形中的“黑点”的坐标。该坐标是一维数据。
y=max(y)-y; %//将屏幕坐标转换为右手系笛卡尔坐标
y=fliplr(y); %//fliplr()——左右翻转数组
plot(x,y,'r.','Markersize', 2);
disp('请在Figrure中先后点击实际坐标框的两个顶点(左上点和右下点). ');
[Xx,Yy]=ginput(2); %//Xx,Yy——指实际坐标框的两个顶点
min_x=input('最小的x值');  %//输入x轴最小值
max_x=input('最大的x值');  %//输入x轴最大值
min_y=input('最小的y值');  %//输入y轴最小值
max_y=input('最大的y值');  %//输入y轴最大值
x=(x-Xx(1))*(max_x-min_x)/(Xx(2)-Xx(1))+min_x;
y=(y-Yy(1))*(min_y-max_y)/(Yy(2)-Yy(1))+max_y;
plot(x,y,'r.','Markersize', 2);
axis([min_x,max_x,min_y,max_y])  %//根据输入设置坐标范围
title('由原图片得到的未处理散点图')
disp('开始在曲线上取点');
str='完成曲线';
for j =1:line    
[xg(:,j),yg(:,j)]=ginput(num);
str=[str,num2str(j)];
disp(str);
end
figure(2)
plot(xg,yg);
end

具体效果如下:

原图为:

 重新绘制的图像为:

 这其中需要可以自定义修改图片中曲线的形状与格式。具体可以参考如下文章:

【MATLAB】基本绘图 ( 图形属性 | 绘图对象 | 图形属性界面 | 坐标轴属性 | 线属性 | 文本属性 | 图形属性设置策略 )

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值