Reconocimiento de dígitos en el microcontrolador

Hola giktayms

UPD: Hay una demostración en video .

Como su nombre lo indica, este artículo se centrará en el reconocimiento de números en el microcontrolador. Quiero hacer una reserva de inmediato que el código fuente no se dará en este artículo, se considerará la tecnología o el algoritmo de reconocimiento, solo puedo decir que se utilizan las ideas de un enfoque de sistema. Algunos de ellos se presentan en nuestros artículos ( aquí , aquí y aquí ). Esto se debe al hecho de que nuestro enfoque se basa en la originalidad, pero requiere la aclaración de algunos problemas. Alguien podría decir: "otro artículo sobre programación de microcontroladores". En absoluto, la búsqueda de tales proyectos no dio ningún resultado inteligible, excepto este video. De las discusiones en los foros, una cosa está clara: la idea de obtener dicho dispositivo (cámara + microcontrolador = resultado de reconocimiento en la salida, y no solo una imagen capturada) surgió para muchos, pero quedó sin implementación. Sí, y el reconocimiento, por todas las cuentas, requiere muchos recursos informáticos y los microcontroladores no son adecuados para esto, en particular, hubo dichos sobre Arduino de que esto es imposible en absoluto. Si se volvió interesante, pido gato.




Para que no haya preguntas obvias, las responderemos:

  • No, este no es un servicio de reconocimiento de imágenes.
  • No, esto no es OpenCV
  • No, estas no son redes neuronales.
  • Se utiliza un análisis morfológico de los objetos que componen la figura.
  • Sí, ¡el microcontrolador hace el reconocimiento con precisión!


Idea


En resumen, todo comenzó con el deseo de probar suerte y poner a prueba sus ideas en el reconocimiento de imágenes. Durante la discusión, llegamos a la conclusión de que podemos utilizar una pequeña potencia informática para resolver este problema. Por razones obvias, no se describirán los detalles de estas discusiones.

Instalación


Entonces, la tarea está establecida, se necesita implementación. Sin apartarse de los principios ya establecidos ,
tomamos lo que está a la mano. Y a la mano había un par de Arduino Uno, un viejo mouse óptico y una unidad de CD. Por cierto, un artículo nos instó a usar un sensor óptico de mouse como cámara para la adquisición de imágenesleído hace mucho tiempo, bueno, en realidad el resto es sobre material de "ratón". Lo único que tuvimos que soldar fue el sensor y todo su arnés para facilitar su uso, así como para colocarle una lente, que cuidadosamente "arrancamos" de la unidad de CD. Esto era necesario para aumentar la distancia del sujeto a la cámara; de lo contrario, los números de nuestro tamaño no se ajustaban y solo se veía una pequeña parte. Por cierto, frente a la lente de la unidad de CD, intentamos conectar la óptica de la cámara web, pero de alguna manera no crecimos juntos.



Más





Entonces surgió la pregunta de cómo colocar esta cámara sobre el tema. Aquí, un viejo microscopio roto que estaba inactivo nos ayudó mucho. Con respeto, eliminaron el mecanismo para controlar la tabla de temas. Este mecanismo nos permitió mover la cámara a lo largo de solo dos ejes, luego surgió la idea de utilizar la guía del cabezal láser desde la unidad de CD. Todo esto se solucionó en el caso desde una unidad de CD que sufrió mucho tiempo. Como resultado, obtuvimos un mecanismo de posicionamiento de cámara genial.



Más







Total: tenemos una llamada cámara, tenemos un mecanismo de posicionamiento, queda colocar un trozo de papel con una cámara digital y obtener una imagen de la cámara. Y entonces comenzaron los "problemas". Dado que las características del sensor óptico del "mouse" son muy pobres para usarlo como cámara, comenzaron a improvisar con luz de fondo.



Más







Se hizo evidente que solo resaltar no funciona, la intensidad es importante, la dirección de la luz externa también hace ajustes. Tuve que incluir otro "arduinka" en mi trabajo para controlar la intensidad de la luz de fondo (por supuesto, podría controlarse de manera diferente, pero más tarde no solo la luz de fondo, sino también cambiar los números en el indicador ). Como resultado, resultó que disparar a la luz era mucho mejor. Y si, por ejemplo, utiliza un indicador luminoso de siete segmentos como objetivo, entonces el sensor lo ve perfectamente. Entonces, ahora tenemos un indicador y una franja con números blancos inundados con un fondo negro como objetos de disparo.



a la izquierda, la imagen en escala de grises obtenida del indicador (obtenemos dicha imagen del sensor), a la derecha, binarizada.



Más





Vista general del conjunto completo






instalación temprana









Bloque de reconocimiento




La llamada unidad de reconocimiento desempeña un papel importante en nuestra instalación (en la imagen de arriba). Como puede ver, consta de Arduino Uno y el conocido transmisor wifi ESP8266 . Les explico que necesitamos un transmisor wifi para ver el resultado del reconocimiento en la tableta. La aplicación en la tableta envía una solicitud, "arduinka", al recibir una solicitud, "toma" la imagen del sensor del mouse y luego la binariza. Después de la binarización, se produce el reconocimiento, y después de su finalización, se forma una respuesta. En la respuesta, enviamos el resultado del reconocimiento y 41 bytes para construir una imagen binarizada en la pantalla de la tableta, por así decirlo, para mayor claridad.

Si miras hacia atrás, entonces en el "arduinka" se le asigna una buena funcionalidad: trabajar con la cámara y reconocimiento, y trabajar con esp8266. Lo que no podía sino afectar el trabajo: tuve que lidiar con la falta de memoria. Nunca pensé que tendría que conquistar cada byte de memoria.

Proceso de reconocimiento




En lugar de una conclusión


Eso es todo Todavía hay mucho trabajo por delante. Y la primera tarea: el reconocimiento de números (una cadena de dígitos) grabados por una cámara "humana" (y no un "sensor de mouse") y la transferencia de la tecnología desarrollada a ESP8266 y una reducción en la intensidad de la lucha por cada byte de memoria.

Estamos felices de responder preguntas.

Source: https://habr.com/ru/post/es397193/


All Articles