Estoy interesado en reconocer letras en una placa Boggle, probablemente usando openCV. Las letras son todas de la misma fuente, pero podrían rotarse, por lo que usar una biblioteca de reconocimiento de texto estándar es un problema. Además, el M y el W tienen caracteres de subrayado para diferenciarlos, y el Q es en realidad un Qu. Estoy bastante seguro de que puedo aislar las letras separadas en la imagen, solo me pregunto cómo hacer la parte de reconocimiento.reconocimiento de letras de boggle/scrabble de una imagen
Respuesta
Depende de lo rápido que necesite estar. Si se puede aislar el cuadrado de la letra y gire de manera que los lados del cuadrado que contiene la letra son horizontales y verticales entonces yo le sugeriría:
- Convierte las imágenes en negro/blanco (con la letra el color y el resto de la matriz de la otra
- crea un conjunto de datos de imágenes de referencia de todas las cartas en las cuatro posibles orientaciones (es decir, en posición vertical y se hacen girar 90, 180 y 270 grados)
- utilizar una función de plantilla de coincidencia, tal como cvMatchTemplate para encontrar la mejor imagen que coincida con su conjunto de datos para cada nueva imagen.
Esto llevará un poco de tiempo, por lo que las optimizaciones son posibles, pero creo que obtendrá un resultado razonable. Si es difícil obtener una orientación adecuada, también puede generar versiones giradas de su nueva entrada sobre la marcha y unirlas a su conjunto de datos de referencia.
Si las letras tienen escala diferente entonces puedo pensar en dos opciones:
- Si la orientación no es un problema (es decir, su detección bloque Boggle también puede poner el bloque en la orientación correcta), entonces usted puede utilizar el cuadro delimitador del área que tiene el color de la letra como indicador aproximado de la escala de la imagen entrante, y escala el tamaño del cuadro delimitador en sus imágenes de referencia (esto puede ser diferente para cada imagen de referencia)
- Si la orientación es un problema, entonces simplemente agregue escala como un parámetro de su espacio de búsqueda. Entonces busca todas las rotaciones (0-360 grados) y todos los tamaños razonables (probablemente debería poder adivinar un rango razonable de las imágenes que tiene).
Puede usar un OCR simple como Tesseract. Es simple de usar y es bastante rápido. Sin embargo, tendrás que hacer las 4 rotaciones (como se menciona en la respuesta de @jilles de wit).
Hice una aplicación de iOS que hace justamente esto, basada en OpenCV. Se llama SnapSolve. Escribí un blog sobre cómo funciona la detección. Básicamente, superpongo todas las 26x4 posibles letras + rotaciones en cada forma, y veo qué letra se superpone más. Un pequeño reto a esto es suavizar la imagen de superposición, para deshacerse de los artefactos donde las letras casi se superponen, pero no del todo.
No he visto mi proyecto durante algunos años, pero es un artículo muy interesante, gracias. El enlace al blog sobre hacerlo en javacsript también es bastante interesante. – eggbert
- 1. ¿Cómo funciona el reconocimiento de imagen Vuforia?
- 2. leer números y letras de una imagen usando openCV
- 3. Lógica de Reconocimiento de caras
- 4. framework Java para reconocimiento de patrones de imagen?
- 5. Xcode, iOS - reconocimiento de línea/forma de imagen
- 6. Reconocimiento de distorsiones en una cuadrícula regular
- 7. Reconocimiento de imágenes
- 8. ¿Cómo limitar el reconocimiento de gestos de toque de iPhone dentro de una imagen circular?
- 9. Reconocimiento de patrones de Kinect
- 10. Reconocimiento de formas complejas
- 11. Reconocimiento de forma - contando mangos
- 12. simples de reconocimiento de objetos
- 13. Preprocesamiento de imágenes para reconocimiento de texto
- 14. Reconocimiento marcador en Android (reconocimiento de cubos de Rubik)
- 15. Reconocimiento de matrícula con OpenCV
- 16. cómo probar una cadena de letras solamente
- 17. dividir una cadena de letras mayúsculas
- 18. C# reconocimiento de voz
- 19. reconocimiento de voz Java
- 20. Cómo: reconocimiento de patrones
- 21. C# Reconocimiento de voz
- 22. Reconocimiento de códigos de barras con AI
- 23. Reconocimiento de imágenes de la biblioteca/API de código iPhone
- 24. C# reconocimiento de voz
- 25. Reconocimiento de altavoz Android
- 26. En Excel, ¿cómo extraigo las últimas cuatro letras de una cadena de diez letras?
- 27. Algoritmos de reconocimiento de patrones
- 28. Reconocimiento de imágenes y representación en 3D
- 29. Leyendo el texto de una imagen
- 30. Reconocimiento óptico de caracteres en el iPhone
¿Esto funciona para imágenes de diferentes tamaños/zoom? es decir, si la cámara está más cerca o más lejos de las baldosas? – eggbert
He actualizado mi respuesta para su pregunta. –