Commit 8262177e authored by Roux Antoine's avatar Roux Antoine
Browse files

mis des morceaux de script_final.py dans des fonctions pour plus de lisibilité

parent 10ab3814
No preview for this file type
No preview for this file type
# -*- coding: utf-8 -*-
"""
Created on Thu Jun 8 10:07:05 2017
@author: aroux
"""
def grey_pixel_eliminator(mat_cont, white, grey, black):
""" prend en arg la matrice des contours et les seuils
enlève les pixels gris en les transformant en pixels blancs ou noirs """
compteur = 1
still_grey = 1
length = len(mat_cont[1])
height = len(mat_cont)
while(still_grey==1 and compteur<100):
still_grey = 0
for i in range (1,height-1):
for j in range (1,length-1):
if (mat_cont[i,j] == grey): #on analyse toutes les pixels grises
if (mat_cont[i+1,j]==black or mat_cont[i-1,j] == black or mat_cont[i,j+1]==black or mat_cont[i,j-1]==black): #s'il y a une pixel noir voisine alors la pixel grise devient noir
mat_cont[i,j] = black
elif (mat_cont[i+1,j]==grey or mat_cont[i-1,j] == grey or mat_cont[i,j+1]==grey or mat_cont[i,j-1]==grey):
still_grey = 1; #on ne peut rien dire pour cett pixel donc on la laisse grise et on maintient still_grey à 1 pour affiner l'image une nouvelle fois
else :
mat_cont[i,j]=white
compteur += 1
for i in range (1,height-1):
for j in range (1,length-1):
if (mat_cont[i,j] == grey):
mat_cont[i,j] = white
return mat_cont
\ No newline at end of file
No preview for this file type
# -*- coding: utf-8 -*-
"""
Created on Thu Jun 8 10:15:54 2017
@author: aroux
"""
import gradient as grd
def line_width_reducer (mat_grad, mat_cont, img) :
""" prend en arg la matrice du gradient, la matrice des contours et l'image
affine les lignes de la matrice des contours
retourne la matrice des contours avec les lignes d'epaisseur 1"""
length = len(mat_grad[1])
height = len(mat_grad)
for i in range (1,height-1):
for j in range (1,length-1):
if (-22,5<=grd.angle_grad(img,i,j) and grd.angle_grad(img,i,j)<=22,5):
if (mat_grad[i,j+1]>mat_grad[i,j] or mat_grad[i,j-1]>mat_grad[i,j]):
mat_cont[i,j] = 255
if (22,5<grd.angle_grad(img,i,j) and grd.angle_grad(img,i,j)<67,5 ):
if (mat_grad[i-1,j+1]>mat_grad[i,j] or mat_grad[i+1,j-1]>mat_grad[i,j]):
mat_cont[i,j] = 255
if (grd.angle_grad(img,i,j)<=-67,5 or 67,5<=grd.angle_grad(img,i,j)):
if (mat_grad[i-1,j]>mat_grad[i,j] or mat_grad[i+1,j]>mat_grad[i,j]):
mat_cont[i,j] = 255
if (-67,5<grd.angle_grad(img,i,j) and grd.angle_grad(img,i,j)<-22,5 ):
if (mat_grad[i+1,j+1]>mat_grad[i,j] or mat_grad[i-1,j-1]>mat_grad[i,j]):
mat_cont[i,j] = 255
return mat_cont
\ No newline at end of file
......@@ -12,6 +12,8 @@ import gradient as grd
import floutage as flt
import image_resizer as ir
import circle_finder as cf
import grey_pixel_eliminator as gpe
import line_width_reducer as lwr
seuil_bas = 100 #seuils et valeurs de couleurs
seuil_haut = 150
......@@ -51,48 +53,13 @@ for i in range (1, height):
#Elimination des pixels grisés
print("Elimination des pixels grisés")
compteur = 1
still_grey = 1
while(still_grey==1 and compteur<100):
still_grey = 0
for i in range (1,height-1):
for j in range (1,length-1):
if (mat_cont[i,j] == grey): #on analyse toutes les pixels grises
if (mat_cont[i+1,j]==black or mat_cont[i-1,j] == black or mat_cont[i,j+1]==black or mat_cont[i,j-1]==black): #s'il y a une pixel noir voisine alors la pixel grise devient noir
mat_cont[i,j] = black
elif (mat_cont[i+1,j]==grey or mat_cont[i-1,j] == grey or mat_cont[i,j+1]==grey or mat_cont[i,j-1]==grey):
still_grey = 1; #on ne peut rien dire pour cett pixel donc on la laisse grise et on maintient still_grey à 1 pour affiner l'image une nouvelle fois
else :
mat_cont[i,j]=white
compteur += 1
for i in range (1,height-1):
for j in range (1,length-1):
if (mat_cont[i,j] == grey):
mat_cont[i,j] = white
print("Elimination des pixels grisés")
mat_cont = gpe.grey_pixel_eliminator(mat_cont, white, grey, black)
#Affinage du trait
print("Affinage du trait")
for i in range (1,height-1):
for j in range (1,length-1):
if (-22,5<=grd.angle_grad(img,i,j) and grd.angle_grad(img,i,j)<=22,5):
if (mat_grad[i,j+1]>mat_grad[i,j] or mat_grad[i,j-1]>mat_grad[i,j]):
mat_cont[i,j] = 255
if (22,5<grd.angle_grad(img,i,j) and grd.angle_grad(img,i,j)<67,5 ):
if (mat_grad[i-1,j+1]>mat_grad[i,j] or mat_grad[i+1,j-1]>mat_grad[i,j]):
mat_cont[i,j] = 255
if (grd.angle_grad(img,i,j)<=-67,5 or 67,5<=grd.angle_grad(img,i,j)):
if (mat_grad[i-1,j]>mat_grad[i,j] or mat_grad[i+1,j]>mat_grad[i,j]):
mat_cont[i,j] = 255
if (-67,5<grd.angle_grad(img,i,j) and grd.angle_grad(img,i,j)<-22,5 ):
if (mat_grad[i+1,j+1]>mat_grad[i,j] or mat_grad[i-1,j-1]>mat_grad[i,j]):
mat_cont[i,j] = 255
mat_cont = lwr.line_width_reducer(mat_grad, mat_cont, img)
#Recherche des cercle
print("Recherche des cercles")
......@@ -131,7 +98,7 @@ cv2.destroyAllWindows()
""" maintenant on reconnait des pieces """
""" Maintenant on reconnait des pieces """
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment