Resultados 1 al 11 de 11

Hilo: Seguir el movimiento de un objeto (vídeo)

  1. #1
    Registro
    Apr 2010
    Ubicación
    colombia
    Posts
    963
    Nivel
    Graduado en Física
    Artículos de blog
    5
    ¡Gracias!
    261 (249 msgs.)

    Question Seguir el movimiento de un objeto (vídeo)

    Hola, resulta que tengo que hacer un proyecto de mecanica que consiste en una pelota atada a un resorte oscilando verticalmente.

    La pelota (negra en un fondo blanco) es filmada con una camara de alta velocidad, lo que necesito es hacer una gráfica de altura vs tiempo con matlab preferiblemente, pero no tengo mucha experiencia usando estos programas y la verdad no he encontrado nada.

    Si me pudiesen ayudar con algún link o alguna indicación se los agradecería.

  2. #2
    Registro
    Sep 2012
    Ubicación
    Madrid
    Posts
    1 036
    Nivel
    Grado en Física
    ¡Gracias!
    283 (266 msgs.)

    Predeterminado Re: Seguir el movimiento de un objeto (vídeo)

    Hace un tiempo encontré justo algo así, pero lo perdí. Prueba con esta función que he encontrado por internet:

    close all;clear all;clc;

    % primero se captura un stream de video usando videoinput, con argumento
    %de winvideo, numero de dispositivo y formato de la camara, si no sabes usa la
    %funcion imaqtool para averiguarlo es YUY o RGB
    vid=videoinput('winvideo',1,'YUY2_160x120');
    %640x480 160x120
    % Se configura las opciones de adquision de video
    set(vid, 'FramesPerTrigger', Inf);
    set(vid, 'ReturnedColorspace', 'rgb')
    vid.FrameGrabInterval = 5;
    %framegrabinterval significa que tomara cada 5 frame del stream de video adquirida
    %con start(vid) se activa la adquisicion, pero todavia se toma la primera foto
    start(vid)

    % creamos un bucle que puede ser while always o while true en este caso
    %y como mi compu es una netbook trucha(trucha=cagada=lenta=barata)
    %hago que despues de 100 frames adquiridos se salga del bucle para evitar colgadas
    while(vid.FramesAcquired<=100)

    % se toma una snapshot del stream y se la almacena en data para trabajar mas
    %facil
    data = getsnapshot(vid);

    % ahora vamos a reconocer el color rojo en tiempo real
    % tenemos que extraer el color rojo
    % de la imagen en escala de grises de la imagen adquirida en data
    diff_im = imsubtract(data(:,:,1), rgb2gray(data));
    %imsubstract sirve para sacar algun valor constante de una imagen, usamos como
    %argumento el array de data y la funcion rgb2gray de data
    %se usa medfilt2 para filtrar la senial del ruido
    diff_im = medfilt2(diff_im, [3 3]);
    % Convertir la imagen en escala de grises a una imagen binaria.
    diff_im = im2bw(diff_im,0.18);

    % para determinar el tamanio a reconocer se usa bwareopen para descartar
    %imagen de rojo de menos de 300 pixels
    diff_im = bwareaopen(diff_im,300);

    % Etiquetamos los elementos conectados en la imagen
    bw = bwlabel(diff_im, 8);

    % Ahora hacemos el analisis del "objeto" detectado(que solo son pixels rojos)
    %agrupados de mas de 300
    % onfiguramos la region etiquetada
    stats = regionprops(bw, 'BoundingBox', 'Centroid');

    % mostramos la imagen
    imshow(data)

    hold on

    %este es un bucle para encerrar el objeto rojo en un rectangulp y una cruz en el
    %centroide(solo es programacion basica de matlab)
    for object = 1:length(stats)
    bb = stats(object).BoundingBox;
    bc = stats(object).Centroid;
    rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
    plot(bc(1),bc(2), '-m+')
    a=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))), ' Y: ', num2str(round(bc(2)))));
    set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow');
    end

    hold off
    end
    % aqui terminan los 2 bucles

    % detenemos la captura
    stop(vid);


    %FLUSHDATA remueve la imagen del motor de adquisicion y la almacena en el buffer
    flushdata(vid);

    % borramos todo(como en cualquier programa)
    clear all

    Saludos!
    'Como físico, no temo a la muerte, temo al tiempo.'
    'Bene curris, sed extra vium.'
    'Per aspera ad astra.'

  3. El siguiente usuario da las gracias a gdonoso94 por este mensaje tan útil:

    javier m (10/04/2013)

  4. #3
    Registro
    Apr 2010
    Ubicación
    colombia
    Posts
    963
    Nivel
    Graduado en Física
    Artículos de blog
    5
    ¡Gracias!
    261 (249 msgs.)

    Predeterminado Re: Seguir el movimiento de un objeto (vídeo)

    Gracias, puse a correr ese programa pero lo que hace es que se pone a filmar con la camara del computador y sigue a los objetos de color rojo, cuando guarda lo que filma queda un archivo .fig que no entiendo qué es, se supone que debería ser un vídeo pero parece como una imagen, y parece que solo se abre con matlab.

    La cuestión es que ya ye tengo el vídeo, no quiero que filme, quiero que use un vídeo que ya tengo guardado.

    Además, no veo en qué parte del programa se da la orden de que siga al rojo, para así cambiar esa parte y hacer que siga al negro.

  5. #4
    Registro
    Sep 2012
    Ubicación
    Madrid
    Posts
    1 036
    Nivel
    Grado en Física
    ¡Gracias!
    283 (266 msgs.)

    Predeterminado Re: Seguir el movimiento de un objeto (vídeo)

    Creo que es justo esta línea, pero no tengo ni idea de la función utilizada ni de como cambiarla:
    diff_im = imsubtract(data(:,:,1), rgb2gray(data));
    En un principio el negro en RGB el negro es el #0000, así que quizá cambiando la línea por:

    diff_im = imsubtract(data(0,0,0), rgb2gray(data));

    Reconozca el negro.

    Un saludo!
    'Como físico, no temo a la muerte, temo al tiempo.'
    'Bene curris, sed extra vium.'
    'Per aspera ad astra.'

  6. #5
    Registro
    Apr 2010
    Ubicación
    colombia
    Posts
    963
    Nivel
    Graduado en Física
    Artículos de blog
    5
    ¡Gracias!
    261 (249 msgs.)

    Predeterminado Re: Seguir el movimiento de un objeto (vídeo)

    cambié eso por lo que pones, por (1,:,:) y por otras combinaciones, pero el programa no corre :/
    Última edición por javier m; 10/04/2013 a las 21:48:59.

  7. #6
    Registro
    Sep 2012
    Ubicación
    Madrid
    Posts
    1 036
    Nivel
    Grado en Física
    ¡Gracias!
    283 (266 msgs.)

    Predeterminado Re: Seguir el movimiento de un objeto (vídeo)

    Pues entonces lo siento por no poder ayudarte tío... Prueba metiendo (:,:, quizá haga algo cogiendo toda la gama de colores de todos... (si eso es la gama de colores, claro).
    'Como físico, no temo a la muerte, temo al tiempo.'
    'Bene curris, sed extra vium.'
    'Per aspera ad astra.'

  8. #7
    Registro
    Apr 2010
    Ubicación
    colombia
    Posts
    963
    Nivel
    Graduado en Física
    Artículos de blog
    5
    ¡Gracias!
    261 (249 msgs.)

    Predeterminado Re: Seguir el movimiento de un objeto (vídeo)

    Ese fue el primero que probé después del tuyo

    Bueno no importa, gracias de todos modos, creo que probaré con otro programa.

  9. #8
    Registro
    Apr 2013
    Ubicación
    Montevideo, Uruguay
    Posts
    11
    Nivel
    Licenciado en Física
    ¡Gracias!
    0 (0 msgs.)

    Predeterminado Re: Seguir el movimiento de un objeto (vídeo)

    Hola, podes probar con un software gratuito que se llama Tracker, analiza videos para hacer justamente lo que pedis, y te permite exportar la tabla de posicion en funcion del tiempo (entre otras cosas) como un txt, que despues podes abrir con Matlab. La pagina de descarga es
    http://www.dgeo.udec.cl/~andres/Tracker/
    es bastante facil de usar, y si tenes problemas en youtube podes encontrar varios tutoriales

  10. #9
    Registro
    Apr 2010
    Ubicación
    colombia
    Posts
    963
    Nivel
    Graduado en Física
    Artículos de blog
    5
    ¡Gracias!
    261 (249 msgs.)

    Predeterminado Re: Seguir el movimiento de un objeto (vídeo)

    Ese era el que estaba usando , pero como son 22000 cuadros los que tenía que marcar (el autotracker, como que no sirve) entonces le pedí a un profesor que me ayudara y me lo hizo en matlab.

    Ahorita mismo estoy trabajando en eso de afan porque es para hoy xD

  11. #10
    Registro
    Sep 2011
    Posts
    6 997
    Nivel
    Licenciado en Física
    Artículos de blog
    7
    ¡Gracias!
    3 080 (2 704 msgs.)

    Predeterminado Re: Seguir el movimiento de un objeto (vídeo)

    De todos modos, Tracker te permite elegir cada cuántos cuadros quieres marcar. En la ayuda (http://www.cabrillo.edu/~dbrown/trac.../frameset.html) lo tienes en el punto 2:
    "In the clip settings dialog, set the Start frame and End frame to define the range you wish to analyze. You can drag the player's slider to scan through the video and quickly find the frames of interest. If the video contains too many frames to analyze (more than 20 or so can become tedious), increase the Step size to automatically skip frames."
    A mi amigo, a quien todo debo.

  12. #11
    Registro
    Apr 2010
    Ubicación
    colombia
    Posts
    963
    Nivel
    Graduado en Física
    Artículos de blog
    5
    ¡Gracias!
    261 (249 msgs.)

    Predeterminado Re: Seguir el movimiento de un objeto (vídeo)

    ah caray, gracias.
    Para la proxima.

Información del hilo

Usuarios viendo este hilo

Ahora hay 1 usuarios viendo este hilo. (0 miembros y 1 visitantes)

Hilos similares

  1. Primaria Impulso de un objeto en movimiento, duda.
    Por sinnicksinnick en foro Mecánica newtoniana
    Respuestas: 6
    Último mensaje: 17/04/2011, 19:45:09
  2. Otras carreras movimiento de un objeto
    Por student en foro Mecánica newtoniana
    Respuestas: 0
    Último mensaje: 16/02/2010, 13:20:03
  3. Respuestas: 38
    Último mensaje: 16/09/2009, 13:07:02
  4. Secundaria No se como seguir...
    Por isedlopez en foro Mecánica newtoniana
    Respuestas: 1
    Último mensaje: 23/04/2009, 03:29:44

Permisos de publicación

  • No puedes crear hilos
  • No puedes responder
  • No puedes adjuntar archivos
  • No puedes editar tus mensajes
  •