Está en la página 1de 5

Obtencin y anlisis matemtico bsico de imgenes digitales

para calcular desplazamientos.


Autor: Profesor Vicente Torres Ziga.

1. Objetivo:
El alumno comprender las bases y utilizar Matlab para capturar video de una webcam
bsica; por medio del video medir el desplazamiento de un objeto. Entender la extensin en el
uso del video como instrumento de medicin en diversos arreglos experimentales y en diversas
reas de investigacin.
2. Materiales:
Una computadora personal (puede ser laptop) con un Gbyte de memoria RAM, una web-
cam bsica; instalacin de Matlab 7.5 o superior. Una regla de 30 cm o una referencia mtrica.
3. Introduccin.
Un instrumento puede presentar muchas caractersticas, aparte de medir, puede almacenar,
desplegar grficamente datos, entre otras funciones. La adquisicin de video asistido por una
computadora representa, por s mismo, un instrumento completo, con toda clase de tareas y con la
capacidad de escalar fcilmente su software y hardware. Por ejemplo, por medio del anlisis de
imgenes se pueden medir variables como cambios de coloracin, contornos, desplazamiento, etc.
El video se emplea en reas diversas como son la astronoma, la medicina, el desarrollo de nuevos
materiales, entre otras. Adems, gracias a su popularidad en la poblacin general, las cmaras de
video y sus imgenes muestran en el mercado diversos formatos de portabilidad y captura; e. g. la
captura de un telfono celular pequeo y relativamente barato como lo es un IPhone se basa en un
escaneo rpido (microsgundos), esta cmara contrasta con una cmara portable de tamao regular
CCD con sistema de enfriamiento destinada a capturar imgenes astronmicas de larga exposicin
(minutos hasta horas). Finalmente, las imgenes capturadas pueden ser optimizadas, analizadas,
presentadas por medio uso rutinas matemticas variadas. Por ejemplo, el anlisis de Fourier se
emplea para limpiar de ruido o comparar un conjunto de imgenes. En podemos resumir, el anlisis
matemtico de video digital representa por si solo un instrumento potente de medicin para asistir
muchos campos de investigacin.
4. Procedimiento.
A) Captura de video por medio de Matlab
Se recomienda que el instructor escriba con los alumnos el siguientes comandos de la
ventana del promt de Matlab y explique con cuidado las peculiaridades de los comandos.
1) indo=imaqhwinfo % despliega una estructura con la informacin de las cmaras
conectadas, se nombra winvideo como la cmara por defecto; se muestra la versin de
Matlab en uso; el nombre de la caja de herramientas correspondiente y su versin, en
nuestro caso Image Acquisition Toolbox, 3.0 (R2007b).
2) info = imaqhwinfo('winvideo') % Nos permite obtener informacin especfica del
dispositivo a utilizar: direccin y nombre de su controlador, etiqueta del identificador.
3) Desde modo, sabemos que podemos comunicarnos con una web-cam; por lo cual
podemos seguir procediendo
4) Por ejemplo, podemos obtener una interface grfica amigable. para escoger la cmara,
capturar y manipular imgenes. Use el comando: imaqtool, en esta interface
encontramos toda la informacin y caractersticas en el disparo, color, formato, etc. en
la imagen.
5) Se recomienda que el instructor muestre el funcionamiento de esta interface grfica.
Puede escoger algunos parmetros y obtener el video.
6) Tambin se puede capturar video desde la ventana de comandos
7) Finalmente, se muestra la captura video desde esta interface.
A continuacin se presenta un script para detectar el movimiento usando Matlab.
b) Detector de movimiento usando Matlab
Este script de Matlab realiza varias capturas de imgenes a travs de una webcam para
luego a travs de una simple resta de stas determinar si existi un cambio en la seal de entrada y
determinar si hubo o no movimiento. Al final, este movimiento es asimismo graficado.
El instructor puede copiar y pegar este escript, para explicar sus caractersticas y posibles
usos en otros instrumentos similares. El estudiante deber contestar el cuestionario para mejorar
este script

%%%%%% comienza el script de detector de movimiento
close all % cierra todas las ventanas de graficos Matlab
clc % limpia la memoria temporal en Matlab
vid = videoinput('winvideo', 1); % se determina la camara por defecto y su etiqueta de
sistema
set(vid,'TriggerRepeat',Inf); % se alistan las variables de disparo y sus parametros
vid.FrameGrabInterval = 1; % se inicializa en uno, pues Matlab no acepta el cero para
uniciar una rutina,
%pues se realciona con la etique de una matriz. Es decir, las matrices de Matlab se inican
en uno
start(vid); % se enciende la camara y se captura una imagen
try
media=[];
while(vid.FramesAcquired<=110) % se detiene el proceso despues de capturar 110
cuadros
IM = getdata(vid,2); % se crea una matriz de datos IM, donde se guarda la informacion
original
IMGray = rgb2gray(IM(:,:,1:3)); % se transforma la matriz IM en escala de grises
IMbw=im2bw(IMGray,0.5); % se transforma en blanco y negor la matriz, se
determinar el umbral del contraste
IMneg=imadjust(IMGray,[0 1],[1 0]); % ajuste negativo para la matriz de grises

% Se grafican las diferentes matrices en una sola ventana
subplot(2,3,1);imshow(IM(:,:,:,1));title('Entrada Oringina Imagen-Video')
subplot(2,3,2);imshow(IMbw);title('Video Blanco y Negro')
subplot(2,3,3);imshow(IMGray);title('Video en Escala de Grises')
subplot(2,3,4);imshow(IMneg);title('Video de la Imagen Negativa')

%*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
% se escoge un canal de color y se hacen los calculos
i1=IM(:,:,:,1);
i2=IM(:,:,:,2);
i1=rgb2gray(i1(:,:,1:3));
i2=rgb2gray(i2(:,:,1:3));
% en la variable m se guarda la diferencia entre los cuadros. el
% comando abs asegurra que siempre sea positiva la diferencia entre
% los cuadros, sin importar la direccion del desplazamiento
m=abs(double(i1)-double(i2))/256;
% se noramliza la matriz. 0 es la etiqueta para el negro,
%256 es para el blanco, entre ellos esta toda la gama de grises
subplot(2,3,5);imshow(m);title('Movimiento') % aqui se muestra la imagen relacionada
con el movimiento
sum(sum(m)); % suma todos los elementos de la matriz, filas y luego columnas
media=[media sum(sum(m))];
if sum(sum(m))>850 % esta seccion asegura los limites en pixeles donde se capturar
la imagen.
disp('Movimiento');beep
end
%*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
end
stop(vid);
catch
stop(vid);
end
figure
plot(media)% grafica la media de m normalizada
%%%% fin del escript de de detector de movimiento
La grafica del movimiento peridico, de pasar la mano en frente de la cmara se ve en la
siguiente imagen.

5. Cuestionario y tareas para el alumno.
Se recomienda al instructor que los alumnos realicen las siguientes actividades en
equipo dentro del aula o como tarea de una semana de duracin.

1) Cul es el significado del eje-x y el eje-y de la grfica obtenida, no de las imgenes de
video.
2) El paralaje puede ser un error en este sistema, explique el porqu
3) Cuntos puntos se capturaron en la grfica?, Qu alteraciones al software o al
hardware se requieren para aumentar el nmero de cuadros capturados?
4) En trminos del hardware usado Cul es el lmite la rapidez de captura?
5) Compare este movimiento con el periodo y la amplitud del movimiento de un pndulo
simple. Determine la congruencia entre estas dos tcnicas.
6) Sugiera otro mtodo para calibrar este instrumento de medicin de desplazamientos
7) Implemente el comando ginput para evaluar las distancias y desplazamientos dentro de
las imagenes; es decir encuentre una regla automtica y lineal que relacione pxeles y
metros.
8) Explique tres aplicaciones concretas donde este script sea til
9) Cunto tiempo tarda el script en ejecutarse?
10) Escriba alteraciones en el script que lo optimicen y lo hagan mas flexible al usuario.
Recuerde documentar su script
6. Referencias
1) Obligatorio para leer antes de la prctica o en su transcurso
Imagen Fundamentos II
http://omarsanchez.net/Documents/Imagen_Fundamentos_II.pdf
Revisado 10 agosto 2009
2) Libro clasico
Gonzlez, R.; Woods, R.; Eddins, S.: Digital Image Processing using Matlab. 2004.
3) Para introducir el tema de adquisicin de imgenes (bases tericas y dispositivos:
Adquision de imgenes
http://iie.fing.edu.uy/ense/asign/codif/material/transparencias/03_adquisicion.pdf
Revisado 10 agosto 2009
4) Pagina con ejemplos de muchos scripts
Motion Detection in a video, en el sitio Matlab Central
http://www.mathworks.de/matlabcentral/fileexchange/18151
Revisado 10 agosto 2009
5) Un ejemplo en concreto
Image capture using Webcam in Matlab
http://madan.wordpress.com/2007/03/23/image-capture-using-webcam-in-matlab/

También podría gustarte