当前位置:   article > 正文

使用MATLAB读取科研论文中的结果图_matlab如何将图片上曲线数据读取导入

matlab如何将图片上曲线数据读取导入

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

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

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

具体效果如下:

原图为:

 重新绘制的图像为:

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/980191
推荐阅读
相关标签
  

闽ICP备14008679号