1、MATLAB函数源代码function varargout = DIP(varargin)% DIP MATLAB code for DIP.fig% DIP, by itself, creates a new DIP or raises the existing% singleton*.% Edit the above text to modify the response to help DIP% Last Modified by GUIDE v2.5 27-May-2012 11:43:05gui_Singleton = 1;gui_State = struct(gui_Name, mf
2、ilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, DIP_OpeningFcn, . gui_OutputFcn, DIP_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_ma
3、infcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT % - Executes just before DIP is made visible.function DIP_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a futu
4、re version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to DIP (see VARARGIN) % Choose default command line output for DIPhandles.output = hObject; % Update handles structureguidata(hObject, handles); % UIWAIT makes DIP wait for user response
5、 (see UIRESUME)% uiwait(handles.DIP); set(handles.Menu2,Enable,off);% 在打开图片前其他下拉菜单不可用set(handles.Menu3,Enable,off);set(handles.Menu4,Enable,off);set(handles.Menu5,Enable,off);set(handles.Menu6,Enable,off);set(handles.Menu7,Enable,off);set(handles.Menu8,Enable,off);set(handles.Menu9,Enable,off); seta
6、ppdata(handles.DIP, IM, 0); % - Outputs from this function are returned to the command line.function varargout = DIP_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future vers
7、ion of MATLAB% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout1 = handles.output; % - Executes on button press in file_open.function file_open_Callback(hObject, eventdata, handles)% hObject handle to file_open (see GCBO)% e
8、ventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global IM %定义一个全局变量im filename,pathname= uigetfile(*.bmp;*.tif;*.png;*.jpg,select picture); %选择图片路径 if isequal(filename,0) | isequal(pathname,0), return;endstr=pathname filename
9、; %合成路径+文件名IM=imread(str); %读取图片axes(handles.axes1); %使用第一个axesimshow(IM); %显示图片%axes(handles.axes2);%cla reset; set(handles.Menu2,Enable,on);% 在打开图片后其他下拉菜单可用set(handles.Menu3,Enable,on);set(handles.Menu4,Enable,on);set(handles.Menu5,Enable,on);set(handles.Menu6,Enable,on);set(handles.Menu7,Enable,o
10、n);set(handles.Menu8,Enable,on);set(handles.Menu9,Enable,on); setappdata(handles.DIP, IM, IM);% -function Menu1_Callback(hObject, eventdata, handles)% hObject handle to Menu1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (s
11、ee GUIDATA) % -function Menu1_1_Callback(hObject, eventdata, handles)% hObject handle to Menu1_1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) global IM %定义一个全局变量IMfilename,pathname=uigetfile(*.bmp;*.tif;*.png
12、;*.jpg,select picture); %选择图片路径if isequal(filename,0) | isequal(pathname,0), return;endstr=pathname filename; %合成路径+文件名IM=imread(str); %读取图片axes(handles.axes1); %使用第一个axesimshow(IM); %显示图片%axes(handles.axes2);%cla reset; set(handles.Menu2,Enable,on);% 在打开图片后其他下拉菜单可用set(handles.Menu3,Enable,on);set(h
13、andles.Menu4,Enable,on);set(handles.Menu5,Enable,on);set(handles.Menu6,Enable,on);set(handles.Menu7,Enable,on);set(handles.Menu8,Enable,on);set(handles.Menu9,Enable,on); setappdata(handles.DIP, IM, IM); % -function Menu1_2_Callback(hObject, eventdata, handles)% hObject handle to Menu1_2 (see GCBO)%
14、eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global BW %定义处理后的图片BW这个全局变量filename,pathname,filterindex=. uiputfile(*.bmp;*.tif;*.png;*.jpg,save picture);%存储图片路径if filterindex=0 return %如果取消操作,返回else str=pathname filename;
15、%合成路径+文件名axes(handles.axes2); %使用第二个axes imwrite(BW,str); %写入图片信息,即保存图片end % -function Menu1_3_Callback(hObject, eventdata, handles)% hObject handle to Menu1_3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)clos
16、e(gcf) %关闭当前Figure窗口句柄 % -function Menu1_4_Callback(hObject, eventdata, handles)% hObject handle to Menu1_4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global IM;axes(handles.axes2);imshow(IM);filename,pathna
17、me,filterindex=. uiputfile(*.bmp;*.tif;*.png;*.jpg,save picture);if filterindex=0 return else str=pathname filename; axes(handles.axes2); imwrite(IM,str); %写入图片信息,即保存图片end % -function Menu2_Callback(hObject, eventdata, handles)% hObject handle to Menu4 (see GCBO)% eventdata reserved - to be defined
18、in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % -function Menu2_1_Callback(hObject, eventdata, handles)% hObject handle to Menu2_1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (s
19、ee GUIDATA) % -function Menu2_1_1_Callback(hObject, eventdata, handles)% hObject handle to Menu2_1_1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global IM;global BW;BW=imresize(IM,0.3,nearest);axes(handles.ax
20、es2);imshow(BW,); % -function Menu2_1_2_Callback(hObject, eventdata, handles)% hObject handle to Menu2_1_2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global IM;global BW;BW=imresize(IM,0.1,bilinear);axes(han
21、dles.axes2);imshow(BW,); % -function Menu2_1_3_Callback(hObject, eventdata, handles)% hObject handle to Menu2_1_3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global IM;global BW;BW=imresize(IM,0.1,bicubic);ax
22、es(handles.axes2);imshow(BW,); % -function Menu2_2_Callback(hObject, eventdata, handles)% hObject handle to Menu2_2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global IM;global BW;H=rotate; % -function Menu2_
23、3_Callback(hObject, eventdata, handles)% hObject handle to Menu2_3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global IM;global BW;set(handles.main_txt, FontName, 宋体 );set(handles.main_txt, String, 请选择要裁剪的局域,
24、并双击选定区域以显示!);waitforbuttonpress;BW=imcrop(IM);axes(handles.axes2);imshow(BW);set(handles.main_txt, FontName, Calibri);set(handles.main_txt, String, Welcome!); % -function Menu2_4_Callback(hObject, eventdata, handles)% hObject handle to Menu2_4 (see GCBO)% eventdata reserved - to be defined in a futu
25、re version of MATLAB% handles structure with handles and user data (see GUIDATA) % -function Menu2_4_1_Callback(hObject, eventdata, handles)% hObject handle to Menu2_4_1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GU
26、IDATA)global IM;global BW;snoise = 0.15*randn(size(IM);BW = imadd(IM, im2uint8(snoise);axes(handles.axes2);imshow(BW); % -function Menu2_4_2_Callback(hObject, eventdata, handles)% hObject handle to Menu2_4_2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles struct
27、ure with handles and user data (see GUIDATA)global IM;global BW;BW = imnoise(IM,salt & pepper,0.05);axes(handles.axes2);imshow(BW); % -function Menu2_5_Callback(hObject, eventdata, handles)% hObject handle to Menu2_5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handl
28、es structure with handles and user data (see GUIDATA)global IM;global BW;len = 25;theta = 35;PSF = fspecial(motion, len, theta);BW = imfilter(IM, PSF, circular, conv);axes(handles.axes2);imshow(BW); % -function Menu2_6_Callback(hObject, eventdata, handles)% hObject handle to Menu2_6 (see GCBO)% even
29、tdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.main_txt, FontName, 宋体 );set(handles.main_txt, String, 请用鼠标选择任意几个像素点后按回车以显示所选像素点的数据值!);vals=impixel;set(handles.main_txt, FontName, Calibri);set(handles.main_txt, Strin
30、g, Welcome!); % -function Menu2_7_Callback(hObject, eventdata, handles)% hObject handle to Menu2_7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles.main_txt, FontName, 宋体 );set(handles.main_txt, String
31、, 请用鼠标选择一线段后按回车以显示轨迹强度图!);axes(handles.axes1);improfile;%c = improfile;%axes(handles.axes2);%imshow(c);set(handles.main_txt, FontName, Calibri);set(handles.main_txt, String, Welcome!); % -function Menu2_8_Callback(hObject, eventdata, handles)% hObject handle to Menu2_8 (see GCBO)% eventdata reserved
32、 - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global IM;counts,x=imhist(IM,64);axes(handles.axes2);stem(x,counts,k-,k.);% -function Menu4_Callback(hObject, eventdata, handles)% hObject handle to Menu4 (see GCBO)% eventdata reserved - to be
33、defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % -function Menu4_1_Callback(hObject, eventdata, handles)% hObject handle to Menu4_1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user
34、 data (see GUIDATA)global IM;global BW;BW = imadjust(IM);axes(handles.axes2);imshow(BW); % -function Menu4_2_Callback(hObject, eventdata, handles)% hObject handle to Menu4_2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (se
35、e GUIDATA) % -function Menu4_2_1_Callback(hObject, eventdata, handles)% hObject handle to Menu4_2_1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global IM;global BW;BW = histeq(IM);axes(handles.axes2);imshow(B
36、W);figure(1);subplot(1,2,1);imhist(IM);title(原始图像直方图);subplot(1,2,2);imhist(BW); title(直方图均衡化后图像直方图); % -function Menu4_2_2_Callback(hObject, eventdata, handles)% hObject handle to Menu4_2_2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles
37、and user data (see GUIDATA)global IM;global BW;hgram = ones(1,256);BW = histeq(IM,hgram);axes(handles.axes2);imshow(BW);figure(2);subplot(1,2,1);imhist(IM);title(原始图像直方图);subplot(1,2,2);imhist(BW); title(直方图规定化后图像直方图); % -function Menu4_3_Callback(hObject, eventdata, handles)% hObject handle to Menu
38、4_3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % -function Menu4_3_1_Callback(hObject, eventdata, handles)% hObject handle to Menu4_3_1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global IM;global BW;h = 1 1 1;1 0 1;1 1 1;% 8邻域平均滤波h = h/8;BW = conv2(IM, h);axes(handles.axes2);imshow(BW); % -function Menu4_3_2_Callback(hObject, eve