kinectformatlab
  PRIMEROS PASOS CON KINECT
 

PRIMEROS PASOS CON KINECT

 
Una vez vistas las posibilidades que este hardware ofrece, es el momento de empezar a controlar la Kinect y de ver cómo funciona. Una forma sencilla de ver como se utilizan las funciones de la librería de Kinect es analizando y observando los ejemplos que esta incluye. A continuación se muestra el código del ejemplo llamado sample_niImage en el que se recogen tanto datos de profundidad como de imagen RGB:

%% Create context with xml file
context = mxNiCreateContext('Config/SamplesConfig.xml');
%% Initialise FIGURE
width = 640; height = 480;
% depth image
figure, h1 = imagesc(zeros(height,width,'uint16'));
% rgb image
figure, h2 = imagesc(zeros(height,width,3,'uint8'));
%  rgb+depth image
figure,h3 = imagesc(zeros(height,width,3,'uint8'));hold on;
       h4 = imagesc(zeros(height,width,
'uint16'));hold off;
%% LOOP
for k=1:30
    tic
%align Depth onto RGB
    option.adjust_view_point = true;
% Acquire RGB and Depth image
    mxNiUpdateContext(context, option);
    [rgb, depth] = mxNiImage(context);
% Update figure
    set(h1,'CData',depth);
    set(h2,
'CData',rgb);
    set(h3,
'CData',rgb);
    set(h4,
'CData',depth);
    set(h4,
'AlphaData',double(depth/50));
    drawnow;
    disp([
'itr=' sprintf('%d',k) , ' : FPS='
sprintf(
'%f',1/toc)]);
end
%% Delete the context object
mxNiDeleteContext(context);

De este conjunto de comandos se pueden deducir varias ideas que serán imprescindibles para hacer funcionar correctamente al sensor Kinect desde Matlab.

La primera idea, y más importante, es que hay que iniciar la Kinect  en un modo de operación determinado por un fichero .xml mediante el uso de la función mxNiCreateContext. Dicho modo de funcionamiento se almacena en el espacio de trabajo de Matlab como una estructura llamada en este caso context, y se mantendrá durante toda la ejecución del programa, o al menos hasta que se elimine haciendo uso de la función contraria a la anterior denominada mxNiDeleteContext.

Otro aspecto que podemos aclarar analizando dicho ejemplo de aplicación es el saber cómo se adquiere la información de las imágenes, para lo cual están los siguientes comandos:

%align Depth onto RGB
 option.adjust_view_point = true;
% Acquire RGB and Depth image
 mxNiUpdateContext(context, option);
 [rgb, depth] = mxNiImage(context);

El primero de ellos, tal y como dice el comentario, alinea la información de la imagen de profundidad con la de color, de modo que si se superponen las dos imágenes, la información de una coincidirá justo encima de la información de la otra. Esto es necesario debido a que el sensor de la imagen de profundidad y el de imagen en color no se encuentran en el mismo sitio, por lo que las imágenes se encuentran desplazadas una respecto de la otra.

A continuación se encuentra el comando mxNiUpdateContext, cuya función es actualizar todos los nodos al próximo fotograma, y como se puede ver esta incorpora la variable donde se encuentra el modo de funcionamiento (context) y la opción de alineamiento antes mencionada.

El último comando incluye la función mxNiImage, encargada de guardar la información de las imágenes RGB y profundidad en las variables del espacio de trabajo de Matlab rgb y depth respectivamente.

Una vez conocidos los comandos básicos y su modo de empleo, se puede empezar a realizar pequeños programas para familiarizarse con la Kinect y su programación desde Matlab.

 

 
 
 
 
  4060 visitantes (8810 clics a subpáginas)  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis