256 shades of grey
stephane@gonnord.org - http://blog.psi945.fr
Lundi 9 janvier 2017
Stéphane Gonnord
256 shades of grey
Année 2016/2017 1 / 16
Plan
1
Du pixel au chier
Pixels
Formats de chiers image
2
Manipulations avec Python
Trois niveaux d’abstraction
Du chier aux pixels
Des pixels au chier
Un peu de technique
3
Quelques traitements d’image
Gestion du contraste
Éclaircissement
Floutage
Détection de contours
Stéphane Gonnord
256 shades of grey
Année 2016/2017 2 / 16
Qu’est-ce qu’une image ?
À l’écran/sur le papier : un rectangle/une matrice de pixels
(PICture ELements).
Un pixel = nuance de gris (...) entre 0 et 255... ou entre 0 et 1.
Ou bien (RGB) : trois niveaux Red/Green/Blue de 0 à 255.
Stockage dans un chier :
pixel par pixel...
ou par compression d’une image initiale.
Compression : destructive ou non (avec ou sans perte
d’information).
Poids d’un chier BitMaP (pixel par pixel sans compression) en
RGB :
3×L×Hoctets ;
trois fois moins en noir et blanc !
Stéphane Gonnord
256 shades of grey
Année 2016/2017 3 / 16
Quelques formats d’image
Chat : image 2048 ×1536 pixels ; poids en kilo-octets.
Ext. destr. compr. chat (RGB) chat (N&B)
bmp NON NON 9437 3147
png NON OUI 4999 1533
gif NON OUI 3336 3367
jpg OUI OUI 400 366
Stéphane Gonnord
256 shades of grey
Année 2016/2017 4 / 16
Trois niveaux d’abstraction (via PIL)
Le chier, support « physique », sur le disque.
L’objet Python « image » intermédiaire. Contient les informations
sur l’encodage... et les données.
La matrice des pixels.
Fichier Objet Python Matrice de pixels
baroudeur.bmp <PIL.BmpImage... array([[[ 12, 16, 25],
... ...
image mode=RGB [80, 86, 60]]],
...> dtype=uint8)
baroudeur.jpg <PIL.JpegImage... array([[[ 12, 16, 25],
... ...
image mode=RGB [80, 86, 60]]],
...> dtype=uint8)
baroudeurBW.jpg <PIL.JpegImage... array([[14, 15, 15, ...,
... ...
image mode=L ... 80, 80, 80]],
...> dtype=uint8)
Stéphane Gonnord
256 shades of grey
Année 2016/2017 5 / 16
Du chier aux pixels
Image.open : objet image à partir du chier.
numpy.array : tableau/matrice de pixels à partir de l’objet image.
Exemple :
Stéphane Gonnord
256 shades of grey
Année 2016/2017 6 / 16
Des pixels au chier
Image.fromarray : des pixels à l’objet image.
Méthode save des objets image : pour sauver sous différents formats.
Exemple :
Que fais-je ?
pixels_chat = np.array( im.open(baroudeurBW.jpg) )
pixels_chat[ 100:200 , 500:1500 ] =
255*np.ones((100, 1000),dtype=uint8)
im.fromarray(pixels_chat).save(mystere.jpg)
Stéphane Gonnord
256 shades of grey
Année 2016/2017 7 / 16
Quelques points techniques
Slicing : tableau[ a:b , c:d ] en lecture ou écriture.
numpy.zeros( (a,b) ) et numpy.ones( (a,b) ) attention aux types.
Conversion en niveaux (Levels) de gris :
image.open(image_couleur.jpg).convert(L).save(image_BW.png)
Appliquer une fonction aux pixels : deux approches
im.fromarray(pixels2).save(baroudeurBW2.jpg)
Stéphane Gonnord
256 shades of grey
Année 2016/2017 8 / 16
Fonction de contraste
On applique f:{0,1,...,255}{0,1,...,255}à chaque pixel.
Pour contraster/décontraster :
f1(x) = 128 +2×(x128)f2(x) = 128 + (x128)/2
On revient à {0,1,...,255}en cas de dépassement !
Stéphane Gonnord
256 shades of grey
Année 2016/2017 9 / 16
Que devient le chat ?
Stéphane Gonnord
256 shades of grey
Année 2016/2017 10 / 16
Un goutte contrastée 5 fois
Stéphane Gonnord
256 shades of grey
Année 2016/2017 11 / 16
Un autre, aux bords moins nets
Stéphane Gonnord
256 shades of grey
Année 2016/2017 12 / 16
Éclaircissement ou assombrissement
Fonction pour éclaircir/assombrir :
f3(x) = 255 (255 x)/2f4(x) = x/2
Stéphane Gonnord
256 shades of grey
Année 2016/2017 13 / 16
Floutons πR2!
Mi,j1
9(Mi1,j1+·· · +Mi+1,j+1)
Stéphane Gonnord
256 shades of grey
Année 2016/2017 14 / 16
Détection de contours
On noircit les pixels (i,j)tels que :
(Pi1,jPi+1,j)2+ (Pi,j1Pi,j+1)2>s,
avec un seuil... à xer ! On contraste d’abord l’image
Stéphane Gonnord
256 shades of grey
Année 2016/2017 15 / 16
C’est ni !
Merci de votre attention
Stéphane Gonnord
256 shades of grey
Année 2016/2017 16 / 16
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !