Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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:
Nivel: 9
Ciudad: Ibarra
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
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
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:
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:
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
'gui_Callback', []);
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State,
varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
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);
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)
end
end
axes(handles.VideoP);
imshow(snapshot)
axes(handles.histograma);
imhist(snapshot)
end
end
axes(handles.VideoP);
imshow(snapshot)
axes(handles.histograma);
imhist(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)
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)
global snapshot;
global vidobj;
global hImage;
captura = getsnapshot(vidobj);
snapshot=rgb2gray(captura);
axes(handles.VideoP);
imshow(snapshot)
axes(handles.histograma);
imhist(snapshot)
global snapshot
imagen=snapshot;
a=histeq(snapshot);
axes(handles.VideoP);
imshow(a)
axes(handles.histograma);
imhist(a)
5. CONCLCUSIONES
6. RECOMENDACIONES
7. BIBLIOGRAFIA
8. ANEXOS