Cómo usar la cámara de un teléfono Android para detectar objetos en movimiento y encontrar la distancia entre esos objetos y el usuario

En primer lugar, estimar la distancia del objeto usando una cámara monocular no es práctico, excepto que la cámara tiene un sensor de profundidad adicional, o se coloca estacionaria (altura y ángulo fijos, geometría predefinida), lo cual no es su intención.

Supongamos que el teléfono Android que está utilizando tiene una cámara estéreo, puede medir fácilmente la distancia del objeto mediante la triangulación básica. Los parámetros necesarios para este método son la línea base (distancia entre dos cámaras), la distancia focal de la cámara y las coordenadas del objeto en ambas cámaras.

En la tarea de detección, básicamente necesita localizar el objeto de interés en un marco de imagen.

– Usando la cámara, detecta objetos móviles y no móviles.

¿Qué quieres detectar? ¿una cara? un objeto arbitrario?
Si desea detectar caras, use el clasificador Haar. Si quieres lo último, hay varias formas. Para la inicialización, puede:

  • extraer características del objeto que desea detectar con uno de los descriptores de características incorporados en OpenCV como Histograma de gradientes orientados (HOG), entrenarlo con SVM y cargarlo más tarde, o
  • crea el límite del objeto manualmente.

Como ya tiene la posición del objeto en el primer cuadro, le sugiero que rastree el objeto en el resto del cuadro con flujo óptico o filtro de partículas para reducir la carga de procesamiento (la detección es generalmente más costosa que el seguimiento). Si no se utiliza el rastreador, también puede reducir la frecuencia del detector para que sea inferior a la frecuencia de actualización de su cámara. El inconveniente de usar únicamente el rastreador es que es probable que el límite del rastreador se aleje de la posición de verdad del terreno del objeto, por lo que es posible que deba llamarse nuevamente al detector una vez que se produzca dicho error. Un marco como Tracking-Learning-Detection admite este tipo de tarea.

Una vez que se conocen las coordenadas x e y del objeto, puede implementar la triangulación para encontrar z (la distancia desde el centro de la línea de base de la cámara al objeto).

Para las herramientas, OpenCV es, con mucho, la mejor opción para Python y C ++. Como está trabajando en un dispositivo móvil cuyos recursos de procesamiento son más limitados, C ++ es un camino a seguir porque es más rápido y es compatible de forma nativa con OpenCV.

Sobre lo que debe estudiar, francamente no necesita conocer los documentos académicos detrás de los algoritmos mencionados anteriormente, ya que OpenCV ya proporciona la mayoría de ellos. Le sugiero que aprenda de libros prácticos, como:

  • Aprendizaje de OpenCV: Visión por computadora con la biblioteca de OpenCV: Gary Bradski, Adrian Kaehler
  • Visión por computadora: algoritmos y aplicación

Aunque diría que es necesario un conocimiento básico del procesamiento de imágenes, detección de objetos y seguimiento de objetos, en caso de que desee implementar el algoritmo usted mismo. Para el trabajo relacionado con la estimación de distancia, aquí hay una buena:

  • Algoritmo de estimación de distancia para imágenes de pares estéreo

More Interesting

¿Qué tan bien se necesita conocer la codificación para seguir una carrera en inteligencia artificial y trabajar en empresas como Google y Tesla?

¿Cuáles son algunos algoritmos de aprendizaje automático de los que siempre debe tener una sólida comprensión y por qué?

¿Por qué el aprendizaje profundo funciona tan bien en el mundo real?

¿Cómo hacen empresas como Microsoft para hacer inteligencia artificial, y se crea a partir de software prefabricado como Visual Studio u otra cosa?

¿Cuáles son las empresas que cotizan en bolsa que estudian y desarrollan inteligencia artificial, y qué tan rentables serán en 1-2 años?

¿Qué es la teoría del refuerzo?

¿Qué algoritmos de aprendizaje automático se pueden considerar entre los mejores?

¿Es necesario que un tipo de aprendizaje automático conozca todo tipo de modelos y algoritmos de aprendizaje?

¿Cuáles son algunas aplicaciones de teléfonos inteligentes que funcionan con algoritmos basados ​​en IA?

¿Hay alguna evidencia de que la Singularidad Tecnológica ha comenzado a surgir?

¿Alguien está utilizando con éxito las redes neuronales con el fin de crear mercados electrónicos?

Cómo hacer que las computadoras entiendan un párrafo de texto, usando Machine Learning

¿Cuál sería la forma más rápida y fácil de hacer una API de reconocimiento de oraciones utilizando una red neuronal?

¿Qué es el "aprendizaje de refuerzo disperso"?

¿Cuál es el alcance de la inteligencia artificial en el campo de la astronomía y la astrofísica?