⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thresgui.m

📁 MATLAB源文件
💻 M
📖 第 1 页 / 共 2 页
字号:
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 + -