¿Es posible realizar el procesamiento de imágenes (para extraer números y texto) usando un microcontrolador? Si no, ¿cuáles son las alternativas para hacer esta tarea?
¿Es posible realizar el procesamiento de imágenes (para extraer números y texto) usando un microcontrolador? Si no, ¿cuáles son las alternativas para hacer esta tarea?
Sí, el procesamiento de imágenes se puede hacer usando microcontroladores y microprocesadores. Puede hacer Procesamiento de imágenes usando Arduino con OpenCV o MatLab. O si está más interesado en los microprocesadores, puede usar una computadora integrada como la Raspberry Pi (RPi) o Beaglebone (BB), que es más adecuada para proyectos de procesamiento de imágenes potentes. RPi tiene una GPU incorporada que es mejor para sus aplicaciones, pero BBB también se puede usar para la aplicación de Procesamiento de imágenes teniendo en cuenta el hecho de que tiene un procesador ARM mejor y más rápido. Ya que BB y RPi se ejecutan en Linux, puedes usar OpenCV o simpleCV más común para realizar la tarea.
Puede usar Procesamiento de imágenes usando BBB y OpenCV o RPi y OpenCV. OpenCV es un. Tiene interfaces C ++, C, Python y Java y es compatible con Windows, Linux, Mac OS, iOS y Android. Le sugiero que use OpenCV que usa C ++ para BBB (C ++ es más rápido que RPi y BBB no tiene GPU, por lo que existe la posibilidad de ralentizar el procesamiento) y usar OpenCV que usa Python para RPi (Python es mucho más fácil de codificar y RPi tiene una GPU). He usado tanto RPi como BBB en el pasado, pero te sugiero que compres un RPi para tu aplicación, ya que es más barato y tiene una gran documentación en línea.
Actualización: hay muchos algoritmos basados en OCR disponibles en línea para OpenCV, pero no son tan confiables. Creo que el mejor motor de código abierto de OCR es Tesseract. Puede obtener más información al respecto en el hilo Tesseract o OpenCV para OCR .
Depende realmente de qué tipo de microcontrolador y periféricos estamos hablando, así como de qué tipo de procesamiento de imagen. Debería hacerse las siguientes preguntas (y responderlas por supuesto)
1) El primer problema es colocar los datos de la imagen en la unidad de procesamiento, ¿cómo se hará? ¿De dónde vienen los datos? ¿Dónde se almacena?
2) ¿Qué tan rápido debe ser el procesamiento?
3) ¿La imagen debe estar completamente cargada en la memoria de la unidad de procesamiento para poder procesarla o solo una parte de ella es suficiente? Llevará a los requisitos de memoria
4) ¿Qué vas a hacer con los datos procesados?
En general, el procesamiento de imágenes se realiza en un tipo especial de microcontroladores / procesadores, llamados DSP (procesadores de señales digitales) que están optimizados para procesar grandes conjuntos de datos digitales. Así que después de haber contestado las preguntas anteriores, investigue estas.
La extracción de números y texto de un documento se denomina reconocimiento óptico de caracteres (OCR). Este es un tema bastante complejo, y existen varios enfoques para realizar la OCR. Aunque el término OCR implica el uso de algún tipo de cámara para obtener imágenes del texto, la mayoría de las veces los caracteres se "leen" de un documento existente, como un archivo de Word o PDF, un FAX o una salida del escáner (que puede ser una imagen). archivo como un jpeg). Por lo tanto, en todos estos casos, el formato del archivo debe tomarse en consideración.
En cualquier caso, generalmente hay una etapa de preprocesamiento, en la que los caracteres se desvían (alineados para que sean verticales, por ejemplo), y luego se realiza la detección de bordes.
Si se sabe que los caracteres se crean a partir de una fuente en particular, como Times Roman, o de algunas fuentes conocidas, se puede usar el reconocimiento de patrones. Esto es bastante fácil pero requiere un poco de memoria fija (que puede estar en flash). Si los caracteres son de una variedad de fuentes, esto se vuelve más difícil. En ese caso, se puede utilizar la extracción de características. El desafío más difícil es si los caracteres son manuscritos de forma libre.
Si se sabe que solo se ingresan números en un campo en particular, esto también facilita las cosas. Del mismo modo, se puede usar un diccionario para ayudar a reconocer palabras (una vez más, esto requeriría una gran cantidad de memoria flash).
Dada la memoria suficiente, tanto la memoria flash como la RAM, no hay ninguna razón para que un microcontrolador no pueda realizar OCR, aunque probablemente no podría hacerlo en tiempo real; tendría que ser una tarea fuera de línea. Además, se recomienda un procesador de 32 bits.
OCR como se mencionó anteriormente es principalmente una tarea de reconocimiento de patrones, y no necesariamente requiere DSP; sin embargo, el DSP podría ser útil para limpiar los caracteres antes del procesamiento posterior de OCR, como eliminar el ruido.
Básicamente, no. Hazlo con una computadora integrada como la Raspberry Pi o Beaglebone. Son excelentes para la visión computarizada integrada, son muy baratos y el Beaglebone tiene esquemas de referencia para que diseñe su propio sistema una vez que las etapas de creación de prototipos hayan terminado.
Los algoritmos de reconocimiento de texto probablemente tienen muchas bibliotecas de código abierto disponibles ahora, pero todas serán para el sistema operativo Linux correcto, en lugar de un sistema operativo de microcontrolador en tiempo real. Es mucho más fácil con una arquitectura de estilo CPU completa.
En la frambuesa pi (utilizando OpenCV 2/3 con enlaces Python) obtuve 20-30 cuadros por segundo en el reconocimiento y seguimiento de objetos con imágenes de muestra ligeramente inferior del módulo de la cámara Pi.
Lea otras preguntas en las etiquetas microcontroller arduino raspberry-pi imageprocessing