资源描述
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:05
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @DIP_OpeningFcn, ...
'gui_OutputFcn', @DIP_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(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 future 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 DIP
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes DIP wait for user response (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');
setappdata(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 version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in file_open.
function file_open_Callback(hObject, eventdata, handles)
% hObject handle to file_open (see GCBO)
% eventdata 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;
end
str=[pathname filename]; %合成路径+文件名
IM=imread(str); %读取图片
axes(handles.axes1); %使用第一个axes
imshow(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','on');
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 (see 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 %定义一个全局变量IM
[filename,pathname]=uigetfile({'*.bmp';'*.tif';'*.png';'*.jpg'},'select picture'); %选择图片路径
if isequal(filename,0) || isequal(pathname,0),
return;
end
str=[pathname filename]; %合成路径+文件名
IM=imread(str); %读取图片
axes(handles.axes1); %使用第一个axes
imshow(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','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)
% 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]; %合成路径+文件名
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)
close(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,pathname,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 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 (see 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.axes2);
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(handles.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');
axes(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_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', '请选择要裁剪的局域,并双击选定区域以显示!');
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 future 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 GUIDATA)
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 structure 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
% handles 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)
% 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', '请用鼠标选择任意几个像素点后按回车以显示所选像素点的数据值!');
vals=impixel;
set(handles.main_txt, 'FontName', 'Calibri');
set(handles.main_txt, 'String', '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', '请用鼠标选择一线段后按回车以显示轨迹强度图!');
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 - 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 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 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 (see 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(BW);
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 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 Menu4_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
展开阅读全文