Está en la página 1de 11

Práctica 08.

- Adquisición de imágenes con Kinect


y GUI de Matlab.

Francisco Javier Díaz Galindo


José Ángel Ortiz León
Índice general

1. Introducción 2

2. Marco Teórico 3
2.1. Convertidor Analógico-digital (A/D) . . . . . . . . . . . . . . . . 3
2.2. Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3. Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4. Matlab y Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3. Desarrollo y resultados 6

4. Conclusiones 8

Bibliografía 9

Lista de Figuras 10

1
Capítulo 1

Introducción

El Image Adquisition Toolbox de Matlab te permite adquirir imágenes y vi-


deo de cámaras directamente en Matlab y Simulink. Puedes detectar el hardware
automáticamente y configurar sus propiedades. Flujos de trabajo avanzados te
permiten controlar el disparo de adquisición al procesar in-the-loop, realizar la
adquisición de fondo, y sincronizar el muestreo a través de varios dispositivos
multimodales. Con soporte para múltiples proveedores de hardware y estánda-
res de la industria, puedes utilizar los dispositivos de imágenes que van desde
cámaras web de bajo costo hasta dispositivos científicos e industriales de alta
calidad que cumplen con los requisitos de baja iluminación y de alta velocidad.

2
Capítulo 2

Marco Teórico

En este capítulo se presenta información sobre la teoría utilizada para el


desarrollo de esta práctica.

2.1. Convertidor Analógico-digital (A/D)


Un convertidor analógico-digital, también conocido como codificador es un
dispositivo que convierte una señas analógica en una señal digital, usualmente
una señal codificada numéricamente. Dicho convertidor se necesita como una in-
terfaz entre un componente analógico y uno digital. Con frecuencia un circuito
de muestre y retención es una parte integral de un convertidor A/D disponible
comercialmente. La conversión de una señal analógica en la señal digital corres-
pondiente (número binario) es una aproximación, ya que la señal analógica
puede adoptar un número infinito de valores, mientras la señal digital
puede formar un conjunto de dígitos finitos. Este proceso de aproximación
se pueden formar mediante un conjunto finito de dígitos está limitada. [1]

2.2. Matlab
MATLAB es un acrónimo de Matrix Laboratory. Actualmente es uno de
los entornos de programación más usados en el desarrollo de aplicaciones de
ingenieria e investigación.
Su lenguaje de programación esta basado en C y C++. Además cuenta con
un entorno gráfico amigable, visualización de datos, funciones, gráficas 2D y 3D,
procesamiento de imágenes, video, computación numérica, etc. Particularmente,
es una herramienta muy poderosa para realizar aplicaciones en mecatrónica,
robótica, control y automatización.[2]

3
Figura 2.1: Logo de Matlab

2.3. Kinect
Kinect para Xbox 360, o simplemente Kinect es un controlador, desarrollado
por Microsoft para la videoconsola Xbox 360. Kinect permite a los usuarios
controlar e interactuar con la consola sin necesidad de tener contacto físico
con un controlador de videojuegos tradicional, mediante una interfaz natural
de usuario que reconoce gestos, comandos de voz, y objetos e imágenes. Este
sensor, el Kinect, consiste en una barra conectada a una pequeña base con un
pivote motorizado y diseñado para posicionarse longitudinalmente por encima o
por debajo de la pantalla de video. El dispositivo cuenta con una cámara RGB,
un sensor de profundidad y un arreglo de micrófonos, los cuales proporcionan
captura de movimiento 3D de cuerpo completo.

Figura 2.2: Partes del Kinect.

4
2.4. Matlab y Kinect
Haciendo uso del Image Adquisition Toolbox de Matlab se pueden adquirir
datos del Kinect. Y además se pueden realizar tareas como: activar la cáma-
ra RGB del sensor, la cámara de profundidad, y el reconocimiento de cuerpo
completo, dibujando un esqueleto (de color rojo o verde) en la imagen mostrada.

Figura 2.3: Captura de imagen con Kinect.

La figura 2,3 muestra en la parte izquierda: en la esquina superior, se observa


una imagen de la cámara de profundidad. La cual determina la distancia a la
que se encuentra un objeto del sensor, asingnando un color verde para el más
cercano y negro para el más lejano. La parte central corresponde a una imagen
tomada con el sensor infrarrojo y en la parte inferior se puede apreciar la imagen
original tomada con la cámara RGB. Con respecto a la parte derecha: en la
esquina superior es una imagen que combina los datos obtenidos con la cámara
de profundidad y la cámara RGB. En el centro el sensor reconoce el cuerpo
completo y le asigna un color. Y finalmente en la parte inferior se observa el
reconocimiento de cuerpo completo pero únicamente un esqueleto, formado por
líneas y puntos, y lo muestra en un plano tridimensional.

5
Capítulo 3

Desarrollo y resultados

Para la siguiente práctica se desarrolló una interfaz gráfica de usuario (GUI)


en Matlab. Con esta GUI se controla la adquisición de video en tiempo real
usando el sensor Kinect. Además se puede congelar la imagen tomada, al alma-
cenarla cuadro por cuadro.

Figura 3.1: Ejecución de la GUI.

6
 Listing 3.1: Fragmento de código fuente en Matlab. 
1
2 f u n c t i o n miCamaraGUI_OpeningFcn ( hObject , e v e n t d a t a , h a n d l e s , . . .
3 varargin )
4
5 h a n d l e s . output = hObject ;
6
7 handles . video = videoinput ( ’ kinect ’ , 1 ) ;
8 s e t ( h a n d l e s . v i d e o , ’ TimerPeriod ’ , 0 . 0 5 , . . .
9 ’ TimerFcn ’ , [ ’ i f (~ isempty ( gco ) ) , ’ . . .
10 ’ h a n d l e s=g u i d a t a ( g c f ) ; ’ . . .
11 ’ image ( g e t s n a p s h o t ( h a n d l e s . v i d e o ) ) ; ’ . . .
12 ’ s e t ( h a n d l e s . cameraAxes , ’ ’ y t i c k ’ ’ , [ ] , ’ ’ x t i c k ’ ’ , [ ] ) , ’ . . .
13 ’ e l s e ␣ ’ . . .
14 ’ d e l e t e ( i m a q f i n d ) ; ’ . . .
15 ’ end ’ ] ) ;
16 t r i g g e r c o n f i g ( h a n d l e s . v i d e o , ’ manual ’ ) ;
17 h a n d l e s . v i d e o . FramesPerTrigger = I n f ;
18
19 g u i d a t a ( hObject , h a n d l e s ) ;
20 u i w a i t ( h a n d l e s . myCameraGUI ) ;
21
22 f u n c t i o n startStopCamera_Callback ( hObject , e v e n t d a t a , h a n d l e s )
23
24 i f strcmp ( g e t ( h a n d l e s . startStopCamera , ’ S t r i n g ’ ) , ’ I n i c i a r C á m a r a ’ )
25
26 s e t ( h a n d l e s . startStopCamera , ’ S t r i n g ’ , ’ DetenerCámara ’ )
27 s t a r t ( handles . video )
28 s e t ( h a n d l e s . s t a r t A c q u i s i t i o n , ’ Enable ’ , ’ on ’ ) ;
29 s e t ( h a n d l e s . captureImage , ’ Enable ’ , ’ on ’ ) ;
30
31 e l s e
32 s e t ( h a n d l e s . startStopCamera , ’ S t r i n g ’ , ’ I n i c i a r C á m a r a ’ )
33 stop ( handles . video )
34 s e t ( h a n d l e s . s t a r t A c q u i s i t i o n , ’ Enable ’ , ’ o f f ’ ) ;
35 s e t ( h a n d l e s . captureImage , ’ Enable ’ , ’ o f f ’ ) ;
36 end
 

7
Capítulo 4

Conclusiones

Con el Image Acquisition Toolbox se obtuvieron datos del sensor Kinect.


Se creó una GUI con la herramienta guide de Matlab. Y con esta aplicación se
controló el sensor Kinect, y se desplegó la imagen en tiempo real adquirida por
la cámara RGB.

8
Bibliografía

[1] Ogata, Katsuhiko (1996). Sistemas de Control en Tiempo discreto. 2da.


Edición. Editorial Prentice Hall Hispanoamericana S. A.

[2] Reyes Cortés, F.; Cid Monjaraz, J. & Vargas Soto, E. (2013). Mecatrónica,
Control y Automatización. Alfaomega: México.
[3] Reyes Cortés, F. (2012). MATLAB Aplicado a Robótica y Mecatrónica. Al-
faomega: México.

9
Índice de figuras

2.1. Logo de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4


2.2. Partes del Kinect. . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3. Captura de imagen con Kinect. . . . . . . . . . . . . . . . . . . . 5

3.1. Ejecución de la GUI. . . . . . . . . . . . . . . . . . . . . . . . . . 6

10

También podría gustarte