广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    MATLAB提取图片中的曲线数据重新画图

    来源:网络收集  点击:  时间:2024-02-16
    【导读】:
    用MATLAB提取一副图片中曲线数据重新画图工具/原料moreMATLAB方法/步骤1/4分步阅读

    先上代码,后边根据具体例子,讲解怎么用。复制两条横线之间的全部代码,不要复制两条横线。

    ------------------------------------------

    %% 只适用于横纵坐标是从0开始,如果不是,需要根据原理更改代码

    %% 清空变量

    clear all;

    clc;

    %% 取点之后趋势是对的,也就是点与点之间的比例是对的,但是每个点的真实值和原图对不上,需要按照真实的坐标处理一下

    max_axis_X=5; %这里是真实坐标中横轴的最大值

    max_axis_Y=25; %这里是真实坐标中纵轴的最大值

    flag = 0; %如果图形的纵坐标是正数,flag=0,如果是负数,flag = 1;

    shift = 0; %如果横坐标不在最下边,而是在中间,那么需要往下平移若干单位

    %% 读取图片数据

    fig=imread(D:\OneDrive\Work\MATLAB工程\3.png); %读取图片

    imshow(fig); %显示该图

    set(gcf,outerposition,get(0,screensize)); %使该图显示最大化,便于取点

    = ginput; %利用鼠标依次点击取出图片中数据区域边界的四个点。取点顺序:顺序点取图中坐标轴左下,左上,右上,右下四个点,回车结束。

    X0(2) = X0(1); %** 对“X0,Y0”做一下处理。

    X0(4) = X0(3);

    Y0(4) = Y0(1);

    Y0(3) = Y0(2);

    = ginput; %开始点取其中一条实线上的点,按需要的精度,点取任意多的点,回车结束。

    %% 因为位图的屏幕坐标是从左上角为坐标原点开始的,需要做些变换(如果图片中纵坐标不是从0开始,需要根据原理添加代码)

    X1 = X1 - min(X0); %** 把图片的坐标原点移到图片中数据区域的左上角

    Y1 = Y1 - min(Y0);

    if flag == 0

    Y1= -( Y1 - (max(Y0) - min(Y0)) ); %** 把原来指向朝下的纵坐标翻转到朝上

    else

    Y1 = ( max(Y0) - min(Y0) ) - Y1;

    Y1= ( Y1 - (max(Y0) - min(Y0)) );

    end

    X1 = X1 / ( max(X0) - min(X0) ) * max_axis_X; %** 按照每个取得的数据点在原图片中位置比例换算成真实坐标

    Y1 = Y1 / ( max(Y0) - min(Y0) ) * max_axis_Y;

    Y1 = Y1 - shift; %往下平移若干单位

    plot(X1,Y1,b-d); %画图

    ------------------------------------------

    2/4

    如果是类似于这种图形,纵坐标是正数,前边应该这样设置,后边不变。

    ------------------------------------------

    %% 取点之后趋势是对的,也就是点与点之间的比例是对的,但是每个点的真实值和原图对不上,需要按照真实的坐标处理一下

    max_axis_X=5;%这里是真实坐标中横轴的最大值

    max_axis_Y=25;%这里是真实坐标中纵轴的最大值

    flag = 0;%如果图形的纵坐标是正数,flag=0,如果是负数,flag = 1;

    shift = 0;%如果横坐标不在最下边,而是在中间,那么需要往下平移若干单位

    ------------------------------------------

    3/4

    如果是类似于这种图形,纵坐标是负数,前边应该这样设置,后边不变。

    ------------------------------------------

    %% 取点之后趋势是对的,也就是点与点之间的比例是对的,但是每个点的真实值和原图对不上,需要按照真实的坐标处理一下

    max_axis_X=5;%这里是真实坐标中横轴的最大值

    max_axis_Y=25;%这里是真实坐标中纵轴的最大值

    flag = 1;%如果图形的纵坐标是正数,flag=0,如果是负数,flag = 1;

    shift = 0;%如果横坐标不在最下边,而是在中间,那么需要往下平移若干单位

    ------------------------------------------

    4/4

    如果是类似于这种图形,纵坐标有正数有负数,前边应该这样设置,后边不变。

    ------------------------------------------

    %% 取点之后趋势是对的,也就是点与点之间的比例是对的,但是每个点的真实值和原图对不上,需要按照真实的坐标处理一下

    max_axis_X=3;%这里是真实坐标中横轴的最大值

    max_axis_Y=3;%这里是真实坐标中纵轴的最大值

    flag = 0;%如果图形的纵坐标是正数,flag=0,如果是负数,flag = 1;

    shift = 1;%如果横坐标不在最下边,而是在中间,那么需要往下平移若干单位

    ------------------------------------------

    注意事项

    本代码是由“MATLAB 2015b 32位”编写,不保证其它版本可用。

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_48903.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 03:18:54  耗时:0.026
    0.0257s