2009-02-22 4 views
1

J'ai réussi à avoir chaque caractère stocké dans un bitmap et je cherche un moyen de déterminer rapidement quel caractère il est.OCR: Comment comparer les images, trier hors pair et le faire rapidement?

Par conséquent, je suis sur le point de stocker tous les caractères possibles dans un tableau de 1 et 0, et de les comparer à un tableau de l'image bitmap que je viens de saisir.

Je pourrais faire des contrôles simples comme comparer combien de pixels noirs j'ai eu, comparer les dimensions et ainsi de suite, mais toutes ces vérifications sont lentes (juste une supposition ..). Donc, ce que je cherche est une méthode, qui va à travers chaque pixel de bas en haut, ou aléatoirement, qui compare le tableau à un ensemble de tableaux et trie sans égal, jusqu'à ce qu'un seul tableau reste. Mais comment puis-je l'implémenter?

Merci pour votre aide.

Sven

+0

Etes-vous en train d'essayer d'utiliser uniquement des bitmaps OCR avec un texte aliasé généré par un ordinateur? Si vous êtes, il suffit de hacher chaque bitmap comme un blob et d'utiliser un dictionnaire de blobs. Sinon, ce que vous essayez de faire n'a aucun sens puisque la numérisation introduit de nombreux artefacts ... –

+0

Il s'agit d'un texte aliasé généré par un ordinateur. Le fond est différent, mais le texte a toujours la même couleur. – Sven

+0

Ces images sont-elles en niveaux de gris? Si oui, vous avez plus de seulement 0 et 1, vous avez besoin d'au moins quelques seuils pour comparer les pixels. – mghie

Répondre

2

Dans l'OCR-monde, il est assez rare que vous courez dans un « match parfait » entre un targetresource et votre ressource comparer originale.

En fait, il est un grand domaine de la science, mais voici une thèse belle sur le sujet qui devrait vous donner quelques connaissances de base: http://www.discover.uottawa.ca/~qchen/my_papers/master_thesis.pdf

Notez que les algorithmes comme ceux-ci sont très mathématiques lourds et maintenant de façon optimisée pour une CPU x86 standard.

Si vous cherchez un match parfait (je veux dire, vraiment parfait, jusqu'à octet à octet) et que vous voulez mettre en œuvre ce rapidement et facilement, je suggérerais de faire un "sauter les disparités évidentes rapidement" algorithme de -kinda - quelque chose comme:

1) Comparer la taille des tableaux, si différente, ce n'est pas ce que vous cherchez

2) Comparer une valeur de hachage de chaque bitmaps

3) Comparer chaque bit/octet un-par-un et dès que vous voyez une différence, ce n'est pas ce que vous cherchez

4) Gagnez, vous avez trouvé un match :)

Ceci est très lent, en fonction de ce que vous essayez d'atteindre, mais facile à mettre en œuvre et cela fonctionnera. Cela se passe bien pour une application similaire à un prototype. Comme je l'ai dit, l'OCR (et toutes les autres formes de traitement numérique du signal) sont un énorme domaine de la recherche, il est donc pas quelque chose que vous pouvez attendre les gens à vous enseigner dans un ForumDéposer rapide, malheureusement :(

Bonne chance

[EDIT] En regardant le commentaire dans votre OQ, je dirais que le hashtable/dictionnaire devrait être le plus rapide pour vous, ou un arbre de recherche binaire .. Les deux sont très dépendants de votre générateur de hash :)

[EDIT2 (xD)] "Il s'agit d'un texte aliasé par un ordinateur, l'arrière-plan est différent, mais le texte a toujours la même couleur." Informations assez importantes: P La taille du texte/bitmaps est-elle toujours la même? Je suggère soit d'implémenter votre propre algorithme de hachage en supprimant les couleurs d'arrière-plan prédéfinies, afin que la valeur de hachage dépende seulement de la couleur du texte (et de la forme de ceci) ou réécrit simplement tous les pixels d'arrière-plan de vos cibles être de la même couleur que votre original (ou simplement définir le fond d'origine à celui de vos cibles? Dépend encore des données que vous combattez ici - besoin de plus d'informations :)).

+0

D'accord, l'image est essentiellement une table qui a deux arrière-plans légèrement différents. Je pourrais soit placer le contraste plus haut ou écrire les pixels d'arrière-plan au blanc. Le propre algorithme de hachage ressemble à l'alternative la plus rapide, je vais examiner cela. – Sven

+0

Le lien vers la thèse est maintenant cassé. – Jon

Questions connexes