zoukankan      html  css  js  c++  java
  • 用matlab提取图片中曲线的数据

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

     1 clc,clear;
     2 disp('提示:命令行窗口键入:ctrl+c,表示停止运行 ');
     3 im=imread('b.png');%读入图片(替换成需要提取曲线的图片)
     4 im=rgb2gray(im);%灰度变化
     5 thresh = graythresh(im);%二值化阈值
     6 thresh=thresh+0.2;%有时候thresh的值偏低,可以手动调节提高一点,这里就提高了
     7 im=im2bw(im,thresh);%二值化
     8 set(0,'defaultfigurecolor','w');%设置MATLAB中figure的背景为白色
     9 disp('请在Figrure中先后点击图片窗口,先左下取一点,然后右上取一点,用于裁剪掉坐标轴的信息 ');
    10 input('理解OK了之后输入''1''即可开始');
    11 imshow(im)%显示图片
    12 [NY,NX]=size(im);%获取图片像素矩阵的大小
    13 [XX,YY]=ginput(2);%——获取图片剪裁的地方,消除坐标轴,先左下取一点,然后右上取一点
    14 %把数据转换为整型
    15 XX=int32(XX)
    16 YY=int32(YY)
    17 %消除坐标轴,让其变成白色
    18 for i=1:1:XX(1)
    19     im(:,i)=1;
    20 end
    21 for i=XX(2):1:NX
    22     im(:,i)=1;
    23 end
    24 for i=1:1:YY(2)
    25     im(i,:)=1;
    26 end
    27 for i=YY(1):1:NY
    28     im(i,:)=1;
    29 end
    30 imshow(im)%显示图片
    31 pause(1);%暂停一下,看看裁剪效果
    32 close();%可以了,不看了
    33 [y,x]=find(im==0);%找出图形中的“黑点”的坐标。该坐标是一维数据。
    34 %坐标转换,变换成正常坐标轴
    35 length_y=length(y);
    36 for i=1:1:length_y
    37     y(i)=NY-y(i);
    38 end
    39 min_x=input('坐标轴最小的x值');%输入x轴最小值
    40 max_x=input('坐标轴最大的x值');%输入x轴最大值
    41 min_y=input('坐标轴最小的y值');%输入y轴最小值
    42 max_y=input('坐标轴最大的y值');%输入y轴最大值
    43 %实际坐标转化
    44 x=x*(max_x-min_x)/NX+min_x;
    45 y=y*(max_y-min_y)/NY+min_y;
    46 plot(x,y,'r.','Markersize', 2);%绘制最终坐标图
    47 if exist('DATA.xlsx','file')%判断存储数据的文件是不是存在,存在就删掉
    48     delete('DATA.xlsx');
    49 end
    50 DATA=[x y];%横纵坐标数据整合
    51 xlswrite('DATA.xlsx', DATA);%导出到excel
    52 disp('坐标数据已经保存到DATA.xlsx中了,赶紧去看看吧 ');
  • 相关阅读:
    这些诗词你知道一句,却不知全诗!
    二十二、事件绑定及深入
    二十一、事件对象
    二十、事件入门
    十九、动态加载脚本和样式
    十八、DOM元素尺寸和位置
    十七、DOM操作表格及样式
    十六、DOM进阶
    十五、DOM基础
    正确使用volatile场景--状态标志
  • 原文地址:https://www.cnblogs.com/caiya/p/12774821.html
Copyright © 2011-2022 走看看