Hay una serie de videos que estoy buscando procesar de diferentes videojuegos para detectar varios "estados" en ellos.
El primer juego que estoy abordando es cualquier edición de Super Street Fighter 4 .
En él, me gustaría detectar cuándo aparece la pantalla del personaje "vs". Aquí hay un ejemplo de un cuadro del video:
(tomado de la marca de ~ 10s de este video )
Si pudiera detectar el "vs", sería capaz de detectar que el cuadro de video es de hecho la pantalla "vs", lo que me permitiría buscar otra información (por ahora, digamos que lo usaré para detectar la marca de tiempo en el video donde el partido está por comenzar).
Dicho esto, esto es lo que se puede suponer acerca de los cuadros de los videos que voy a procesar (este no es el único video, hay miles, si no decenas o cientos de miles de videos, sino el problema de la escala en el procesamiento que muchos videos es un dominio completamente diferente):
- Preferiría (pero no es necesario) procesar la imagen con la resolución más baja posible con resultados confiables (resoluciones más bajas = tiempo de procesamiento más rápido). La imagen de arriba es de 480 x 270 píxeles (tomada de un video de YouTube con un
fmt
18 ) pero pueden venir en diferentes tamaños (obtuve videos de YouTube confmt
18 pero con dimensiones de 640 x 360 píxeles). - La mayoría de los videos serán de alimentación directa
- La mayoría de los videos tendrán una relación de aspecto de 16: 9
- El fondo rojizo estará animado, pero generalmente estará dentro de ese color rojo anaranjado (es llamas)
- A veces habrá una insignia que se desvanece dentro y fuera de la parte inferior de la "vs" para indicar una versión (que será importante, pero no en este momento), que podría ofuscar la "vs", así:
(tomado de la marca ~ 3s de este video ; también tenga en cuenta que lo anterior es una resolución de 640 x 360 píxeles)
- El tamaño y la posición del "vs" será más o menos el mismo (no lo he verificado aún, pero sé que no se mueve) en proporción a otros videos de alimentación directa
- Los personajes serán elegidos de un grupo de más de 30 en cada lado (en otras palabras, esas áreas del marco variarán)
- Los videos generalmente durarán entre dos y cuatro minutos, con entre 4,000 y 6,00 cuadros. Sin embargo, puede haber videos más largos (quizás dos horas) que tienen varios otros juegos y acción en vivo. Estos videos no son tan importantes, pero si una solución me dice dónde aparece un determinado juego en el video general más grande, genial
- La resolución nativa de las capturas es 720p, por lo que se puede tomar una imagen de referencia del "vs" en lo que se consideraría un tamaño "nativo".
En última instancia, estoy buscando codificar esta canalización en .NET, pero eso no es muy importante, la prueba de concepto es más importante aquí, así como una comprensión de las técnicas involucradas para poder traducirla y optimizarla para .NET así como para otros videos de otros juegos del mismo género (si puedo elegir los discriminadores significativos y videos de, por ejemplo, Ultimate Marvel vs. Capcom 3 , Street Fighter x Tekken , BlazBlue: Continuum Shift , etc.).
También estoy sumergiendo mis pies en Mathematica y tengo la versión casera 8.0, por lo que una prueba de conceptos en ese entorno es más que bienvenida.