Pregunta

Logré almacenar cada carácter en un mapa de bits y estoy buscando una manera de determinar rápidamente de qué carácter se trata.

Por lo tanto, estoy a punto de almacenar todos los caracteres posibles en una matriz de 1 y 0, y compararlos con una matriz del mapa de bits que acabo de tomar.

Podría hacer comprobaciones sencillas como comparar cuántos píxeles negros obtuve, comparar las dimensiones, etc., pero todas estas comprobaciones son lentas (sólo una suposición...).

Entonces, lo que estoy buscando es un método que recorra cada píxel de abajo hacia arriba, o que compare aleatoriamente la matriz con un conjunto de matrices y las clasifique sin coincidir, hasta que solo quede una matriz.¿Pero cómo puedo implementar eso?

Gracias por tu ayuda.

Sven

¿Fue útil?

Solución

En el mundo del OCR es bastante raro que se encuentre con una "coincidencia perfecta" entre un recurso de destino y su recurso de comparación original.

En realidad, es un campo de la ciencia enorme, pero aquí hay una buena tesis sobre el tema que debería brindarle algunos conocimientos básicos:http://www.discover.uottawa.ca/~qchen/my_papers/master_thesis.pdf

Tenga en cuenta que algoritmos como estos requieren mucha matemática y ahora están optimizados para una CPU x86 estándar.

Si está buscando una coincidencia perfecta (quiero decir, realmente perfecta, hasta byte a byte) y desea implementarla de forma rápida y sencilla, le sugiero que haga un algoritmo tipo "omitir las discrepancias obvias rápidamente". algo como:

1) Compare el tamaño de las matrices; si son diferentes, no es lo que busca

2) Comparar un valor hash de cada mapa de bits

3) Compara cada bit/byte uno por uno y tan pronto como veas una diferencia, no es lo que buscas

4) Gana, encontraste una coincidencia :)

Esto es muy lento, dependiendo de lo que intentes lograr, pero es fácil de implementar y funcionará.Esto va bien para una aplicación similar a un prototipo.Como dije, OCR (y todas las demás formas de procesamiento de señales digitales) son un campo de investigación enorme, por lo que no es algo que puedas esperar que la gente te enseñe en una publicación rápida en el foro, lamentablemente :(

Buena suerte

[EDITAR] Al observar el comentario en su OQ, diré que optar por una estructura de datos de tabla hash/diccionario sería lo más rápido para usted.Eso, o un árbol de búsqueda binario.Ambos dependen mucho de su generador de claves hash :)

[EDITAR2 (xD)] "Es un texto con alias generado por una computadora.El fondo es diferente, pero el texto siempre tiene el mismo color." Hay información bastante importante :P ¿El tamaño del texto/mapas de bits también es siempre el mismo?Sugeriría que implemente su propio algoritmo de hash en el que descarte los colores de fondo preestablecidos, de modo que el valor de hash solo dependa del color del texto (y de la forma de este también) o simplemente reescriba todos los píxeles de fondo en sus objetivos. para que sea del mismo color que el original (¿o simplemente establecer el fondo original al de sus objetivos?Depende nuevamente de con qué datos esté luchando aquí; necesita más información :)).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top