You are on page 1of 31

UNIVERSIDAD TÉCNICA DEL NORTE

FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS


CARRRERA DE INGENIERÍA MECATRÓNICA

MEMORIA TÉCNICA
DESARROLLO DE UNA INTERFAZ GRAFICA EN MATLAB PARA LA
OBTENCION DE CARACTERISTICAS E HISTOGRAMA APLICANDO TECNICAS
DE PROCESAMIENTO DE IMÁGENES, OBTENIDAS EN TIEMPO REAL.

Miembros de grupo:

• Katherine Johana García.


• Kathia Daniela Maldonado
• Marjorie Pamela Segovia.
• Katherine Johana Ruiz
• Cristian Arresta
• Edison Pinchado

Docente: Ing. Verdezoto Gabriela, MSc.

Nivel: 9

Área: Robótica y Visión Artificial

Ciudad: Ibarra

Periodo Académico: abril 2018 - julio 2018


UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

1. INTRODUCCION
La Visión Artificial aplicada a la industria abarca la informática, la óptica, la ingeniería
mecánica y la automatización industrial. A diferencia de la Visión Artificial académica,
que se centra en máquinas basadas en el procesamiento de imágenes, las aplicaciones
de Visión Artificial industrial integran sistemas de captura de imágenes digitales,
dispositivos de entrada/salida y redes de ordenador para el control de equipos
destinados a la fabricación, tales como brazos robóticos. Los sistemas de Visión Artificial
se destinan a realizar inspecciones visuales que requieren alta velocidad, gran aumento,
funcionamiento las 24 horas del día o la repetibilidad de las medidas [1].
En los últimos años, los sistemas de visión artificial han evolucionado tanto
tecnológicamente como en la propia filosofía del sistema de visión. Esto ha implicado
cambios sustanciales en la forma de interpretar la visión como una herramienta
standard para el análisis de procesos. La visión artificial consiste en la captación de
imágenes en línea mediante cámaras y su posterior tratamiento a través de técnicas de
procesamiento avanzadas, permitiendo así poder intervenir sobre un proceso
(modificación de variables) o producto, para el control de calidad y seguridad de toda la
producción.
Un sistema de visión artificial capta una imagen de un objeto real, la convierte en
formato digital, la procesa mediante un ordenador, obtiene unos resultados del proceso.
Tanto los sistemas de visión como sus aplicaciones estaban orientadas a un perfil muy
técnico y con amplios conocimientos tanto en el hardware específico como en el proceso
a controlar, en la actualidad existen productos de visión que se pueden poner en
funcionamiento por usuarios no expertos con una cierta formación respecto al
producto. Los interfaces gráficos y la simplicidad en las cámaras han orientado la visión
a este tipo de procesos a controlar [2].
Por la facilidad de manipulación que presta el software Matlab, para la creación de una
interfaz interactiva tanto como en el tratamiento de imágenes de algún proceso de
visión por computador como si estos fueran procesos reales, en este proyecto se plantea
obtener el histograma de una serie de imágenes capturadas en tiempo real, que
previamente tendrán un tratamiento mediante la ejecución de una gama de
operaciones que están establecidas a través de una interfaz GUIDE en Matlab.
Para el entorno GUIDE que se desarrollara en el software, es necesario precisar las
operaciones con las que se tratara las imágenes, el tipo de datos que queremos
visualizar en pantalla y además se debe tomar en cuenta que, al momento de desarrollar
la interfaz gráfica influye mucho el diseño que se le dará a la misma ya que este debe
ser de fácil interpretación y manipulación para el usuario.
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

2. OBJETIVOS

2.1 General
• Obtener el histograma de una serie de imágenes capturadas en tiempo real
mediante una interfaz GUIDE.
2.2 Específicos

• Reforzar y aplicar los conocimientos en (GUIDE) Matlab.


• Encontrar las características de las Imágenes.
• Realizar tratamientos de Imágenes (Operaciones).

3. PROCESO
3.1 ADQUISICIÓN DE IMÁGENES Y ENTORNOS GRÁFICOS
Se requiere adquirir una serie de imágenes en tiempo real desde una cámara de
vídeo (webcam), realizar con estas las operaciones necesarias para el
tratamiento de imágenes y de esta manera visualizar tanto el histograma como
las imágenes tratadas a través de una interfaz gráfica GUIDE en Matlab [3].
3.2 ADQUISICIÓN DE LAS IMÁGENES
La primera tarea que se debe realizar es la adquisición de las imágenes
capturadas desde una cámara de vídeo. Para este objetivo se empleará “Image
Acquisition Toolbox” de Matlab.
Las etapas son:
1. Instalar y configurar la cámara de vídeo en el computador.
2. Obtener la información de identificación del dispositivo dentro del entorno
de Matlab.
3. Crear un objeto de vídeo en tiempo real de entrada.
4. Adquisición de imágenes y entornos gráficos
5. Configurar las propiedades de adquisición de la señal de vídeo
6. Adquirir los datos de las imágenes.
7. Realizar operaciones con los recursos [3].
3.2.1 Instalar y configurar la cámara de vídeo
Dispositivos genéricos de video, tales como Webcams y cámaras de video,
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

generalmente no requieren grandes esfuerzos de instalación. Básicamente, la


conexión al puerto USB o FireWire son suficientes.
Después de la configuración de la cámara y el sistema, se inicializará Matlab. No
se necesitará ninguna configuración especial en Matlab para soportar las
cámaras, siempre y cuando los drivers de las tarjetas de adquisición sean
compatibles con esta herramienta de adquisición. Este toolbox es sólo válido
para equipos de MATROX, DATA TRANSLATION y video de Windows genérico y
debe ser instalado antes de llevar a cabo cualquier proceso descrito en este
documento.
3.2.2 Obtener la información del dispositivo de vídeo
Antes de empezar a adquirir las imágenes hay que saber cómo identificar al
dispositivo de vídeo. Esta etapa es necesaria para crear el objeto de vídeo.
Utilizando el comando:
>> info = imaqhwinfo
Esta sentencia retornará varios parámetros, pero el más importante es el que
indica los tipos de drivers con los que se puede trabajar: InstalledAdaptors. Para
más información sobre cada uno de ellos indicar su identificador dentro del
anterior comando.Por ejemplo, si se tratase de video de Windows genérico:
Adquisición de imágenes y entornos gráficos 2.5
>> info = imaqhwinfo(‘winvideo’)
En el campo DeviceIDs y DeviceInfo se puede obtener información detallada de
los estándares de vídeo que soporta.
>>info.DeviceInfo
>> info_dis = imaqhwinfo(‘winvideo’, 1)
3.2.3 Crear un objeto de vídeo de entrada
Para trabajar con la cámara de vídeo hay que crear un objeto que controle la
cámara, conectando ésta con Matlab:
>>vidobj = videoinput(‘winvideo’)
>> vidobj
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

Aparecerá un sumario de las características del objeto de vídeo creado,


indicando el número de imágenes adquiridas, el tipo de disparo para la
adquisición (trigger), el estado del objeto, etc.
3.2.4 Realizar un canal de vídeo en línea
Antes de empezar a tomar imágenes es necesario ajustar la óptica, el
diafragma, el sistema de iluminación. Para realizar estas tareas se requiere
crear un canal de vídeo en línea, esto es, una ventana que muestre de forma
continua la señal de vídeo:
>> preview(vidobj);
3.2.5 Configurar las propiedades de adquisición de la señal de vídeo
Después de haber creado el objeto de vídeo y tener una ventana de vídeo en
línea, se puede cambiar algunas características de la adquisición. Una lista de
las propiedades de este proceso se puede ver con:
>> get(vidobj)
Especial atención habría que poner en el tipo de disparo para adquirir las
imágenes. Por defecto está definido como inmediato. Sin embargo, se puede
hacer manual que empiece a tomar imágenes después de un retardo.
3.2.6 Adquirir los datos de la imagen
Con la creación y configuración del objeto de video se puede empezar a tomar
imágenes de la siguiente manera: 1. Inicializar el objeto de vídeo, 2. Configurar
el disparo y 3. Convertir los datos en variables de imágenes:
>>start(vidobj);
>> datos=getdata(vidobj,4);
>> imaqmontage (datos);
>>stop(vidobj);
La variable ‘datos’ contiene las cuatro imágenes adquiridas. Sin embargo, para
tomar una sola imagen, el proceso se puede simplificar a:
>> imgAdq = getsnapshot(vidobj);
>> imshow(imgAdq)
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

En este caso la variable ‘imgAdq’ es una matriz que contiene la información de


cada píxel de la imagen adquirida.
3.3 INTERFAZ CON EL USUARIO MEDIANTE MATLAB
Matlab tiene una aplicación para la creación de interfases gráficos con el usuario
(Graphical User Interface, GUI):
>>guide
Eligiendo una plantilla en blanco aparecerá el editor gráfico:
Se colocará en primer lugar dos textos estáticos (Imagen de Entrada / Imagen de
Salida) y se grabará el proyecto GUI en dos ficheros, uno con extensión *.m y
otro *.fig. Se añadirá dos zonas de dibujos (axes), uno para visualizar la imagen
de entrada y otro para ver la la imagen de resultado. Este procedimiento se
basará en leer la imagen de entrada (‘cameraman.tif’) y posteriormente se
aplicará operaciones de tratamiento de imágenes. El histograma quedará
reflejado en la interfaz.
3.3.1 Interfaz Gráfica GUIDE-Matlab
GUIDE es un entorno de programación visual disponible en MATLAB para
realizar y ejecutar programas que necesiten ingreso continuo de datos. Tiene
las características básicas de todos los programas visuales como Visual Basic o
Visual C++. Se presentan las siguientes opciones (para la creación de un GUIDE):
3.3.2 Blank GUI (Default)
La opción de interfaz gráfica de usuario en blanco (viene predeterminada), nos
presenta un formulario nuevo, en el cual podemos diseñar nuestro programa.
3.3.3 GUI with Uicontrols
Esta opción presenta un ejemplo en el cual se calcula la masa, dada la densidad
y el volumen, en alguno de los dos sistemas de unidades. Podemos ejecutar este
ejemplo y obtener resultados.
3.3.4 GUI with Axes and Menu
Esta opción es otro ejemplo el cual contiene el menú File con las opciones Open,
Print y Close. En el formulario tiene un Popup menu, un push button y un objeto
Axes, podemos ejecutar el programa eligiendo alguna de las seis opciones que se
encuentran en el menú despegable y haciendo click en el botón de comando.
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

3.3.5 Modal Question Dialog


Con esta opción se muestra en la pantalla un cuadro de diálogo común, el cual
consta de una pequeña imagen, una etiqueta y dos botones Yes y No,
dependiendo del botón que se presione, el GUI retorna el texto seleccionado (la
cadena de caracteres ‘Yes’ o ‘No’) [4].
En el menú de la aplicación GUI existen algunos componentes que ayudarán a
crear le interfaz. La siguiente tabla 1 muestra una descripción de los
componentes:

Control Valor de estilo Descripción


Check box ‘checkbox’ Indica el estado de una opción o atributo
Editable Text ‘edit’ Caja para editar texto
Pop-up menu ‘popupmenu’ Provee una lista de opciones
List Box ‘listbox’ Muestra una lista deslizable
Push Button ‘pushbutton’ Invoca un evento inmediatamente
Radio Button ‘radio’ Indica una opción que puede ser seleccionada
Toggle Button ‘togglebutton’ Solo dos estados, “on” o “off”
Slider ‘slider’ Usado para representar un rango de valores
Static Text ‘text’ Muestra un string de texto en una caja
Panel button Agrupa botones como un grupo
Button Group Permite exclusividad de selección con los radios button

Tabla 1. Componentes para crear la interfa GUIDE.


Una aplicación GUIDE consta de dos archivos: .m y fig. El archivo .m es el que
contiene el código con las correspondencias de los botones de control de la
interfaz y el archivo. fig contiene los elementos gráficos. Cada vez que se adicione
un nuevo elemento en la interfaz gráfica, se genera automáticamente código en
el archivo.m. Para ejecutar una Interfaz Gráfica, si la hemos etiquetado con el
nombre curso.fig, simplemente se ejecuta en la ventana de comandos >> curso
o haciendo clic derecho en el m-file y seleccionando la opción RUN.
Todos los valores de las propiedades de los elementos (color, valor, posición,
string…) y los valores de las variables transitorias del programa se almacenan en
una estructura, los cuales son accedidos mediante un único y mismo
identificador para todos éstos. Tomando el programa listado anteriormente, el
identificador se asigna en:
handles.output = hObject;
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

handles, es el identificador a los datos de la aplicación. Esta definición de


identificador es salvada con la siguiente instrucción:
guidata(hObject, handles);
guidata, es la sentencia para salvar los datos de la aplicación.
Aviso: guidata es la función que guarda las variables y propiedades de los
elementos en la estructura de datos de la aplicación, por lo tanto, como regla
general, en cada subrutina se debe escribir en la última línea lo siguiente:
guidata(hObject,handles);
Esta sentencia nos garantiza que cualquier cambio o asignación de propiedades
o variables quede almacenado.
3.3.6 SENTENCIAS GET Y SET
La asignación u obtención de valores de los componentes se realiza mediante
las sentencias get y set. Por ejemplo, si queremos que la variable utpl tenga el
valor del Slider se escribe:
utpl= get(handles.slider1,'Value');
Notar que siempre se obtienen los datos a través de los identificadores
handles. Para asignar el valor a la variable utpl al statictext etiquetada como
text1 se escribe [4]:
set(handles.text1,'String',utpl).
4. APLICACIÓN
4.1 DESCRIPCION DE LA APLICACIÓN

En el proyecto se desarrolló una interfaz gráfica en GUIDE en el software


Matlab, internamente este se encarga de ejecutar operaciones con imágenes a
través de comandos para el tratamiento de las misma, que consta de tres
secciones que se visualizan en pantalla, la primera sección (Video Original (Fig.
1) contiene un cuadro que muestra la imagen capturada en tiempo real, la cual
deseamos tratar ; además de contar con funciones que nos permiten
modificar las propiedades de cámara y de video con las que se adquirirán las
imágenes.
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

Fig. 1. Interfaz Gráfica guide.

La segunda sección (Operaciones y Transformaciones) de la interfaz nos


muestra a forma de botoneras una serie de funciones, en este caso una gama
de operaciones con las que podemos tratar una imagen, previa la introducción
de una constante con las que estas trabajarán para ejecutar la : suma, resta,
multiplicación, división e inversión además de tratar la imagen mediante la
ecualización, también se muestra una serie de datos modificables tanto de
entrada como de salida de la imagen para ser aplicados y en la parte inferior
mediante un cuadro de imagen se muestra el histograma respectivo de la
imagen tratada (Fig. 2).
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

Fig. 2. Operación suma en el tratamiento de imagen.

En la tercera sección de la interfaz gráfica (Video procesado, Fig. 3) se presenta


en un cuadro la imagen la imagen que ha sido tratada por medio de diferentes
operaciones además de presentar las opciones de capturar otra imagen y otra
para poder regresar a el procesamiento previo al haber aplicado otros
comandos de operaciones con las imágenes.

Fig. 3. Resultado del tratamiento de la imagen en la 3ra sección de la Interfaz.


UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

4.2 TÉCNICAS DE PROCESAMIENTO DE LA IMAGEN

HISTOGRAMA:
El histograma es una función discreta que contabiliza el número de ocurrencias
de cada nivel de gris presenta en una imagen. Se representa
en un diagrama donde en el eje de abscisa está el nivel de gris y en el de
ordenadas la frecuencia de cada nivel de gris en la imagen. Si al histograma se
le divide por el número de píxeles de la imagen se obtendrá la función de
probabilidad muestre al de cada nivel de gris en la imagen:

siendo M y N el número de filas y columnas de la imagen, h(i) es la función


histograma y p(i) su probabilidad muestral. Un histograma no dice nada sobre
la disposición espacial de las distintas intensidades. Dos imágenes diferentes
pueden tener igual histograma. Sin embargo, el histograma habla sobre el tipo
de adquisición que ha sido realizado. El histograma proporciona información
estadística de la imagen, esta información es bastante útil para conocer cómo
se ha producido el proceso de formación de la imagen [5].

TIPOS DE OPERACIONES Y TRANSFORMACIONES:


El uso de histogramas ayuda a mejorar la calidad de las imágenes:
Se detallan las siguientes operaciones elementales con píxeles, considerando
que A: imagen de entrada y R: imagen resultante (del mismo
tamaño que A).
• Sumar una constante: R (x, y): = A (x, y) + a
• Restar una constante: R (x, y): = A (x, y) - a
• Multiplicar por una constante: R (x, y): = b*A (x, y)
• Dividir por una constante: R (x, y): = A (x, y) / b
• Invertir: R (x, y): = 255 – A (x, y)

También se pueden detallar algunas transformaciones de intensidad para


imágenes digitales:
La sintaxis general para aplicar una transformación de intensidad a una imagen
f es:
g = imadjust (f, [low_in high_in], [low_out high_out])
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

Aplica los valores de intensidad de la imagen f que sea de la clase uint8, uint16
o doublé, a la cual se le aplica
- Un intervalo de entrada [low_in high_in]
- Y un intervalo de salida [low_out high_out]
Hay que considerar que los valores del intervalo están entre 0 y 1, incluido
estos valores.

Transformación gamma:

g = imadjust (f, [low_in high_in], [low_out high_out], gamma) [5].

ECUALIZACIÓN DEL HISTOGRAMA:


La conversión de cualquier forma de histograma a uno uniforme, si bien es
cierto que no aumentará la información, pero si mejorará la imagen para las
siguientes etapas.
El fundamento se basa en realizar una conversión en el histograma de forma
que la probabilidad de cualquier nivel de gris en la imagen sea idéntica. Desde
el punto de vista del histograma, esta transformación producirá que el número
de ocurrencias de un nivel de gris sea el mismo valor siempre [5], (Fig. 4).

Fig. 4. Ecualización Imagen.


UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

4.3 PROGRAMACION
function varargout = interfazz(varargin)
% INTERFAZZ MATLAB code for interfazz.fig
% INTERFAZZ, by itself, creates a new INTERFAZZ or
raises the existing
% singleton*.
%
% H = INTERFAZZ returns the handle to a new INTERFAZZ
or the handle to
% the existing singleton*.
%
% INTERFAZZ('CALLBACK',hObject,eventData,handles,...)
calls the local
% function named CALLBACK in INTERFAZZ.M with the
given input arguments.
%
% INTERFAZZ('Property','Value',...) creates a new
INTERFAZZ or raises the
% existing singleton*. Starting from the left,
property value pairs are
% applied to the GUI before interfazz_OpeningFcn gets
called. An
% unrecognized property name or invalid value makes
property application
% stop. All inputs are passed to interfazz_OpeningFcn
via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI
allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help


interfazz

% Last Modified by GUIDE v2.5 25-Jul-2018 09:29:37

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @interfazz_OpeningFcn,
...
'gui_OutputFcn', @interfazz_OutputFcn,
...
'gui_LayoutFcn', [] , ...
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

'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 interfazz is made visible.


function interfazz_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 interfazz (see
VARARGIN)

% Choose default command line output for interfazz


handles.output = hObject;

% Update handles structure


guidata(hObject, handles);

UTN=imread('UTN.jpg');
axes(handles.UTN);
imshow(UTN);

CIME=imread('CIME.jpg');
axes(handles.CIME);
imshow(CIME);

global vidobj;
vidobj = videoinput('winvideo');
vidRes = vidobj.VideoResolution;
f = figure('Visible', 'off');
imageRes = fliplr(vidRes);
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

axes(handles.VideoO);
global hImage;
hImage = imshow(zeros(imageRes));
preview(vidobj,hImage);

global snapshot;
snapshot=zeros(1024);
axes(handles.VideoP);
imshow(snapshot)

axes(handles.histograma);
imhist(snapshot)
pause(30);

% UIWAIT makes interfazz wait for user response (see


UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the


command line.
function varargout = interfazz_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 selection change in menu1.


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)
vidobj.ReturnedColorSpace = 'grayscale';%Escoge el tipo de
imagen

% Hints: contents = cellstr(get(hObject,'String')) returns


menu1 contents as cell array
% contents{get(hObject,'Value')} returns selected
item from menu1
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

% --- Executes during object creation, after setting all


properties.
function menu1_CreateFcn(hObject, eventdata, handles)
% hObject handle to menu1 (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles empty - handles not created until after all
CreateFcns called

% Hint: popupmenu controls usually have a white background


on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes during object creation, after setting all


properties.
function membrete_CreateFcn(hObject, eventdata, handles)
% hObject handle to membrete (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles empty - handles not created until after all
CreateFcns called

% --- Executes on selection change in menu2.


function menu2_Callback(hObject, eventdata, handles)
% hObject handle to menu2 (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns


menu2 contents as cell array
% contents{get(hObject,'Value')} returns selected
item from menu2

% --- Executes during object creation, after setting all


properties.
function menu2_CreateFcn(hObject, eventdata, handles)
% hObject handle to menu2 (see GCBO)
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

% eventdata reserved - to be defined in a future version


of MATLAB
% handles empty - handles not created until after all
CreateFcns called

% Hint: popupmenu controls usually have a white background


on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function Const_Callback(hObject, eventdata, handles)


% hObject handle to Const (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global Const;
Const= str2double(get(handles.Const,'String'));

% Hints: get(hObject,'String') returns contents of Const as


text
% str2double(get(hObject,'String')) returns contents
of Const as a double

% --- Executes during object creation, after setting all


properties.
function Const_CreateFcn(hObject, eventdata, handles)
% hObject handle to Const (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles empty - handles not created until after all
CreateFcns called

% Hint: edit controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in Suma.


UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

function Suma_Callback(hObject, eventdata, handles)


% hObject handle to Suma (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)

global Const;
global snapshot;
global imagen;
global hImage;
imagen=snapshot;
[M,N]=size(snapshot);
for i=1:M
for j=1:N
snapshot(i,j)=snapshot(i,j)+Const;
if snapshot(i,j)>255
snapshot(i,j)=255;
end

end
end

axes(handles.VideoP);
imshow(snapshot)
axes(handles.histograma);
imhist(snapshot)

% --- Executes on button press in Resta.


function Resta_Callback(hObject, eventdata, handles)
% hObject handle to Resta (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global Const;
global snapshot;
global imagen;
global hImage;
imagen=snapshot;
[M,N]=size(snapshot);
for i=1:M
for j=1:N
snapshot(i,j)=snapshot(i,j)-Const;
if snapshot(i,j)<0
snapshot(i,j)=0;
end
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

end
end
axes(handles.VideoP);
imshow(snapshot)
axes(handles.histograma);
imhist(snapshot)

% --- Executes on button press in Mult.


function Mult_Callback(hObject, eventdata, handles)
% hObject handle to Mult (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global Const;
global snapshot;
global imagen;
global hImage;
imagen=snapshot;
[M,N]=size(snapshot);
for i=1:M
for j=1:N
snapshot(i,j)=snapshot(i,j)*Const;
if snapshot(i,j)>255
snapshot(i,j)=255;
end

end
end
axes(handles.VideoP);
imshow(snapshot)
axes(handles.histograma);
imhist(snapshot)

% --- Executes on button press in Div.


function Div_Callback(hObject, eventdata, handles)
% hObject handle to Div (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global Const;
global snapshot;
global imagen;
global hImage;
imagen=snapshot;
[M,N]=size(snapshot);
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

for i=1:M
for j=1:N
snapshot(i,j)=snapshot(i,j)/Const;
if snapshot(i,j)>255
snapshot(i,j)=255;
end

end
end
axes(handles.VideoP);
imshow(snapshot)
axes(handles.histograma);
imhist(snapshot)

% --- Executes on button press in Inversion.


function Inversion_Callback(hObject, eventdata, handles)

global Const;
global snapshot;
global imagen;
global hImage;
imagen=snapshot;
[M,N]=size(snapshot);
for i=1:M
for j=1:N
snapshot(i,j)=255-snapshot(i,j);

end
end
axes(handles.VideoP);
imshow(snapshot)
axes(handles.histograma);
imhist(snapshot)

function enMin_Callback(hObject, eventdata, handles)


% hObject handle to enMin (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global enMin;
enMin= str2double(get(handles.enMin,'String'));

% Hints: get(hObject,'String') returns contents of enMin as


text
% str2double(get(hObject,'String')) returns contents
of enMin as a double
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

% --- Executes during object creation, after setting all


properties.
function enMin_CreateFcn(hObject, eventdata, handles)
% hObject handle to enMin (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles empty - handles not created until after all
CreateFcns called

% Hint: edit controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function enMax_Callback(hObject, eventdata, handles)


% hObject handle to enMax (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global enMax;
enMax= str2double(get(handles.enMax,'String'));

% Hints: get(hObject,'String') returns contents of enMax as


text
% str2double(get(hObject,'String')) returns contents
of enMax as a double

% --- Executes during object creation, after setting all


properties.
function enMax_CreateFcn(hObject, eventdata, handles)
% hObject handle to enMax (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles empty - handles not created until after all
CreateFcns called

% Hint: edit controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function salMin_Callback(hObject, eventdata, handles)


% hObject handle to salMin (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global salMin;
salMin= str2double(get(handles.salMin,'String'));

% Hints: get(hObject,'String') returns contents of salMin


as text
% str2double(get(hObject,'String')) returns contents
of salMin as a double

% --- Executes during object creation, after setting all


properties.
function salMin_CreateFcn(hObject, eventdata, handles)
% hObject handle to salMin (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles empty - handles not created until after all
CreateFcns called

% Hint: edit controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function salMax_Callback(hObject, eventdata, handles)


% hObject handle to salMax (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global salMax;
salMax= str2double(get(handles.salMax,'String'));
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

% Hints: get(hObject,'String') returns contents of salMax


as text
% str2double(get(hObject,'String')) returns contents
of salMax as a double

% --- Executes during object creation, after setting all


properties.
function salMax_CreateFcn(hObject, eventdata, handles)
% hObject handle to salMax (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles empty - handles not created until after all
CreateFcns called

% Hint: edit controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in Gamma.


function Gamma_Callback(hObject, eventdata, handles)
% hObject handle to Gamma (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global salMax;
global salMin;
global enMax;
global enMin;
global G;
global snapshot;
global imagen;
global hImage;
imagen=snapshot;
snapshot=imadjust (snapshot, [enMin enMax], [salMin
salMax], G);
axes(handles.VideoP);
imshow(snapshot)
axes(handles.histograma);
imhist(snapshot)
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

% --- Executes on button press in Regresar.


function Regresar_Callback(hObject, eventdata, handles)
% hObject handle to Regresar (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global imagen;
global snapshot;
global hImage;
snapshot = imagen;
axes(handles.VideoP);
imshow(snapshot)
axes(handles.histograma);
imhist(snapshot)

% --- Executes on button press in PropiedadC.


function PropiedadC_Callback(hObject, eventdata, handles)
% hObject handle to PropiedadC (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
info = imaqhwinfo;
info = imaqhwinfo('winvideo');
info.DeviceInfo
info_dis = imaqhwinfo('winvideo', 1);

% --- Executes on button press in PropiedadV.


function PropiedadV_Callback(hObject, eventdata, handles)
% hObject handle to PropiedadV (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global snapshot;
whos snapshot;

% --- Executes on button press in Capturar.


function Capturar_Callback(hObject, eventdata, handles)
% hObject handle to Capturar (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

global snapshot;
global vidobj;
global hImage;
captura = getsnapshot(vidobj);
snapshot=rgb2gray(captura);
axes(handles.VideoP);
imshow(snapshot)

axes(handles.histograma);
imhist(snapshot)

function G_Callback(hObject, eventdata, handles)


% hObject handle to G (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see
GUIDATA)
global G;
G= str2double(get(handles.G,'String'));

% Hints: get(hObject,'String') returns contents of G as


text
% str2double(get(hObject,'String')) returns contents
of G as a double

% --- Executes during object creation, after setting all


properties.
function G_CreateFcn(hObject, eventdata, handles)
% hObject handle to G (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles empty - handles not created until after all
CreateFcns called

% Hint: edit controls usually have a white background on


Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in Ecualizador.


function Ecualizador_Callback(hObject, eventdata, handles)
global imagen
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

global snapshot
imagen=snapshot;
a=histeq(snapshot);
axes(handles.VideoP);
imshow(a)
axes(handles.histograma);
imhist(a)

5. CONCLCUSIONES

• GUIDE es una herramienta muy útil de Matlab, permite realizar aplicaciones


didácticas, como este proyecto para lo cual se creó una aplicación que ayude a
la obtención del histograma además de aplicar varias operaciones para tratar
imagines.

6. RECOMENDACIONES

• Para el buen desempeño de la aplicación se debe tomar encuentra algunos


factores como por ejemplo una adecuada iluminación del lugar donde se
realizará la toma de video, así como también una adecuada resolución de la
cara, ya que al ser muy baja no facilitará el procesamiento y de igual forma no
muy alta, ya que esto implicará un mayor rendimiento del procesador de la
computadora pudiendo ralentizar todo el proceso.
• Antes de realizar la programación es necesario comprobar que Matlab cuente
con el Toolbox de adquisición de imágenes para poder realizar la comunicación
con la cámara incorporada en la computadora.

7. BIBLIOGRAFIA

[1] F. U. E. Ministerio de Educacion, «Aplicación práctica de la visión artificial en el control de


procesos industriales,» Madrid, 2012.

[2] H. Ruiz, «Sistemas de Vision Arificial,» Barcelona.

[3] A. E. I. I. DEPARTAMENTO DE ELECTRÓNICA, «Prácticas de Visión Artificial Adquisición de


imágenes y entornos gráficos,» Madrid.

[4] D. O. Guerrero, «Manual de Interfaz Gráfica de Usuario en Matlab,» 2008.


UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

[5] G. Verdezoto, «Practica Histograma, operaciones y transformaciones de Imágenes,»


Ibarra, 2018.

8. ANEXOS

APLICACIÓN OPERACIONES CON IMÁGENES MEDIANTE GUIDE:


UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA
UNIVERSIDAD TÉCNICA DEL NORTE
FACULTAD DE INGENIERÍA EN CIENCIAS APLICADAS
CARRRERA DE INGENIERÍA MECATRÓNICA

You might also like