iPhone iOS UIImage ¿cómo detectar un punto de "puntero láser" en una alimentación de cámara?

9

Tengo un robot de juguete rastreado y lo controlo con un iPhone. El robot emite una transmisión de cámara en vivo de un tamaño de fotograma conocido y lo estoy mostrando en UIImage.

Agregué un puntero láser al robot y lo arreglé junto al eje del robot. Estoy tratando de detectar el punto del puntero láser en la imagen y así tratar de calcular la proximidad del objeto. Si el punto láser está lejos del centro, sé que el robot está pegado a la pared y necesita retroceder.

¿Cómo puedo detectar un punto de píxeles blancos y rojos brillantes en una pantalla? Una solución sería muestrear el color de los píxeles dentro de un cierto radio del centro y detectar un color brillante de una gota. ¿Alguien puede sugerir un algoritmo para esta actividad?

Otro enfoque sería realizar un seguimiento de la posición promedio del punto en los últimos fotogramas, reduciendo así el radio estimado. Si no hay un punto dentro de una región predefinida, la región de búsqueda puede expandirse.

Finalmente, quiero poder enseñarle al robot a detectar la alfombra a su alrededor. La alfombra refleja un puntero láser de cierta manera, y quiero entender cuántos cuadros alrededor del robot tienen propiedades similares. Si sé dónde está el puntero láser en una pantalla, puedo recortar un pequeño rectángulo de esa imagen y compararlos entre sí. ¿Existe una manera eficiente de comparar varias imágenes pequeñas entre sí para comprender si sus siluetas coinciden?

Noté que el láser se refleja en las superficies brillantes, y la dirección de esta reflexión puede decirme algo sobre la orientación de la superficie en el espacio, de acuerdo con las leyes de refracción.

¡Gracias!

Puntero láser cerca

Puntero láser 1

Alex Stone
fuente
1
¿Puedes encender y apagar el puntero láser en un patrón? Al igual que un cuadro está apagado, el siguiente está encendido, y restas los cuadros siguientes para que sea muy obvio.
endolito
Esa es una muy buena idea! Pero no tengo control sobre el puntero láser, está activado o desactivado.
Alex Stone
@AlexStone Estoy tratando de lograr algo similar, la única diferencia es que estoy tratando de detectar la luz láser en la pupila del ojo. ¿Me pueden ayudar con el código ios o cualquier código de muestra que demandaron con opencv para rastrear el rayo láser? Agradezco su ayuda de antemano, gracias AJ.
AmJa

Respuestas:

10

OpenCV es compilable para iOS. Si bien puede no ser el más eficiente, le ofrece la opción de portar el algoritmo. He hecho un problema similar de seguimiento de marcadores usando el algoritmo ConDensation. Busque el seguimiento de marcadores con OpenCV. Es un área de investigación MUY grande y el algoritmo exacto que desea depende completamente de su aplicación. Si recuerdo correctamente, hay alrededor de 3000 técnicas de procesamiento de imágenes informadas: ¡elegir una buena es un verdadero arte!

Una solución sería muestrear el color de los píxeles dentro de un cierto radio del centro y detectar un color brillante de una gota. ¿Alguien puede sugerir un algoritmo para esta actividad?

Por cierto, esta es la idea básica detrás de lo que se llama un filtro de partículas (del cual la condensación es un método). ¡Bien hecho, descubriste la idea básica por ti mismo!

Otro enfoque sería realizar un seguimiento de la posición promedio del punto en los últimos fotogramas, reduciendo así el radio estimado. Si no hay un punto dentro de una región predefinida, la región de búsqueda puede expandirse.

Esto se llama persistencia de estado y se puede modelar de varias maneras. El algoritmo de condensación utiliza un enfoque estocástico que no es diferente a un filtro de Kalman antiguo simple.

¿Existe una manera eficiente de comparar varias imágenes pequeñas entre sí para comprender si sus siluetas coinciden?

Este es un poco más difícil. Podría intentar la coincidencia de plantillas, pero no sé qué tan bien funcionará en iOS (cálculo muy pesado y la cámara iOS no es adecuada para ello).

Paul de Lange
fuente
¡Paul, gracias por una respuesta increíblemente detallada! Obtuve el marco de OpenCV y buscaré ejemplos de proyectos que lo usen.
Alex Stone
Hola, Paul: ¿Tienes alguna idea sobre la aplicación de muestra para la detección láser a través de una cámara iOS con openCV?
AmJa