




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、%系統(tǒng)自動生成的創(chuàng)建對話框的代碼function varargout = myproject(varargin)% MYPROJECT M-file for myproject.fig% MYPROJECT, by itself, creates a new MYPROJECT or raises the existing% singleton*.% H = MYPROJECT returns the handle to a new MYPROJECT or the handle to% the existing singleton*.% MYPROJECT('CALLBACK'
2、;,hObject,eventData,handles,.) calls the local% function named CALLBACK in MYPROJECT.M with the given input arguments.% MYPROJECT('Property','Value',.) creates a new MYPROJECT or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI bef
3、ore myproject_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to myproject_OpeningFcn via varargin.% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".% See a
4、lso: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help myproject% Last Modified by GUIDE v2.5 07-Jun-2008 11:33:02% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . '
5、;gui_OpeningFcn', myproject_OpeningFcn, . 'gui_OutputFcn', myproject_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:
6、);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before myproject is made visible.function myproject_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved -
7、 to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to myproject (see VARARGIN)% Choose default command line output for myprojecthandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT
8、 makes myproject wait for user response (see UIRESUME)% uiwait(handles.figure1);% - Outputs from this function are returned to the command line.function varargout = myproject_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to f
9、igure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout1 = handles.output;%以下為另存為按鈕的回調(diào)函數(shù),功能為存儲圖像處理后的圖像到用戶選擇的磁盤空間中。% - Executes on button press in lingcunwei.fu
10、nction lingcunwei_Callback(hObject, eventdata, handles) %另存為按鈕的回調(diào)函數(shù)global ImagenUmbral %定義全局變量if isempty(ImagenUmbral)=1,msgbox('Doesn''t exist an image');return,end %如果ImagenUmbral不包含圖像,則彈出對話框并顯示'Doesn''t exist an image'filename,pathname=uiputfile('*.jpg',
11、9;*.tif','*.gif','*.bmp','*.png', . '*.hdf','*.pcx','*.xwd','*.ico','*.cur','*.ras', . '*.pdm','*.pgm','*.ppm','Save file name'); %顯示保存文件的對話框if isequal(filename,0) | isequal(pathname,0) errord
12、lg('Saving canceled','Threshold GUI'); error('Saving canceled')else %如果不存在該文件,或者不存在保存路徑,則顯示錯誤信息 try imwrite(ImagenUmbral, pathname,filename); %保存文件 end %tryend %if% hObject handle to lingcunwei (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% hand
13、les structure with handles and user data (see GUIDATA)%打印按鈕的回調(diào)函數(shù)% - Executes on button press in dayinshuchu.function dayinshuchu_Callback(hObject, eventdata, handles) %打印按鈕的回調(diào)函數(shù)printdlg %顯示打印對話框% hObject handle to dayinshuchu (see GCBO)% eventdata reserved - to be defined in a future version of MATL
14、AB% handles structure with handles and user data (see GUIDATA)%復制到剪切板的回調(diào)函數(shù),其功能為將處理后的圖像存儲到剪切板,以備處理圖像處理后的圖像之用。% - Executes on button press in fuzhidaojianqieban.function fuzhidaojianqieban_Callback(hObject, eventdata, handles)%復制到剪切板按鈕的回調(diào)函數(shù)global ImagenUmbral %處理后的圖像global J %處理前的圖像J=ImagenUmbral %將處理
15、后的圖像賦予處理前的圖像% hObject handle to fuzhidaojianqieban (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%幾何變換的回調(diào)函數(shù),它包含三個基本的幾何變換,分別為水平變換,垂直變換,對角變換。均使用了將像素灰度值進行對換的方式。% - Executes on button press in jihebianhuan.function
16、 jihebianhuan_Callback(hObject, eventdata, handles)global ImagenUmbral %定義一個全局變量ImagenUmbralglobal J %使用全局變量Jselection = questdlg('請選擇幾何變換','選擇幾何變換','水平鏡像','垂直鏡像','對角鏡像','default') if strcmp(selection,'水平鏡像') %如果選擇“水平鏡像” M,N=size(J) %測量圖像尺寸參數(shù) I
17、=J %將J賦給I for i=1:M %從第一行到最后一行 for j=1:N/2 %對每一行的第一個像素到中間的一個像素 t=I(i,j);I(i,j)=I(i,N-j+1);I(i,N-j+1)=t; %交換這一行第一個像素和最后一個像素的灰度值,交換第二個和倒數(shù)第二個灰度值,以此類推,直到中間的像素。 end %end for end %end for subplot(224); %分割繪圖窗口為兩行兩列,將句柄移到第四個位置 imshow(I) %顯示圖像 ImagenUmbral=I; %將圖像賦予全局變量ImagenUmbralelse if strcmp(selection,&
18、#39;垂直鏡像') %如果選擇“垂直鏡像” M,N=size(J) %測量圖像尺寸參數(shù) I=J %將J賦給I for j=1:N %從第一列到最后一列 for i=1:M/2 %對每一列的第一個像素到中間的一個像素 t=I(i,j);I(i,j)=I(M-i+1,j);I(M-i+1,j)=t; %交換這一列第一個像素和最后一個像素的灰度值,交換第二個和倒數(shù)第二個灰度值,以此類推,直到中間的像素。 end %end for end %end for subplot(224); %分割繪圖窗口為兩行兩列,將句柄移到第四個位置 imshow(I) %顯示圖像 ImagenUmbral=I
19、; %將圖像賦予全局變量ImagenUmbral else if strcmp(selection,'對角鏡像') %如果選擇“垂直鏡像” I=J %將J賦給I M,N=size(I) %測量圖像尺寸參數(shù) for i=1:M %從第一行到最后一行 for j=1:N/2 %對每一行的第一個像素到中間的一個像素 t=I(i,j);I(i,j)=I(M-i+1,N-j+1);I(M-i+1,N-j+1)=t;%交換第i行的第一個像素和M-i+1行的最后一個像素的灰度值,以此類推,直到中間的像素。 end %end for end %end for subplot(224); %分割
20、繪圖窗口為兩行兩列,將句柄移到第四個位置 imshow(I) %顯示圖像 ImagenUmbral=I; %將圖像賦予全局變量ImagenUmbral end %end of else if strcmp(selection,'對角鏡像') end %end of else if strcmp(selection,'垂直鏡像') end %end of if strcmp(selection,'水平鏡像') % hObject handle to jihebianhuan (see GCBO)% eventdata reserved - to b
21、e defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%灰度反轉(zhuǎn)按鈕的回調(diào)函數(shù),灰度反轉(zhuǎn)采用公式T=L-1-S,其中S為存儲原始圖像的灰度值的矩陣,T為存儲反轉(zhuǎn)后圖像灰度值的矩陣。% - Executes on button press in huidufanzhuan.function huidufanzhuan_Callback(hObject, eventdata, handles)%灰度反轉(zhuǎn)按鈕的回調(diào)函數(shù)global ImagenUmbral
22、%定義一個全局變量ImagenUmbral,將灰度反轉(zhuǎn)后的圖像存入ImagenUmbral中global J %使用全局變量JA=double(J) %將圖像J的各點像素值存入矩陣A中A=255-A %用255減去A的各點像素值,再重新存入A中A=uint8(A) %將A的每個元素轉(zhuǎn)換成整數(shù) subplot(224) %分割繪圖窗口為兩行兩列,將句柄移到第四個位置imshow(A) %顯示圖像AImagenUmbral=A %將A賦給全局變量ImagenUmbral% hObject handle to huidufanzhuan (see GCBO)% eventdata reserved
23、- to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%直方圖均衡化按鈕的回調(diào)函數(shù),直方圖均衡化的處理目的是使圖像變得清晰,明快。% - Executes on button press in zhifangtujunhenghua.function zhifangtujunhenghua_Callback(hObject, eventdata, handles)%直方圖均衡化按鈕的回調(diào)函數(shù)global ImagenUmbral %定義一個
24、全局變量ImagenUmbral,將直方圖均衡化后的圖像存入ImagenUmbral中global J %使用全局變量Jsubplot(2,2,4); %分割繪圖窗口為兩行兩列,將當前句柄移到第四個位置%W = histeq(J); %Matlab自帶直方圖均衡化函數(shù)PS=J %令PS為待處理的圖像m,n=size(PS); %測量圖像尺寸參數(shù)GP=zeros(1,256); %預創(chuàng)建存放灰度出現(xiàn)概率的向量for k=0:255 %對每一個像素值 GP(k+1)=length(find(PS=k)/(m*n);%計算每級灰度出現(xiàn)的概率,將其存入GP中相應位置end %end forS1=zer
25、os(1,256); %分配一個256維數(shù)組for i=1:256 %對每一個像素值 for j=1:i %對從1到這個像素值的所有像素的 S1(i)=GP(j)+S1(i); %計算Sk,Sk為一個映射,將對從1到這個像素值的所有像素的概率相加 end %end forend %end forS2=round(S1*256)+0.5); %將Sk歸到相近級的灰度PA=PS; %定義一個與PS一樣大小的矩陣for i=0:255 %對每一個像素值 PA(find(PS=i)=S2(i+1); %將各個像素歸一化后的灰度值賦給這個像素end %end forimshow(PA) %顯示均衡化后的
26、圖像 ImagenUmbral=PA; %將均衡化圖像賦給ImagenUmbral% hObject handle to zhifangtujunhenghua (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%直方圖統(tǒng)計按鈕的回調(diào)函數(shù),此按鈕可以統(tǒng)計處理前后的圖像的直方圖。% - Executes on button press in zhifangtu#fu
27、nction zhifangtutongji_Callback(hObject, eventdata, handles)%直方圖統(tǒng)計按鈕的回調(diào)函數(shù)global ImagenUmbral %定義一個全局變量ImagenUmbralglobal J %使用全局變量Jfigure %彈出繪圖窗口subplot(211) %分割繪圖窗口為兩行一列,將當前句柄移到第一個區(qū)域m,n=size(J); %測量圖像尺寸參數(shù)GP=zeros(1,256); %預創(chuàng)建存放灰度出現(xiàn)概率的向量for k=0:255 %對每一個像素 GP(k+1)=length(find(J=k)/(m*n); %計算每級灰度出現(xiàn)的概
28、率,將其存入GP中相應位置end %end forbar(0:255,GP,'b') %繪制直方圖title('原圖像直方圖') %標題為'原圖像直方圖'subplot(212) %分割繪圖窗口為兩行一列,將當前句柄移到第二個區(qū)域K=ImagenUmbral %將全局變量ImagenUmbral賦予K m,n=size(K); %測量圖像尺寸參數(shù)GP=zeros(1,256); %預創(chuàng)建存放灰度出現(xiàn)概率的向量for k=0:255 %對每一個像素 GP(k+1)=length(find(K=k)/(m*n);%計算每級灰度出現(xiàn)的概率,將其存入GP
29、中相應位置end %end for bar(0:255,GP,'b') %繪制直方圖title('處理后圖像直方圖') %標題為'處理后圖像直方圖'% hObject handle to zhifangtutongji (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%圖像復原按鈕的回調(diào)函數(shù),采用中值濾波和均值濾波兩種方法,其
30、中,中值濾波是將圖像中一點的值用該點的一個鄰域中各點值的中值代替,以達到濾波的效果。均值濾波與之不同的是將圖像中一點的值用該點的一個鄰域中各點值的均值代替。% - Executes on button press in tuxiangfuyuan.function tuxiangfuyuan_Callback(hObject, eventdata, handles)%圖像復原按鈕的回調(diào)函數(shù)global ImagenUmbral %定義一個全局變量ImagenUmbral global J %使用全局變量Jselection = questdlg('請選擇圖像復原方法','
31、;圖像復原方法','中值濾波','均值濾波','default')if strcmp(selection,'中值濾波') %如果選擇'中值濾波'A=J %將J賦給A m,n = size(A); %測量圖像尺寸參數(shù) B=A; %將A賦給B pixel_block = zeros(1,9); %開辟一個一行九列的數(shù)組,均賦于初值0 for i = 2:m-1 %對A中的各個像素點(不包括邊界) for j = 2:n-2 pixel_block = reshape(A(i-1:i+1,j-1:j+1),9,1
32、); %采用3*3的窗口,將一個像素點及其周圍的8各點,依次存入新開辟的數(shù)組pixel_block中 sorted_block = sort(pixel_block); %將數(shù)組pixel_block排序block_median = sorted_block(5); %將數(shù)組的中值賦予block_medianB(i,j) = block_median; %將block_median賦予B的相應位置的像素值end; %end of for j = 2:n-2 end; %end of for i = 2:m-1B = uint8(B); %將B中所有元素轉(zhuǎn)換成0255之間的整數(shù)subplot(2
33、24) %分割繪圖窗口為兩行兩列,將句柄移到第四個位置imshow(B) %顯示圖像BImagenUmbral=B %將B賦給全局變量ImagenUmbralelse if strcmp(selection,'均值濾波')%如果選擇'均值濾波'A=J %將J賦給A m,n = size(A); %m為A的行數(shù),n為A的列數(shù) B=A; %將A賦給B pixel_block = zeros(1,9); %開辟一個一行九列的數(shù)組,均賦于初值0 for i = 2:m-1 %對A中的各個像素點(不包括邊界) for j = 2:n-1 pixel_block = res
34、hape(A(i-1:i+1,j-1:j+1),32,1);%采用3*3的窗口,將一個像素點及其周圍的8各點,一次存入新開辟的數(shù)組pixel_block中 mean_block = mean(pixel_block); %求出數(shù)組中所有元素的平均值B(i,j) = mean_block; %將mean_block賦予B的相應位置的像素值end; %end of for j = 2:n-2 end; %end of for i = 2:m-1B = uint8(B); %將B中所有元素轉(zhuǎn)換成0255之間的整數(shù)subplot(224) %分割繪圖窗口為兩行兩列,將句柄移到第四個位置imshow(B
35、) %顯示圖像BImagenUmbral=B %將B賦給全局變量ImagenUmbral end %end of else if strcmp(selection,'均值濾波') end %end of if strcmp(selection,'中值濾波') % hObject handle to tuxiangfuyuan (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user da
36、ta (see GUIDATA)%邊緣提取的回調(diào)函數(shù),包括三種邊緣提取方法,分別為Sobel邊緣算子法,Prewitte邊緣算子法和Robert邊緣算子法,它們都采用了求梯度的方法。% - Executes on button press in bianyuantiqu.function bianyuantiqu_Callback(hObject, eventdata, handles)%邊緣提取函數(shù)的回調(diào)函數(shù)global ImagenUmbral %定義一個全局變量ImagenUmbral global J %使用全局變量Jselection = questdlg('請選擇邊緣算子法
37、','邊緣算子法','Sobel邊緣算子法','Prewitte邊緣算子法','Robert邊緣算子法','default')if strcmp(selection,'Sobel邊緣算子法')%如果選擇了'Sobel邊緣算子法' % BW=edge(J,'sobel') %Matlab自帶sobel邊緣算子法I=J %將J賦予IA=J %令A=J,準備將處理后圖像存入A中M,N=size(I); %測量圖像尺寸參數(shù)I=double(I); %將I中的所有元素變
38、為雙精度型for y=2:M-1 %對每一個像素(不包括邊界) for x=2:N-1 B(1)=I(x-1,y+1)+I(x,y+1)*2+I(x+1,y+1)-I(x-1,y-1)-I(x,y-1)*2-I(x+1,y-1);%用第一個方向算子對這個像素做卷積 B(2)=I(x-1,y)+I(x-1,y+1)*2+I(x,y+1)-I(x,y-1)-I(x+1,y+1)*2-I(x+1,y); %用第二個方向算子對這個像素做卷積 B(3)=I(x-1,y-1)+I(x-1,y)*2+I(x-1,y+1)-I(x+1,y+1)-I(x+1,y)*2-I(x+1,y+1);%用第三個方向算子對
39、這個像素做卷積 B(4)=I(x-1,y)+I(x-1,y-1)*2+I(x,y+1)-I(x+1,y)-I(x+1,y+1)*2-I(x,y+1); %用第四個方向算子對這個像素做卷積 B(5)=I(x-1,y-1)+I(x,y-1)*2+I(x+1,y+1)-I(x-1,y+1)-I(x,y+1)*2-I(x+1,y+1);%用第五個方向算子對這個像素做卷積 B(6)=I(x,y-1)+I(x+1,y+1)*2+I(x+1,y)-I(x-1,y)-I(x-1,y+1)*2-I(x,y+1); %用第六個方向算子對這個像素做卷積 B(7)=I(x+1,y+1)+I(x+1,y)*2+I(x+
40、1,y+1)-I(x-1,y-1)-I(x-1,y)*2-I(x-1,y+1);%用第七個方向算子對這個像素做卷積 B(8)=I(x+1,y)+I(x+1,y+1)*2+I(x,y+1)-I(x-1,y)-I(x-1,y-1)*2-I(x,y-1); %用第八個方向算子對這個像素做卷積 b=max(B) %將這八個卷積值的最大值賦予b if b>255 b=255 %如果b的值超過255,則重置為255 end %end if A(x,y)=b; %將b作為A中相應點的輸出值 end %end forend %end forsubplot(224) %分割繪圖窗口為兩行兩列,將句柄移到第
41、四個位置imshow(A) %顯示圖像AImagenUmbral=A %將A賦給全局變量ImagenUmbral else if strcmp(selection,'Prewitte邊緣算子法')%如果選擇了'Prewitte邊緣算子法' % BW=edge(J,'prewitt') %Matlab自帶prewitte邊緣算子法 I=J %將J賦予IA=J %令A=J,準備將處理后圖像存入A中M,N=size(I); %將I的各點像素值存入M行N列的矩陣中I=double(I); %將I中的所有元素變?yōu)殡p精度型for y=2:M-1 %對每一個像
42、素(不包括邊界) for x=2:N-1 B(1)=I(x-1,y+1)+I(x,y+1)+I(x+1,y+1)-I(x-1,y-1)-I(x,y-1)-I(x+1,y-1);%用第一個方向算子對這個像素做卷積 B(2)=I(x-1,y)+I(x-1,y+1)+I(x,y+1)-I(x,y-1)-I(x+1,y+1)-I(x+1,y); %用第二個方向算子對這個像素做卷積 B(3)=I(x-1,y-1)+I(x-1,y)+I(x-1,y+1)-I(x+1,y+1)-I(x+1,y)-I(x+1,y+1);%用第三個方向算子對這個像素做卷積 B(4)=I(x-1,y)+I(x-1,y-1)+I(x,y+1)-I(x+1,y)-I(x+1,y+1)-I(x,y+1); %用第四個方向算子對這個像素做卷積 B(5)=I(x-1,y-1)+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中藥現(xiàn)代化與國際市場拓展中的知識產(chǎn)權保護研究報告
- 四肢牽引護理
- 汽車活押培訓
- 2025至2030全球及中國普拉提和瑜伽館行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 機械制圖培訓課件
- 汽車市場消費行為洞察
- 家居創(chuàng)新:文化驅(qū)動
- 2025至2030生物相似行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 宜賓迎春燈會活動方案
- 客服休息活動方案
- 2025年新高考2卷(新課標Ⅱ卷)英語試卷
- 2024年湖北省初中學業(yè)水平考試地理試卷含答案
- 2024年認證行業(yè)法律法規(guī)及認證基礎知識 CCAA年度確認 試題與答案
- 地方病防治技能理論考核試題
- 國家開放大學《民法學(1)》案例練習參考答案
- lemontree中英文對照打印版
- T∕ACSC 01-2022 輔助生殖醫(yī)學中心建設標準(高清最新版)
- 建設工程項目監(jiān)理人員變更申請表
- 餐廳設備檢查表
- 大量蝎迪圖片(暖昧,CP向,下載后可放大)
- 過敏性休克ppt課件
評論
0/150
提交評論