巧用matlab提取图片中的曲线数据(修订版)_第1页
巧用matlab提取图片中的曲线数据(修订版)_第2页
巧用matlab提取图片中的曲线数据(修订版)_第3页
巧用matlab提取图片中的曲线数据(修订版)_第4页
巧用matlab提取图片中的曲线数据(修订版)_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、yc97463240 欢迎索取本教程利用Matlab提取图片中的数据(修订版)从事科研或者工程的人员在文档撰写过程中,常需要将文献中的曲 线与自己的结果对比,为获取原始数据,一种常用的办法是手动描点, 即将原始曲线放大然后打印出来,选取一定数量的点,读出其横纵坐标, 然后重绘。对于较为平坦的曲线,这种方法当然可行,但当曲线数量增 加,曲线变化复杂,这种方法工作量可想而知。前段时间由于原始数据 丢失,仅剩几十幅图片,本人尝试过手动描点,经历几个小时奋战,实 在无法继续,索性转向matlab,借助其强大的数据处理能力,编写了两个GUI的小软件image2data、data_poly提取数据,如今大

2、功告成,遂于大 家分享。2010-12-26 yc974632402010年编写软件至今,已有一年,平均每个星期都有网友向我索要软件或提出问题,与你们的交流很愉快,为答谢大家对我的鼓励, 我决定:1、对本教程作出修改,针对大家容易出现错误的地方作出批注,并 在一个月内对程序进行改进。2、录制视频教程,更加直接的引导大家使用。最后申明,本教程完全免费,可在百度、豆丁和其他文档分享类网站在线阅览,教程会发布到优酷上,如有需要,直接email索取(一般当天回复)。2012-03-10yc97463240yc97463240 欢迎索取本教程本文分三部分:1、数据提取实验演示;2、软件编写要点;3、附录

3、。关心使用操作的朋友请 看第一部分,有兴趣钻研代码的朋友请看第二部分,本软件以功能实现为主,界面和操作方面略有不适,尽请谅解。1、数据提取演示实验原始数据来源:安华高科技数据手册(HSMP-38XX and HSMP-48XX Series ),如图1所示。目标曲线:提取1MHz频率下的PIN二极管电容与反偏电压之间关系曲线。(dd- QZff5s0 Isol0,450.400.350.300.250.200.15yc97463240 欢迎索取本教程yc97463240 欢迎索取本教程REVERSE VOLTAGE (V)Figure RF Capacitance vs. Reverse Bi

4、as、HSMP-3810 Series,图1包含目标曲线的原始图像实验步骤:Step1 :制作jpg图片方法:利用PPT的图片另存功能制作jpg图片,本方法具有普遍性。首先从pdf中copy图1,即上述包含数据坐标的曲线,然后paste到ppt的空白页面,最后调整图片大小,另存为figure1.jpg,如图 2 所示。EW*! M-njKs.i n弭書 丄鼻Bnu 肛口叶串即-M-i- w*9 llk-L f Erf IE-bf C Fuvrf.PdiillS|-lHIWH YDUWC flFiiirF I ItlCapae II jnrr hw. HrhnwBJhk IKWF3ll!&rrl

5、nyc97463240 欢迎索取本教程yc97463240 欢迎索取本教程图2利用ppt制作jpg格式图像yc97463240 欢迎索取本教程首先运行 值,然后在REVERSE VOLTAGE (V)(电 WQZ2-025 ILCQApt5*ymn0y|UK:3豹MOOH3mmFisme 1 RF Capacitance vs. Reverite Biiis, MSMP-3810 Series.Step2 :导入图片,填写相关参数image2data.m或image2data.fig (程序采用 Matlab R2008b编写),填写坐标轴的最大最小import按钮下的文本框输入文件名figu

6、re1(默认jpg后缀),最后点解import按钮导入图片,如图 3所示。yc97463240 欢迎索取本教程yc97463240 欢迎索取本教程图3导入图像并输入相关参数特别关注:1、程序版本,如果采用 Matlab R2008b以外的版本可能出现不兼容的问题,如果运行出现问题请换用 R2008b。2、 文件路径,Matlab每次启动后会自动进入启动路径(startup directory),而程序编写时采用相对路径,所以请将jpg文件和程序copy到当前路径对应的文 件夹(current directory),或者更改当前路径为jpg文件和程序所在的文件夹,否则会出现未知错误。Step3

7、:坐标轴标定(关键)状态栏介绍:cpx显示当前取点横坐标,cpy显示当前取点纵坐标,两者均为相对值,num显示当前鼠标取点总数目(注意,初始点数为2,然后存处4个坐标轴标定坐标,剩余用来存储曲线坐标)按钮功能介绍:zoom on |按钮?图像放大,zoom out |按钮?恢复初始显示大小, 鼠标拖动图像,pan on/off |按钮?退出放大或者拖动操作模式,空?取点操作,pan on|按钮?delete键?删除最近一次取点数据。REVERSE VOLTAGE (V)Figure L RF Capacitance 啪古.Reverse Bias. HSMP SaiO Scries.$UJOI

8、M芒0此*01XWI471 1 iwmu1prAnmrfiE*图4坐标轴定标坐标标定:本次需要标定四个坐标值,顺序依次为Ymax? Ymin? Xmin? Xmax。操作时首先按下Zoom out按钮恢复原始图像显示,然后利用|zoom on按钮放大图像、|pan on |按钮平移图像到合适位置后,按下pan on/of |按钮退出放大或者拖动操作模式,最后按下空格键取点即可。如果操作失误, 按下delete键可删除最近一次取点数据。特别关注:1、 每次放大或者拖动操作完毕后,必须按下| pan on/off按钮,才能用空格键进行取点操作。2、按下Room on |按钮后,还可以用鼠标中间的滚

9、轮放大缩小图片,十分方便。3、操作完毕,确认num显示为6后方可进行曲线描点。Step4 :曲线描点(关键)按照上述操作反复进行图像放大、拖动、取点操作,取点时状态栏的cpx和cpy会显示当前相对坐标(注意,这个坐标图像坐标,y轴方向向下,后面坐标变换需要考虑)。根据需要确定取点数目,图 5给出了描点完毕后的曲线,可以看出取点基本代表了曲线的全部信息。REVERSE VOLTAGE (V)JJL;zsdu_i.432562te-O01*l181536e-0014.981302246-001li. JlU 11683(-B013.934177e-fl01i|.257ia3e-fl315.i|58

10、 0088e-0911669735-0016-363241 Be001mu叭他-UEHli.UJUli0&Se-Bai3.94M21Se-0011.1149913e+0993.8786699 c-0011.363612+0003,77B91fl2t-B011.5Q777He+uUEI 71IH1 Ue-4B11.7fi09B99e0093.d164171c-fl011.977O775e+O003.54072ii5e-0012_39M116e+-0012.7QU722&e+aUB3.aM39236e-B013.12B960SeeBI93.25

11、U209e-Bai3.52685U9e*O803.1756187e-O013.?l75e+nc03-115W*t6e-001ti.235D971e*UEia3.0M087te-0(M4.4i776557e*e0B3.83B0217e-B01i|-8165877e+-0015,342 O3i06e+nn92.9ZBU9Q0B-OOI12.88665000-B01E 849ii616e-a91.65S2032e*0992,7873*00e-0B1图7数据记录文本Step6 :数据后处理由于data.txt文本中数据是手动选取的,分布不够均匀,直接使用不太方便,所以我们需要

12、通过数据拟合,重新采样得到等间距的数据。运行data_poly.m或者data_poly.fig,得到图8所示的界面,该程序内置多项式拟合,其中nth代表多项式拟合的阶数(一般 6就够用了),num代表重新采样的数据个数,xmin、ymin、xmax、ymax表示需要输出数据的横纵坐标范围,程序默认输入文本为data.txt,输出文本为ndata.txt,数据拟合结果如下图所示。图8数据拟合再采样结果可能大家会问,为什么两个程序不合在一起呢?原因在于数据拟合包含的种类很多,最基本的为多项式拟合,其他的有指数、三角函数等等,针对不同的曲线,所采取的拟合函数不尽相同,matlab中的cftool工

13、具箱包含了很多的拟合函数,当 data_poly拟合效果不好时,大家可以试试 cftool工具。至此,数据提取过程完毕,只要大家按照步骤细心操作,提取曲线的速度和获得数据的精度应该能让你满意。2、软件编写要点这两个小软件从构思到完成大概用了两天,功能的完成绝大部分归功于matlab丰富的函数库和方便的 GUI,其中用到的主要函数主要有:imread, imshow, findobj, num2str, strcat, load, save, get, set.列表如下,更详细的介绍请参阅matlab help文档。表1主要函数列表In dexFunctionDescripti on1fin d

14、objLocate graphics objects w ith specific properties2 getQuery object properties3imreadRead image from graphics file4 imshc)WDisplay image5 loadLoad workspace variables from disk6nu m2strConvert nu mber to stri ng7saveSave workspace variables to disk8 setSet object properties9strcatCon cate nate str

15、i ngs horiz on tally除了上述函数的掌握之外,还需要对matlab的GUI数据结构和函数响应有一定的理解,在此就不多讲了(多看 matlab help相关例程就明白了)。编写程序之前,首先心中要有一个框架,做些什么,怎么做,顺序如何等。本软件的结构如下图所示:yc97463240 欢迎索取本教程yc97463240 欢迎索取本教程导入图像创建数据结构yc97463240 欢迎索取本教程yc97463240 欢迎索取本教程坐标轴定标曲线描点坐标变换数据后处理:拟合、重新采样、存储图9程序流程示意导入图像程序段:h_temp=fi ndobj(tag,edit8);str_img

16、=strcat(get(h_temp,Stri ng ), .jpg );%get full name of pictureimage_temp=imread(str_img);imshow(image_temp);%read and show创建数据结构程序段:han dles.cpx=0;han dles.cpy=0;% gloable variables for curre nt positi on of mousehan dles.idata=zeros(2,2);% the key variable for obta ining curve dataguidata(hObject,

17、han dles);坐标轴定标及坐标变换:%obta in in put axis imformatio ntemp=str2 nu m(get(fi ndobj(tag,edit1),stri ng);xmi n=temp;temp=str2 nu m(get(fi ndobj(tag,edit2),stri ng);xmax=temp;temp=str2 nu m(get(fi ndobj(tag,edit3),stri ng);ymi n=temp;temp=str2 nu m(get(fi ndobj(tag,edit4),stri ng);ymax=temp;%save axis t

18、o global variable idata idata(1:2,:)=xmi n,xmax;ymi n,ymax; idata=idata;ha ndles.idata(3:e nd,:);axis_p=idata(3:6,:);data_p=idata(7:e nd,:);% class idataxpm in=axis_p(3,1); xpmax=axis_p(4,1); ypmi n=axis_p(1,2); ypmax=axis p(2,2);%coord in ate tran sformdata_ new=data_p;data_ new(:,1)=data_p(:,1)-xp

19、m in;data_ new(:,2)=ypmax-data_p(:,2);data_ new(:,1)=data_ new(:,1)/(xpmax-xpm in);data_ new(:,2)=data_ new(:,2)/(ypmax-ypm in);data_ new(:,1)=xm in+data_ new(:,1)*(xmax-xm in); data_ new(:,2)=y min+data_ new(:,2)*(ymax-y min); %save results as a new variable idata(7:e nd,:)=data_ new;han dles .n ew

20、idata=idata; guidata(hObject,ha ndles);数据后处理代码段:%obta in in put datayc97463240 欢迎索取本教程x=ha ndles.data(:,1);y=ha ndles.data(:,2); n=str2double(get(fi ndobj( n p=str2double(get(fi ndobj( xmin=str2double(get(fi ndobj( xmax=str2double(get(fi ndobj(tag , edit1 ), string );tag , edit2 ), stringtag , edit3

21、 ), stringtag , edit4 ), string);););yc97463240 欢迎索取本教程%data fitting and samlping p=polyfit(x,y, n);xn ew=xmi n:(xmax-xmi n)/(n p-1):xmax; yn ew=polyval(p,x new);%save results and plot curveplot(x,y, -*b,xn ew, yn ew,-+r);legend(orignal , fitting);han dles .n data=x new, yn ew;guidata(hObject,ha ndl

22、es);3、附录3.1描点数据列表in dexxyin dexxy10.0663900.4432563110.0774380.25322320.1481530.4380023210.5563350.25086330.2415960.4319473311.2237890.24725740.3934420.4257133411.8078090.24378450.5458010.4168973512.3618110.24111260.6363240.4099963612.9750330.23848570.7940100.4039413713.4441890.23630480.9660660.3944

23、123814.0398910.23376691.1149910.3878673914.4895870.231361101.3636120.3770924014.9058770.229847111.5037770.3710814115.3672530.227755121.7609900.3616424215.7614670.226464131.9770780.3540724316.3033020.224371142.3941120.3418284416.9136040.221877152.7007230.3343924517.2815370.220497163.1209610.325042461

24、7.8184570.218983173.5268550.3175624718.3148750.216891183.9142760.3115064818.7295300.215510194.2354870.3066094919.3399400.214397204.4778560.3030025019.7020320.212972214.8165880.2987725119.9852820.212216225.3420310.292049235.6428010.288665246.0486960.284346256.6502030.278736267.0823790.274862277.78413

25、00.269030288.2338260.265512298.8966760.260792309.3960130.2578093.2数据拟合结果Lin ear model Poly9:fittedmodell(x) = p1*xA9 + p2*xA8 + p3*xA7 + p4*xA6 +p5*xA5+ p6*xA4 + p7*xA3 + p8*xA2 + p9*x + p10Coefficie nts(with 95% con fide nee boun ds):p1= 1.116e-010 (5.79e-011,1.653e-010)p2= -1.047e-008 (-1.528e-008

26、, -5.669e-009)P3=4.105e-007 (2.304e-007,5.905e-007)P4=-8.65e-006 (-1.231e-005,-4.986e-006)P5=0.0001044 (6.051e-005,0.0001483)p6=-0.0006919 (-0.001006,-0.0003775)p7=0.001806 (0.0005058,0.003107)p8=0.005695 (0.002846,0.008543)p9=-0.06124 (-0.06399,-0.05849)p10=0.4474 (0.4466,0.4482)3.3、重新采样数据列表in dexx

27、yin dexxy10.0000000.4473685110.1010100.25309820.2020200.4352425210.3030300.25196230.4040400.4236555310.5050510.25085640.6060610.4126615410.7070710.24977550.8080810.4022915510.9090910.24871861.0101010.3925615611.1111110.24768171.2121210.3834755711.3131310.24666081.4141410.3750215811.5151520.24565391.

28、6161620.3671825911.7171720.244658101.8181820.3599326011.9191920.243671112.0202020.3532406112.1212120.242691122.2222220.3470736212.3232320.241715132.4242420.3413926312.5252530.240744142.6262630.3361606412.7272730.239776152.8282830.3313376512.9292930.238810163.0303030.3268876613.1313130.237846173.2323230.3227716713.3333330.236886183.4343430.3189556813.5353540.235930193.6363640.3154056913.7373740.234980203.8383840.3120887013.9393940.234036214.0404040.3089787114.1414140.233101224.2424240.3060487214.3434340.232177234.4444440.3032737314.5454550.231266244.6464650.3006357414.7474750.2303

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论