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!
fuente
Respuestas:
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!
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!
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.
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).
fuente
¿Qué tal este código?
https://www.youtube.com/watch?v=MKUWnz_obqQ
https://github.com/niitsuma/detect_laser_pointer
En este código, los colores HSV se comparan usando la prueba t cuadrada de hotelling
fuente