用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中了,趕緊去看看吧 ');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM