細菌圖像處理軟件制作報告_第1頁
細菌圖像處理軟件制作報告_第2頁
細菌圖像處理軟件制作報告_第3頁
細菌圖像處理軟件制作報告_第4頁
細菌圖像處理軟件制作報告_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、細菌圖像處理軟件本程序使用以下幾個數(shù)據(jù)全局變量:I、 I0 、I1、I2、I3、l、data、da。I是動態(tài)變量,存放當前處理完成后的圖片信息,主要用于有順序關(guān)系的函數(shù)之間的傳遞數(shù)據(jù)。I0存放剛載入是的原始圖像,如果后面函數(shù)需要使用原始圖像,可以從這里讀取。I1存放I經(jīng)過灰度處理或獲取單顏色分量后的數(shù)據(jù),方便輪廓線的多次重復取。I2存放補洞后的I的圖像數(shù)據(jù),方便之后異或圖像I3用于暫存圖像,暫存當前的圖像l 用于存放標定長度data用于存放圖片上所有目標的編號、對應面積、有效直徑、負累計面積da用于存放指定目標的編號、對應面積、有效直徑。實驗訓練題:首先打開MATLAB界面,輸入“guide+

2、Enter”。 選擇Blank GUI(Default),命名為xuqiang.fig后,點擊OK出現(xiàn)一個空白的圖形處理界面。加入axes1加入pushbutton1,改名為打開圖像,插入函數(shù):global I I0FileName,PathName=uigetfile('*.jpg','打開圖像');FileName=strcat(PathName,FileName);I0=imread(FileName);I=I0;imshow(I);加入pushbutton2,改名為保存圖像,插入函數(shù):global IFileName,PathName=uiputfile

3、('*.jpg','保存圖像');imwrite(I,strcat(PathName,FileName),'jpg');加入popupmenu1,改名為原始圖像 灰度圖像 紅色分量 綠色分量 藍色分量,插入函數(shù):global I I0 I1n=get(findobj('Tag','popupmenu1'),'value');switch n case 1 I=I0; I1=I; case 2 I=rgb2gray(I0); I1=I; case 3 I=I0(:,:,1); I1=I; case 4

4、 I=I0(:,:,2); I1=I; case 5 I=I0(:,:,3); I1=I;endimshow(I);加入pushbutton3,改名為取輪廓線,插入函數(shù):global I I0 I1I=I1; m=get(findobj('Tag','popupmenu2'),'String');n=get(findobj('Tag','popupmenu2'),'value');I=edge(I,mn,:);imshow(I);加入popupmenu2,改名為canny sobel prewitt

5、 log zerocross roberts .加入pushbutton4,改名為黑白圖像,插入函數(shù):global I I0I=rgb2gray(I0);n=str2num(get(findobj('Tag','edit1'),'string');if(n>0)&(n<255) n=n/255;else n = graythresh(I0);endI=im2bw(I,n);imshow(I)加入edit1,改名為auto。加入text1,改名為閾值。加入pushbutton5,改名為反色負像,插入函數(shù):global I I=I

6、;imshow(I);加入pushbutton6,改名為分割圖像,插入函數(shù):global Iimshow(I);CX,CY,C=improfile;k=1;Xk=round(CX(k);Yk=round(CY(k);C=I(Yk,Xk);while k<length(CX) k=k+1; if abs(CX(k)-Xk)>0.5 Xk=Xk+sign(CX(k)-Xk); I(Yk,Xk)=C; end if abs(CY(k)-Yk)>0.5 Yk=Yk+sign(CY(k)-Yk); I(Yk,Xk)=C; endendimshow(I);加入radiobutton1,改

7、名為4-鄰域,Value改為1,插入函數(shù):SE=0 1 0; 1 1 1; 0 1 0;for k=1:9set(findobj('Tag',strcat('checkbox',num2str(k),'value',SE(k);endset(hObject,'value',1);set(findobj('Tag','radiobutton2'),'value',0);set(findobj('Tag','radiobutton3'),'valu

8、e',0);加入radiobutton2,改名為8-鄰域,插入函數(shù):SE=1 1 1; 1 1 1; 1 1 1;for k=1:9set(findobj('Tag',strcat('checkbox',num2str(k),'value',SE(k);endset(findobj('Tag','radiobutton1'),'value',0);set(hObject,'value',1);set(findobj('Tag','radiobutton

9、3'),'value',0);加入radiobutton3,改名為自定義,插入函數(shù):set(findobj('Tag','radiobutton1'),'value',0);set(findobj('Tag','radiobutton2'),'value',0);set(findobj('Tag','radiobutton3'),'value',1);加入Panel 。加入checkbox1(Callback中的checkbox

10、1改為radiobutton3) checkbox2(Value改為1, Callback中的checkbox2改為radiobutton3) checkbox3(Callback中的checkbox3改為radiobutton3) checkbox4(Value改為1, Callback中的checkbox4改為radiobutton3) checkbox5(Value改為1,Enable改為off)checkbox6(Value改為1, Callback中的checkbox6改為radiobutton3) checkbox7(Callback中的checkbox7改為radiobutton

11、3) checkbox8(Value改為1, Callback中的checkbox8改為radiobutton3) checkbox9(Callback中的checkbox9改為radiobutton3) 。加入pushbutton7,改名為腐蝕圖像,插入函數(shù):global ISE=zeros(3);for k=1:9SE(k)=get(findobj('Tag',strcat('checkbox',num2str(k),'value');end I=imerode(I,SE);imshow(I);加入pushbutton8,改名為膨脹圖像,插入

12、函數(shù):global ISE=zeros(3);for k=1:9SE(k)=get(findobj('Tag',strcat('checkbox',num2str(k),'value');endI=imdilate(I,SE);imshow(I);加入pushbutton9,改名為自動補洞,插入函數(shù):global I I2I2=I;I=imfill(I,'holes');imshow(I);加入pushbutton10,改名為手工填充,插入函數(shù):global I I2I2=I;I=imfill(I);imshow(I);加入pus

13、hbutton11,改名為異或圖像,插入函數(shù):global I I2I=xor(I,I2);imshow(I);加入pushbutton12,改名為暫存圖像,插入函數(shù):global I I3I3=I;imshow(I);加入pushbutton13,改名為交換圖像,插入函數(shù):global I I3i=I3;I3=I;I=i;imshow(I);加入pushbutton14,改名為合并圖像,插入函數(shù):global I I3 I=or(I,I3);imshow(I);加入pushbutton15,改名為標識圖像,插入函數(shù):global I I0if(length(size(I0)=3) I=uin

14、t8(double(rgb2gray(I0).*I);else I=uint8(double(I0).*I);endimshow(I);加入pushbutton16,改名為目標測量,插入函數(shù):global I l N=bweuler(I,4);set(findobj('Tag','edit2'),'String',num2str(N);A=bwarea(I);Z= A*l*l;Z=round(Z*1000)/1000;set(findobj('Tag','edit3'),'String',num2s

15、tr(Z);P= A*l*l /N;P=round(P*1000)/1000;set(findobj('Tag','edit4'),'String',num2str(P);加入text2,改名為目標個數(shù) 目標面積/m2平均面積/m2。加入edit2,edit3,edit4,均清除內(nèi)容綜合考查題:1. 請改進細菌圖象處理GUI界面,增加像素標定(包含標定長度、像素邊長、像素面積可編輯文本框)功能。照片fig_0.jpg的高度為15m,請標定照片中的像素邊長、像素面積。照片fig_0.jpg加入pushbutton17,改名為像素標定,插入函數(shù):gl

16、obal I lL=str2num(get(findobj('Tag','edit5'),'string');x,y=getline;l=L/sqrt(x(2)-x(1)2+(y(2)-y(1)2);l=round(l*100)/100;set(findobj('Tag','edit6'),'string',num2str(l);set(findobj('Tag','edit7'),'string',num2str(l*l);加入text3,改名為標定

17、長度/m 像素邊長/m 像素面積/m2。加入edit5,edit6,edit7,均清除內(nèi)容。操作:先在“標定長度”對應的框中輸入15,再點擊“像素標定”,出現(xiàn)“+”后,單擊圖片上沿,平行拉至下沿雙擊。2. 請利用自己設(shè)計的細菌圖象處理軟件,分析照片fig_0.jpg中完整細菌個數(shù)與平均面積。操作:點擊“目標測量”。3. 在細菌圖象處理軟件增加測量指定目標的面積與統(tǒng)計所有目標的各自的面積功能,并測量照片fig_0.jpg中所有細菌目標各自的面積,在可編輯文本框中按面積從小到大輸出所有的目標編號、對應面積、有效直徑(即與對應目標等面積的圓形直徑)、負累計面積(面積等于所有當前目標面積之和)。加入p

18、ushbutton18,改名為所有目標,插入函數(shù):global I l data;L=bwlabel(I,4);S=regionprops(L,'Area','EquivDiameter');n=length(S);for i=1:n a(i,1)=i; a(i,2)=S(i).Area; a(i,3)=S(i).EquivDiameter; a(i,2)=a(i,2)*l*l; a(i,3)=a(i,3)*l;a(i,3)=round(a(i,3)*100)/100;enddata,pos=sort(a(:,2);data=a(pos,:);data(1,4)

19、=data(1,2);for i=2:n data(i,4)=data(i,2)+data(i-1,4);endset(findobj('Tag','listbox1'),'string',num2str(data);加入pushbutton19,改名為指定目標,插入函數(shù):X,Y=ginput(1);X=round(X);Y=round(Y);global I data daL=bwlabel(I,4);n=L(X,Y);if n=0 pushbutton19_Callback;endi=find(data(:,1)=n);da=da;data(

20、i,1:3);set(findobj('Tag','listbox1'),'string',num2str(da);加入listbox1,清空內(nèi)容。加入text4,改名為編號、對應面積/um2、有效直徑/um、負累計面積/um2。操作:點擊“所有目標”。點擊“指定目標”,鼠標指針變?yōu)椤?”,雙擊單個菌體。4. 在細菌圖象處理軟件中增加多項式回歸模型的建模的功能,軟件可自動讀取在可編輯文本框中輸入的建模數(shù)據(jù)來建模,模型參數(shù)從另外的可編輯文本框輸出,并對第3題的負累計面積(縱坐標)與有效直徑(橫坐標)的測量結(jié)果建立多項式回歸模型,原始數(shù)據(jù)與模型曲線都

21、要繪圖輸出。加入pushbutton20,改名為建模,插入函數(shù):global dataset(findobj('Tag','listbox2'),'String',num2str(data( :,1 3 4);C=data(:,4);t=data(:,3);N=str2num(get(findobj('Tag','edit8'),'string');p=polyfit(t,C,N);tt=min(t):(max(t)-min(t)/100:max(t);CC=polyval(p,tt);plot(t

22、,C,'o',tt,CC)xlabel('x');ylabel('y');y=poly2sym(p);b=char(y);a=strcat('y=',b);c=polyval(p,t);r2=sum(C-c).2);r=max(abs(C-c);R2=std(c)2/std(C)2;set(findobj('Tag','edit9'),'String',a);set(findobj('Tag','edit10'),'String',nu

23、m2str(r2);set(findobj('Tag','edit11'),'String',num2str(r);set(findobj('Tag','edit12'),'String',num2str(R2);加入listbox2,清空內(nèi)容。加入text5,改名為編號、有效直徑/um、負累計面積/um2。加入text6,改名為多項式次數(shù)、殘差平方和、最大殘差、擬合度、擬合曲線。加入edit8、edit9、edit10、edit11、edit12,均清除內(nèi)容。操作:在“多項式次數(shù)”對應的框中輸入1

24、,點擊“建?!?。在“多項式次數(shù)”對應的框中輸入2,點擊“建?!薄T凇岸囗検酱螖?shù)”對應的框中輸入3,點擊“建模”。5. 若不完整的細菌個數(shù)可用小數(shù)表示,請?zhí)岢龊侠淼慕乒浪惴椒?,估算照片fig_1.jpg相當于有多少個完整菌,并在細菌圖象處理軟件中添加估算所需的相應功能。 (提示: 照片fig_0.jpg是照片fig_1.jpg右下角的一小部分區(qū)域的抽樣,前面對照片fig_0.jpg處理獲得的數(shù)據(jù)可直接利用。)照片fig_1.jpg思路:將上一張圖的平均面積暫存顯示再edit13中,再調(diào)取edit4中的當前圖中的白色區(qū)域面積,后者除以前者得到估算的菌體個數(shù)。加入pushbutton21,改名為暫存平均面積,插入函數(shù):L=str2num(get(findobj('Tag','edit4'),'string');set(findobj('Tag','edit13'),'String',num2str(L);加入pushbutton22,改名為估算菌體個數(shù),插入函數(shù):pj=str2num(get(findobj('Tag','edit13'),'string');L=str2num(get(findobj('Tag'

溫馨提示

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

評論

0/150

提交評論