Lo primero al empezar a trabajar en el proyecto era ver de qué punto se partía, sí era un proyecto nuevo desde cero, o sí por el contrario ya había una parte realizada sobre la que empezar a trabajr, y en este caso se trataba de lo segundo. El proyecto, como ya he comentado en el primer post, trata en una primera fase de comparar unos vídeos con otros basandose en el propio contenido de los vídeos para ver el parecido que hay entre ellos, y para ello se usarían vectores de característica.
Sabemos que en una imagen, un vector de característica es un conjunto de valores que describen la imagen, pudiendo provenir esos valores de distintas características asociadas a la imagen, como por ejemplo, el brillo, el contraste, el nivel de ruido, la nitidez, el cromatismo, etc. En un vídeo, lo que se tiene realmente es un conjunto de imágenes, llamadas normalmente frames o fotogramas, que al ejecutarse en secuencia simulan el movimiento, por lo que un vídeo podría quedar caracterizado mediante un conjunto de vectores de características, uno por cada una de esas imágenes que lo forman, como se observa en la siguiente figura.
Sin embargo, comparar dos vídeos considerando todos los frames, y con ello, todos los vectores de características, tendría un coste demasiado elevado. Por ejemplo, un video correspondiente a un fragmento de un partido de fútbol con una duración de tan sólo 1 minuto y 53 segundos, contiene 3405 frames, por lo que habría que procesar 3405 vectores de características. Por ello es necesario buscar otra forma de caracterizar los vídeos.
Un vídeo no es sólo una secuencia de frames, sino que también puede verse como una secuencia de escenas, siendo una escena un grupo de frames consecutivos con un gran parecido entre ellos, es decir, sus vectores de características tendrán valores muy similares. A esos grupos de frames también se les conoce como clusters, como queda representado en la siguiente figura.
Debido a ese parecido entre los frames de una escena, ésta puede quedar representada por un único frame denominado “keyframe”. Este keyframe, al igual que el resto de frames, tendrá un vector de característica asociado, pero existen distintas formas de calcularlo. Por ejemplo, se podría coger el vector de características del primer frame de la escena, o coger el del último frame, o realizar la media de los vectores de características correspondientes a los todos los frames de la escena. De esta forma se puede reducir considerablemente el número de vectores de características que caracterizan un vídeo, pasando de un vector de características por frame, a un vector de características por keyframe o por escena. Siguiendo con el ejemplo anterior, el vídeo del fragmento de partido de fútbol está compuesto por 48 escenas, entre las que se reparten los 3405 frames, lo que significa que el vídeo quedaría caracterizado con 48 vectores en lugar de con 3405, una reducción más que significativa, y que ya sí hace factible la comparación entre vídeos.
¿Pero cómo se lleva a cabo dicha comparación mediante los vectores de características? Una imagen que tenga un vector de N características se puede representar como un punto en un espacio N-dimensional, de manera que cada una de esas características es una dimensión y el valor de las características indican las coordenadas del punto. Entonces, un vídeo formado por un conjunto de vectores de N características se puede representar como un conjunto de puntos en ese espacio N-dimensional. Existe un docuemnto llamado “Bounded Coordinate System Indexing for Real-Time Video Clip Search” en el que a grandes rasgos se desprende que ese conjunto de puntos definiría también una caja N-dimensional que representaría el vídeo, por lo que para comparar dos vídeos habría que comparar las cajas que los representan.
La parte de obtener los vectores de características de un vídeo esta resualta mediante el proyecto fin de carreta de Antonio Sánchez Benavente titulado «Extracción de características en vídeos digitales», por lo que yo empezaría a trabajar en el método de comparación, pero antes es conveniente leer dicho proyecto fin de carrera para comprender como se obtienen realmente los vectores de características y en que formato se proporcionan, así como leer el docuemnto antes mencionado “Bounded Coordinate System Indexing for Real-Time Video Clip Search”.