1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| from PIL import Image
noyau0 =\
[1, 4, 7, 4, 1,\
4, 16, 26, 16, 4,\
7, 26, 41, 26, 7,\
4, 16, 26, 16, 4,\
1, 4, 7, 4, 1 ]
def conv_gris(image1):
image2 = Image.new("RGB",image1.size)
# conversion en niveaux de gris, mode RGB
for ligne in range(image1.size[1]):
for colonne in range(image1.size[0]):
pix = image1.getpixel((colonne,ligne))
rouge = int((pix[0]+pix[1]+pix[2])/3)
vert = rouge
bleu = rouge
image2.putpixel((colonne,ligne),(rouge,vert,bleu))
return image2
def flou_gaussien(image2,noyau):
# filtrage de l'image en niveaux de gris
image3 = Image.new("RGB",image2.size)
for ligne in range(2,image2.size[1]-2):
for colonne in range(2,image2.size[0]-2):
liste_pix=[]
for x in range(colonne-2,colonne+3):
for y in range(ligne-2,ligne+3):
liste_pix.append(image2.getpixel((x,y)))
gris=0
for i in range(25):
gris=gris+noyau[i]*liste_pix[i][0]
rouge = vert = bleu = int(gris/273)
image3.putpixel((colonne,ligne),(rouge,vert,bleu))
return image3
nom = "billes.jpg"
mon_image = Image.open(nom)
# affichage de l'image en niveaux de gris
gris = conv_gris(mon_image)
gris.show()
# flou gaussien de l'image en niveaux de gris
flou = flou_gaussien(conv_gris(mon_image),noyau0)
flou.show() |
Partager