lundi 10 janvier 2011

Étape 2 : Noir et blanc

Traitement pour trouver la grille et les chiffres

Comme nous n'avons pas besoin de l'information concernant la couleur, nous convertissons l'image en gris avec ce code :
 
Bitmap bmwork = Bitmap.createBitmap(512, 512, Bitmap.Config.RGB_565);
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.setSaturation(0);
Paint paint = new Paint();
ColorMatrixColorFilter cmcf = new ColorMatrixColorFilter(colorMatrix);
paint.setColorFilter(cmcf);
Canvas drawingCanvas = new Canvas(bmwork);
drawingCanvas.drawBitmap(bitmap, 0, 0, paint);

Nous devons maintenant convertir le gris en noir et blanc, noir devient l'arrière-plan (0) et le blanc devient la foregound (1). Ce faisant, la grille et les nombres seront convertis à 1. Pour ce faire, nous avons besoin d'un seuil. Beaucoup  d'informations sont données à ce sujet dans les références indiquées dans le deuxième message. Donc, nous ne répéterons pas cette information ici.

Premièrement, pour améliorer la performance, nous convertissons l'image  à un tableau comme ceci :

int imaget [][] = new int [512][512];    
for (i = 0; i < 512; i++)
       bmwork.getPixels(imaget [i], 0, 512, 0, i, 512, 1);  

Nous utilisons un algorithme avec une région de 12x12 pour trouver la grille et les chiffres. Pour chaque région, nous calculons le niveau de gris moyen, et nous utilisons un seuil de 1,08. Donc, pour le seuil, nous avons ce code:

if (imaget[i][j] < 1.08 * somme_pixels / 144)
    image1[i][j] = 1;
else
    image1[i][j] = 0;

Notes :
  1. Les trois petits boutons passent du noir au magenta lorsque l'unité de traitement est terminée, ce qui signifie que la grille et les chiffres ont tous été trouvés et sont prêts.
  2. Quand une photo est prise, nous enregistrons la photo dans le fichier nommé photo.jpg dans la mémoire auxiliaire du téléphone Android. Vous pouvez appuyer sur le bouton menu pour enregistrer la photo avec un autre nom ou pour ouvrir une ancienne photo. La photo que vous enregistrez ou récupérez est placée dans la mémoire auxiliaire dans le répertoire nommé com.rogerlebo.sudokuvision. Si vous souhaitez récupérer la dernière photo prise, appuyez simplement sur le bouton de retour sur l'écran pour prendre une photo 
Afficher 

Voici les captures d'écran des photos présentées plus tôt :





Aucun commentaire:

Enregistrer un commentaire