📄 thresgui.m
字号:
function varargout = ThresGUI(varargin)
%
% THRESGUI
%
% THRESGUI IS A GUI CREATED TO VISUALIZATION OF THRESHOLDING PROCESS OF AN
% IMAGE. YOU CAN CHOICE THE THRESHOLDING METHOD OR ARBITRARY THRESHOLDS.
% THE THRESHOLDING METHODS AVALIABLE ARE:
% .GRAYTRHESH (MATLAB)
% .KAPUR
% .ITERATIVE
% .TRIANGULAR
%
% REQUIREMENTS: MATLAB 7.0, RELEASE 14.
%
% CREATED BY:
% IVAN DARIO ORDO袳Z SEPULVEDA
% CHEMICAL ENGINEER, 2006
%
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @ThresGUI_OpeningFcn, ...
'gui_OutputFcn', @ThresGUI_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 ThresGUI is made visible.
function ThresGUI_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
%========================================================================
%========================================================================
% --- Outputs from this function are returned to the command line.
function varargout = ThresGUI_OutputFcn(hObject, eventdata, handles)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --------------------------------------------------------------------
function FileMenu_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
function OpenMenuItem_Callback(hObject, eventdata, handles)
global Archivo NameArchivo
%[NameArchivo,PathArchivo] = uigetfile({'*.jpg';, '*.tif';, '*.gif';, '*.bmp';, '*.png';, ...
% '*.hdf';, '*.pcx';, '*.xwd';, '*.ico';, '*.cur';, '*.ras';, ...
% '*.pbm';, '*.pgm';, '*.ppm'});
set(handles.Save,'enable','off')
set(handles.TipoSegmentacion,'enable','off')
[NameArchivo,PathArchivo] = uigetfile({'*.jpg;*.tif;*.gif;*.bmp;*.png; *.hdf;*.pcx;*.xwd;*.ico;*.cur;*.ras;*.pbm;*.pgm;*.ppm'});
if ~isequal(NameArchivo, 0)
Archivo=[PathArchivo,NameArchivo];
CargarImagen(handles)
set(handles.Save,'enable','on')
set(handles.TipoSegmentacion,'enable','on')
set(handles.DefinidoUsuario,'checked','on')
end
% --------------------------------------------------------------------
function Save_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
global ImagenUmbral
if isempty(ImagenUmbral)==1,msgbox('Doesn''t exist an image');return,end
[filename,pathname] = uiputfile({'*.jpg';, '*.tif';, '*.gif';, '*.bmp';, '*.png';, ...
'*.hdf';, '*.pcx';, '*.xwd';, '*.ico';, '*.cur';, '*.ras';, ...
'*.pbm';, '*.pgm';, '*.ppm'},'Save file name');
if isequal(filename,0) | isequal(pathname,0)
errordlg('Saving canceled','Threshold GUI'); error('Saving canceled')
else
try
imwrite(ImagenUmbral,[pathname,filename]);
catch
errordlg('Error during saving','Threshold GUI'),error('Error during saving')
end %try
end %if
% --------------------------------------------------------------------
function CloseMenuItem_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
selection = questdlg(['Close ' get(handles.figure1,'Name') '?'],...
['Close ' get(handles.figure1,'Name') '...'],...
'Yes','No','Yes');
if strcmp(selection,'No')
return;
end
delete(handles.figure1)
% --------------------------------------------------------------------
function graythresh_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
global ImagenGris
NoChecked(handles)
set(handles.graythresh,'checked','on')
Umbral = graythresh(ImagenGris)*255;
GraficarHistoUmbral(Umbral,handles,'all')
% --------------------------------------------------------------------
function kapur_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
global ImagenGris
NoChecked(handles)
set(handles.kapur,'checked','on')
Umbral = Kapur1(ImagenGris)*255;
GraficarHistoUmbral(Umbral,handles,'all')
% --------------------------------------------------------------------
function triangular_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
global ImagenGris
NoChecked(handles)
set(handles.triangular,'checked','on')
Umbrales = Triangular1(ImagenGris)*255;
set(handles.triangular,'userdata',Umbrales)
GraficarHistoUmbral(Umbrales(1),handles,'trian')
% --------------------------------------------------------------------
function iterativo_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
global ImagenGris
NoChecked(handles)
set(handles.iterativo,'checked','on')
Umbral = Iterativo1(ImagenGris)*255;
GraficarHistoUmbral(Umbral,handles,'all')
% --------------------------------------------------------------------
function DefinidoUsuario_Callback(hObject, eventdata, handles)
% --------------------------------------------------------------------
NoChecked(handles)
set(handles.DefinidoUsuario,'checked','on')
set(handles.Umbralizar,'enable','on')
set(handles.Umbralizar,'string','Thresholding')
if get(handles.ActualAutomatico,'value')==1
set(handles.Umbralizar,'enable','off')
end %if
% --- Executes on button press in Umbralizar.
%-------------------------------------------------------------------------
function Umbralizar_Callback(hObject, eventdata, handles)
%-------------------------------------------------------------------------
if isequal(get(handles.triangular,'checked'),'off')==1
Umbral=get(handles.slider1,'value');
GraficarUmbral(Umbral,handles);
NoChecked(handles);set(handles.DefinidoUsuario,'checked','on')
else
UmbralActual=get(handles.slider1,'value');
Umbrales=get(handles.triangular,'userdata');
Pos=find(Umbrales==UmbralActual);
if isempty(Pos),msgbox('Error de Ejecuci髇');return,end
if Pos==length(Umbrales),Pos=0;,end %if
GraficarHistoUmbral(Umbrales(Pos+1),handles,'')
end %if
% --- Executes on slider movement.
%-------------------------------------------------------------------------
function slider1_Callback(hObject, eventdata, handles)
%-------------------------------------------------------------------------
set(handles.Intensidad,'visible','on')
Umbral=get(hObject,'value');
GraficarHistograma(Umbral,handles)
if get(handles.ActualAutomatico,'value')==1
GraficarUmbral(Umbral,handles);
end %if
NoChecked(handles);set(handles.DefinidoUsuario,'checked','on')
% --- Executes during object creation, after setting all properties.
%-------------------------------------------------------------------------
function slider1_CreateFcn(hObject, eventdata, handles)
%-------------------------------------------------------------------------
usewhitebg = 1;
if usewhitebg
set(hObject,'BackgroundColor',[.9 .9 .9]);
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
set(hObject,'SliderStep',[1/255 1/255]);%Saltra cada 1
% --- Executes on button press in ActualAutomatico.
%-------------------------------------------------------------------------
function ActualAutomatico_Callback(hObject, eventdata, handles)
%-------------------------------------------------------------------------
set(handles.Umbralizar,'enable','on')
set(handles.Umbralizar,'string','Thresholding')
set(handles.Umbralizar,'enable','off')
if get(hObject,'Value')==1
set(handles.Umbralizar,'enable','off')
else
set(handles.Umbralizar,'enable','on')
end %if
NoChecked(handles);set(handles.DefinidoUsuario,'checked','on')
% --------------------------------------------------------------------
function TipoSegmentacion_Callback(hObject, eventdata, handles)
%==========================================================================
function CargarImagen(handles)
%==========================================================================
global Archivo NameArchivo ImagenGris
subplot(221);img=imread(Archivo);imshow(img);title('Original Image');axis off
try
if Esgray(img)==0
imggris=rgb2gray(img);subplot(222);imshow(imggris);title('Gray Scale Image')
else
imggris=img;subplot(222);imshow(imggris);title('Gray Scale Image')
end %if
catch
errordlg('Error during image processing','Threshold GUI');error('Error during image processing')
end %try
subplot(223);imhist(imggris);title('Histogram')
ImagenGris=imggris;
Min=0;Max=255;
set(handles.slider1,'visible','on')
set(handles.slider1,'Min',Min)
set(handles.slider1,'Max',Max)
set(handles.slider1,'value',Min)
set(handles.Umbralizar,'visible','on')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -