Question

Je suis en train de trouver un bon algorihtm qui détecterait les coins d'une image dans un téléphone mobile. Il y a plusieurs algorithmes pour faire que je ne suis pas sûr que l'on va plus performant dans un mémoire et un processeur environnement limité.

Plus précisément, je suis en train de trouver une grille de sudoku dans une photo prise avec l'appareil photo du téléphone. J'utilise C # et ne pouvait pas trouver toutes les bibliothèques qui a des caractéristiques de traitement d'image de base. Je mis en place un filtre de Sobel pour faire détection de bord et qui est où je suis.

Pour préciser la question est-ce que quelqu'un a des suggestions d'utiliser un algorithme spécifique ou une bibliothèque?

Était-ce utile?

La solution

Je ne dirais pas « détection d'angle » par lui-même est une très bonne façon de le faire. Prenez un peu de recul et de réfléchir à une photo d'une grille de Sodoku, il y a probablement beaucoup d'hypothèses que vous pouvez faire pour simplifier les choses.

Par exemple, une grille de Sodoku ressemble toujours exactement la même chose:

  • Carré blanc
  • 9 x 9 grille régulière

traitement de l'image dans l'espace couleur HSV vous permettra de regarder pour les zones à forte luminosité (couleurs de blanc-ish), RGB est un pantalon de bits pour la plupart des techniques de traitement d'image.

seuillage l'image devrait alors réduire le bruit

Réglage de l'histogramme de l'image première peut aussi vous donner de meilleurs résultats car il blanchira probablement la grille (dépend de l'image cependant).

Ensuite, tout ce que vous avez à faire est de trouver une place. Parce que vous savez la grille est régulière à l'intérieur, vous pouvez diviser les pixels en conséquence et OCR les carrés avec un numéro.

: D

Autres conseils

Puisque vous êtes à la recherche d'une grille régulière 9x9 considèrent le Transformée de Hough . La première consiste à exécuter un premier détecteur de bord, trouver toutes les lignes droites à l'aide de la transformation de Hough original, et puis essayer de comprendre lequel d'entre eux forment une grille. Ou vous pouvez peut-être trouver une façon intelligente de paramétrer l'ensemble du réseau.

J'ai trouvé OpenCV très utile dans le traitement des images, et je me marquer un programmeur assez moyen.

Voici un exemple (en C ++ , mais vous pouvez probablement le porter) qui fait la détection d'angle dans OpenCV.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top