巧用matlab提取圖片中的曲線數(shù)據(jù)(修訂版)_第1頁
巧用matlab提取圖片中的曲線數(shù)據(jù)(修訂版)_第2頁
巧用matlab提取圖片中的曲線數(shù)據(jù)(修訂版)_第3頁
巧用matlab提取圖片中的曲線數(shù)據(jù)(修訂版)_第4頁
巧用matlab提取圖片中的曲線數(shù)據(jù)(修訂版)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、利用Matlab提取圖片中的數(shù)據(jù)(修訂版從事科研或者工程的人員在文檔撰寫過程中,常需要將文獻中的曲線與自己的結(jié)果對比,為獲取原始數(shù)據(jù),一種常用的辦法是手動描點,即將原始曲線放大然后打印出來,選取一定數(shù)量的點,讀出其橫縱坐標(biāo),然后重繪。對于較為平坦的曲線,這種方法當(dāng)然可行,但當(dāng)曲線數(shù)量增加,曲線變化復(fù)雜,這種方法工作量可想而知。前段時間由于原始數(shù)據(jù)丟失,僅剩幾十幅圖片,本人嘗試過手動描點,經(jīng)歷幾個小時奮戰(zhàn),實在無法繼續(xù),索性轉(zhuǎn)向matlab,借助其強大的數(shù)據(jù)處理能力,編寫了兩個GUI的小軟件image2data、data_poly提取數(shù)據(jù),如今大功告成,遂于大家分享。2010-12-262010

2、年編寫軟件至今,已有一年,平均每個星期都有網(wǎng)友向我索要軟件或提出問題,與你們的交流很愉快,為答謝大家對我的鼓勵,我決定:1、對本教程作出修改,針對大家容易出現(xiàn)錯誤的地方作出批注,并在一個月內(nèi)對程序進行改進。2、錄制視頻教程,更加直接的引導(dǎo)大家使用。最后申明,本教程完全免費,可在百度、豆丁和其他文檔分享類網(wǎng)站在線閱覽,教程會發(fā)布到優(yōu)酷上,如有需要,直接email索取(一般當(dāng)天回復(fù)。2012-03-10本文分三部分:1、數(shù)據(jù)提取實驗演示;2、軟件編寫要點;3、附錄。關(guān)心使用操作的朋友請看第一部分,有興趣鉆研代碼的朋友請看第二部分,本軟件以功能實現(xiàn)為主,界面和操作方面略有不適,盡請諒解。1、數(shù)據(jù)提取

3、演示實驗原始數(shù)據(jù)來源:安華高科技數(shù)據(jù)手冊(HSMP-38XX and HSMP-48XX Series,如圖1所示。目標(biāo)曲線:提取1MHz頻率下的PIN二極管電容與反偏電壓之間關(guān)系曲線。 圖1 包含目標(biāo)曲線的原始圖像實驗步驟:Step1:制作jpg圖片方法:利用PPT的圖片另存功能制作jpg圖片,本方法具有普遍性。首先從pdf中copy圖1,即上述包含數(shù)據(jù)坐標(biāo)的曲線,然后paste到ppt的空白頁面,最后調(diào)整圖片大小,另存為 figure1.jpg,如圖2所示。 圖2 利用ppt制作jpg格式圖像Step2:導(dǎo)入圖片,填寫相關(guān)參數(shù)首先運行值,然后在image2data.m 或image2dat

4、a.fig (程序采用Matlab R2008b 編寫,填寫坐標(biāo)軸的最大最小 import 按鈕下的文本框輸入文件名figure1(默認jpg 后綴,最后點解 import按鈕導(dǎo)入圖片,如圖3所示。 圖3 導(dǎo)入圖像并輸入相關(guān)參數(shù),如果采用Matlab R2008b 以外的版本可能出現(xiàn)不兼容的問題,如果運行出現(xiàn)問題請換用件夾(current directory,或者更改當(dāng)前路徑為jpg 文和程序所在的文件夾,否則會出現(xiàn)未知錯誤。Step3:坐標(biāo)軸標(biāo)定(關(guān)鍵特別關(guān)注:1、程序版本R2008b 。2、文件路徑,Matlab 每次啟動后會自動進入啟動路徑(startup directory,而程序編寫

5、時采用相對路徑,所以請將jpg 文件和程序copy 到當(dāng)前路徑對應(yīng)的文件狀態(tài)欄介紹: cpx 顯示當(dāng)前取點橫坐標(biāo), cpy 顯示當(dāng)前取點縱坐標(biāo),兩者均為相對值, num 顯示當(dāng)前鼠標(biāo)取點總數(shù)目(注意,初始點數(shù)為2,然后存處4個坐標(biāo)軸標(biāo)定坐標(biāo),剩余用來存儲曲線坐標(biāo)。 按鈕功能介紹: zoom on 按鈕Æ圖像放大, zoom out 按鈕Æ恢復(fù)初始顯示大小, pan on 按鈕Æ鼠標(biāo)拖動圖像, pan on/off 按鈕Æ退出放大或者拖動操作模式,空格鍵Æ取點操作, delete 鍵Æ刪除最近一次取點數(shù)據(jù)。 圖4 坐標(biāo)軸定標(biāo)坐標(biāo)標(biāo)定:本

6、次需要標(biāo)定四個坐標(biāo)值,順序依次為YmaxÆYminÆXminÆXmax。操作時首先按下zoom out按鈕恢復(fù)原始圖像顯示,然后利用zoom on按鈕放大圖像、pan on按鈕平移圖像到合適位置后,按下pan on/off按鈕退出放大或者拖動操作模式,最后按下空格鍵取點即可。如果操作失誤,按下delete鍵可刪除最近一次取點數(shù)據(jù)。特別關(guān)注:1、每次放大或者拖動操作完畢后,必須按下 pan on/off按鈕,才能用空格鍵進行取點操作。2、按下zoom on按鈕后,還可以用鼠標(biāo)中間的滾輪放大縮小圖片,十分方便。3、操作完畢,確認num顯示為6后方可進行曲線描點。Ste

7、p4:曲線描點(關(guān)鍵按照上述操作反復(fù)進行圖像放大、拖動、取點操作,取點時狀態(tài)欄的cpx和cpy會顯示當(dāng)前相對坐標(biāo)(注意,這個坐標(biāo)圖像坐標(biāo),y軸方向向下,后面坐標(biāo)變換需要考慮。根據(jù)需要確定取點數(shù)目,圖5給出了描點完畢后的曲線,可以看出取點基本代表了曲線的全部信息。 圖5 曲線描點特別關(guān)注:1、每次放大或者拖動操作完畢后,必須按下 pan on/off按鈕,否則直接按下空格鍵會彈出matlab命令框。2、曲線取點請按照先后順序依次進行,程序中未對所有數(shù)據(jù)點重新排序。Step5:數(shù)據(jù)處理及存儲首先按下 demo按鈕,描點后的曲線會顯示在圖像當(dāng)中,如圖6所示;然后按下 process按鈕,程序自動進行

8、坐標(biāo)轉(zhuǎn)換(相對坐標(biāo)Æ絕對坐標(biāo);最后在 save按鈕下的文本框中對數(shù)據(jù)文本命名data(不需要后綴,默認txt文本,程序會將數(shù)據(jù)存入data.txt文件中。 圖6 擬合曲線效果 圖7 數(shù)據(jù)記錄文本Step6:數(shù)據(jù)后處理文本為ndata.txt ,數(shù)據(jù)擬合結(jié)果如下圖所示。 中的圖8 數(shù)據(jù)擬合再采樣結(jié)果可能大家會問,為什么兩個程序不合在一起呢?原因在于數(shù)據(jù)擬合包含的種類很多,最基本的為多項式擬合,其他的有指數(shù)、三角函數(shù)等等,針對不同的曲線,所采取的擬合函數(shù)不盡相同,matlab cftoo 據(jù)提取過程完畢,只要大家按照步驟細心操作,提取曲線的速度和獲得數(shù)據(jù)的精度應(yīng)該能讓你滿意。2、軟件編寫

9、要點imshow, findobj, num2str, strcat, load, save, get, set. 列表如下,更詳細的介紹請參閱matlab help 文檔要函數(shù)列表ex l 工具箱包含了很多的擬合函數(shù),當(dāng)data_poly 擬合效果不好時,大家可以試試cftool 工具。至此,數(shù)這兩個小軟件從構(gòu)思到完成大概用了兩天,功能的完成絕大部分歸功于matlab 豐富的函數(shù)庫和方便的GUI ,其中用到的主要函數(shù)主要有:imread,。表1 主Ind Function Description 1 findobj ith specific properties Locate graphic

10、s objects w 2 get Query object properties 3imreadRead image from graphics file4 imshow Display image5 load Load workspace variables from disk6 num2str Convert number to string7 save bles to disk Save workspace varia8 set Set object properties9strcatConcatenate strings horizontally除了上述函數(shù)的掌握之外,還需要對mat

11、lab 的GUI 數(shù)據(jù)結(jié)構(gòu)和函數(shù)響應(yīng)有一定的理解,在此就不寫程序之前,首先心中要有一個框架,做些什么,怎么做,順序如何等。本軟件的結(jié)構(gòu)如下圖所示:多講了(多看matlab help 相關(guān)例程就明白了。 編 圖9 程序流程示意導(dǎo)入圖像程序段:h_temp=findobj('tag','edit8'str_img=strcat(get(h_temp,'String','.jpg' %get fullname of picture image_temp=imread(str_img;imshow(image_temp; %read an

12、d show創(chuàng)建數(shù)據(jù)結(jié)構(gòu)程序段:handles.cpx=0;handles.cpy=0;% gloable variables for current position of mouse handles.idata=zeros(2,2;% the key variable for obtaining curve data guidata(hObject, handles;坐標(biāo)軸定標(biāo)及坐標(biāo)變換:%obtain input axis imformationtemp=str2num(get(findobj('tag','edit1','string'x

13、min=temp;temp=str2num(get(findobj('tag','edit2','string'xmax=temp;temp=str2num(get(findobj('tag','edit3','string'ymin=temp;temp=str2num(get(findobj('tag','edit4','string'ymax=temp;%save axis to global variable idataidata(1:2,:=x

14、min,xmax;ymin,ymax;idata=idata;handles.idata(3:end,:;axis_p=idata(3:6,:;data_p=idata(7:end,:; % class idataxpmin=axis_p(3,1;xpmax=axis_p(4,1;ypmin=axis_p(1,2;ypmax=axis_p(2,2;%coordinate transformdata_new=data_p;data_new(:,1=data_p(:,1-xpmin;data_new(:,2=ypmax-data_p(:,2;data_new(:,1=data_new(:,1/(x

15、pmax-xpmin;data_new(:,2=data_new(:,2/(ypmax-ypmin;data_new(:,1=xmin+data_new(:,1*(xmax-xmin;data_new(:,2=ymin+data_new(:,2*(ymax-ymin;%save results as a new variableidata(7:end,:=data_new;handles.newidata=idata;guidata(hObject,handles;數(shù)據(jù)后處理代碼段:%obtain input datax=handles.data(:,1;y=handles.data(:,2;

16、n=str2double(get(findobj('tag','edit1','string'np=str2double(get(findobj('tag','edit2','string' xmin=str2double(get(findobj('tag','edit3','string' xmax=str2double(get(findobj('tag','edit4','string' %data

17、fitting and samlpingp=polyfit(x,y,n;xnew=xmin:(xmax-xmin/(np-1:xmax'ynew=polyval(p,xnew;%save results and plot curveplot(x,y,'-*b',xnew,ynew,'-+r'legend('orignal','fitting'handles.ndata=xnew,ynew;guidata(hObject,handles;3、附錄3.1 描點數(shù)據(jù)列表index x y index x y3.2 數(shù)據(jù)擬合結(jié)果L

18、inear model Poly9:fittedmodel1(x = p1*x9 + p2*x8 + p3*x7 + p4*x6 +p5*x5 + p6*x4 + p7*x3 + p8*x2 + p9*x + p10Coefficients (with 95% confidence bounds:p1 = 1.116e-010 (5.79e-011, 1.653e-010p2 = -1.047e-008 (-1.528e-008, -5.669e-009p3 = 4.105e-007 (2.304e-007, 5.905e-007p4 = -8.65e-006 (-1.231e-005, -4.986e-006p5 = 0.0001044 (6.051e-005, 0.0001483p6 = -0.0006919 (-0.001006, -0.0003775p7 = 0.001806 (0.0005058, 0.003107p8 = 0.005695 (0.002846, 0.008543p9 = -0.06124 (-0.06399, -0.05849p10 = 0.4474 (0.4466, 0.44823.3、重新采樣數(shù)據(jù)列表index x y index x yyc97463240 36 37 38 39 40 41 42 43

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論