¿Versión GUI de OpenCV para la creación de prototipos de detección de características (SIFT, etc.) antes del desarrollo real del proyecto?

StackOverflow https://stackoverflow.com/questions/4842864

Pregunta

Tuve una idea por la que necesito poder reconocer ciertos objetos o modelos de una película digital tridimensional renderizada.

Después de una investigación limitada, ahora sé que lo que necesito se llama detección de características en el campo de la visión por computadora.

Entonces, lo que quiero hacer es:

  1. crear algunas capturas de pantalla de un determinado personaje de la película (por ejemplo, anverso / reverso / lado izquierdo / lado derecho)
  2. reproducir la película
  3. mientras reproduce la película, cree continuamente nuevas capturas de pantalla de la película
  4. para cada captura de pantalla, realice la detección de características (¿SIFT ?, ¿con openCV?) para ver si alguna de las apariencias de nuestro personaje está allí (aún deben reconocerse si el personaje está más lejos y, por lo tanto, parece más pequeño, o si el personaje es por ejemplo, acostado).
  5. dar un aviso cada vez que se encuentre el personaje

Esto sería posible con OpenCV, ¿verdad?

El "problema" es que tendría que aprender C ++ o Python para desarrollar esta aplicación. Esto no es un problema si mi película y capturas de pantalla son aplicables a lo que quiero hacer.

Entonces, me gustaría probar primero mis capturas de pantalla de la película. ¿Existe una versión GUI de OpenCV en la que pueda ingresar mis datos de prueba y luego ejecutar sus algoritmos de detección de características manualmente como un medio de creación de prototipos?

Se agradece cualquier comentario. Gracias.

¿Fue útil?

Solución

No hay una GUI de OpenCV capaz de hacer lo que quiere. Podrá usar OpenCV para algunos aspectos de su problema, pero no hay una solución lista para usted esperando.

Si bien definitivamente es posible resolver su problema, la curva de aprendizaje para este problema es bastante larga. Si eres un profesional, una alternativa para aprenderlo tú mismo sería contratar a un experto para que lo haga por ti. Le costaría dinero, pero le ahorraría tiempo.

<×EDIT

En lo que respecta a la coincidencia de plantillas, normalmente no la usaría para resolver un problema de este tipo porque lo que está buscando es cambiar la apariencia y la forma. Realmente no hay "parámetros dinámicos para configurar". Lo más parecido que podría intentar es tener una colección de plantillas masiva que trataría de cubrir las formas esperadas que puede adoptar su objetivo. Pero difícilmente sería una solución elegante. Además, no escalaría.

A continuación, a su punto sobre el reconocimiento facial. Esto está relacionado, pero la mayoría de las aplicaciones de reconocimiento facial se ocupan de un entorno controlado: iluminación, distancia, pose, ángulo, etc. Fuera de ese entorno controlado, la eficacia de la detección de rostros disminuye significativamente. Si está detectando objetos en una película, su entorno no está realmente controlado.

Es posible que desee probar primero un problema más simple de detectar con precisión dónde están los personajes, sin determinar quiénes son (videovigilancia, esencialmente). Si bien puede parecer simple, encontrará que en realidad no es trivial para escenas arbitrarias. El resultado de resolver ese problema puede ser útil para identificar a los personajes.

Otros consejos

Bueno, al usar OpenCV podrías tomar un fotograma de un archivo de video y hacer cualquier cálculo sobre él.

Puede utilizar varios métodos diferentes para detectar un personaje en esa imagen, pero no es tan fácil tenerlo tan flexible, por lo que incluso puede obtener a esa persona si está tirada en el piso, por ejemplo, si solo ingresó imágenes de referencia ese personaje de pie.

Básicamente, podría intentar extraer todas las características importantes de su conjunto de imágenes de referencia y tener un algoritmo de aprendizaje (en su caso supervisado) que obtenga un buen vector de características de ese carácter para su clasificación.

Luego, debe escribir su código que reproduce el video y que toma un fotograma de video, digamos cada 500ms (u otro como desee), obtiene una segmentación del objeto que sería ese personaje y lo compara con la referencia valores que obtiene de su algoritmo de aprendizaje. Si hay una coincidencia, su código puede gritar "¡Yehaaawww!" o hacer otras cosas ...

Pero todo esto depende de cuán flexible quieras que sea. También puede probar una coincidencia de plantilla o una correlación cruzada que básicamente desplaza las imágenes de referencia sobre el marco y verifica qué tan iguales son ambas partes. Pero, desafortunadamente, esto es muy sensible a la rotación, las deformaciones u otros ruidos ... por lo que no atraparías a esa persona si, por ejemplo, está acostada. Y dudo que puedas hacer todos esos cálculos en tiempo real ...

Básicamente: Sí OpenCV es bueno para sus tareas de procesamiento de imágenes / visión por computadora. Pero ofrece muchos métodos y formas y necesitarías encontrar una forma que funcione para tus imágenes ... aunque no es una tarea trivial ...

Espero que te ayude ...

Hay Find-Object de Mathieu Labbé .Fue muy útil para mí comenzar a comprender los descriptores, ya que puede cambiarlos mientras se ejecuta el video para ver qué sucede.

Probablemente sea demasiado tarde, pero podría ayudar a otra persona a buscar una solución.

¿Ha intentado ver algunos de los trabajos del grupo de geometría visual de Oxford?

Su sistema de Video Google describe en gran medida loque desee, detección de instancias.

Su trabajo en Nombrar personas en programas de televisión también es bastante relevante.Se incluye una tubería de detección de rostros y características faciales que se puede ejecutar desde Matlab.¿Está familiarizado con Matlab?

¿Ha probado marcos de visión por computadora como Cassandra ?Allí puede hacerlo exactamente con solo unos clics del mouse.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top