Traitement d'Images
Découvrir les techniques de traitement d'images : filtres, transformations et programmation avec Python PIL
🎯 Objectifs pédagogiques
- ✓Comprendre les opérations de base sur les pixels
- ✓Découvrir les filtres courants (flou, netteté, contours)
- ✓Maîtriser les transformations géométriques
- ✓Savoir manipuler des images avec Python PIL/Pillow
1Opérations de base sur les pixels
Le traitement d'image consiste à appliquer des opérations mathématiques sur les pixels pour modifier l'apparence de l'image.
Opérations pixel par pixel :
• Modification de la luminosité : ajouter/soustraire une valeur à chaque pixel
• Modification du contraste : multiplier chaque pixel par un facteur
• Inversion des couleurs : soustraire chaque pixel de 255
• Seuillage : transformer en noir et blanc selon un seuil
Exemple Python avec PIL/Pillow :
```python
from PIL import Image
# Ouvrir une image
img = Image.open('photo.jpg')
# Parcourir tous les pixels
pixels = img.load()
largeur, hauteur = img.size
for y in range(hauteur):
for x in range(largeur):
r, g, b = pixels[x, y]
# Augmenter la luminosité de 50
pixels[x, y] = (min(r+50, 255), min(g+50, 255), min(b+50, 255))
img.save('photo_lumineuse.jpg')
```
Conversion en niveaux de gris :
Formule : Gris = 0.299×R + 0.587×G + 0.114×B
Les coefficients reflètent la sensibilité de l'œil humain (plus sensible au vert).
```python
# Conversion en niveaux de gris
img_gris = img.convert('L')
img_gris.save('photo_gris.jpg')
```
2Les filtres de convolution
Un filtre de convolution applique une matrice (kernel) à chaque pixel et à ses voisins pour créer une nouvelle valeur. C'est la base de nombreux effets visuels.
Principe de la convolution :
• Une matrice 3×3 (ou plus) est centrée sur chaque pixel
• Chaque valeur du kernel multiplie le pixel correspondant
• La somme des résultats donne la nouvelle valeur du pixel central
Filtre de flou (blur) - Moyenne 3×3 :
```
[1/9 1/9 1/9]
[1/9 1/9 1/9]
[1/9 1/9 1/9]
```
Chaque pixel devient la moyenne de lui-même et de ses 8 voisins.
Filtre de netteté (sharpen) :
```
[ 0 -1 0]
[-1 5 -1]
[ 0 -1 0]
```
Accentue les différences entre pixels voisins.
Filtre de détection de contours (edge detection) :
```
[-1 -1 -1]
[-1 8 -1]
[-1 -1 -1]
```
Met en évidence les zones où la couleur change brusquement.
Application en Python :
```python
from PIL import Image, ImageFilter
img = Image.open('photo.jpg')
# Appliquer un flou
img_flou = img.filter(ImageFilter.BLUR)
# Détecter les contours
img_contours = img.filter(ImageFilter.FIND_EDGES)
# Augmenter la netteté
img_nette = img.filter(ImageFilter.SHARPEN)
img_flou.save('flou.jpg')
img_contours.save('contours.jpg')
img_nette.save('nette.jpg')
```
3Transformations géométriques
Les transformations géométriques modifient la position, la taille ou l'orientation des pixels sans changer leurs couleurs.
Redimensionnement (resize) :
• Agrandissement : interpolation pour créer de nouveaux pixels
• Réduction : fusion de plusieurs pixels en un seul
• Algorithmes : plus proche voisin, bilinéaire, bicubique
```python
# Redimensionner à 800×600 pixels
img_redim = img.resize((800, 600), Image.LANCZOS)
```
Rotation :
Fait tourner l'image autour d'un point (généralement le centre).
```python
# Rotation de 45 degrés
img_rotation = img.rotate(45, expand=True)
# expand=True agrandit l'image pour éviter la coupure
```
Recadrage (crop) :
Extrait une zone rectangulaire de l'image.
```python
# Recadrer de (x1, y1) à (x2, y2)
zone = (100, 100, 400, 400)
img_recadree = img.crop(zone)
```
Symétrie (flip) :
```python
# Symétrie horizontale
img_h = img.transpose(Image.FLIP_LEFT_RIGHT)
# Symétrie verticale
img_v = img.transpose(Image.FLIP_TOP_BOTTOM)
```
Rotation de 90 degrés :
```python
# Rotation 90° sens horaire
img_90 = img.transpose(Image.ROTATE_270)
# Rotation 90° sens anti-horaire
img_90_inv = img.transpose(Image.ROTATE_90)
```
4Manipulations avancées
Les bibliothèques Python permettent des traitements plus complexes combinant plusieurs techniques.
Ajustement de luminosité, contraste, saturation :
```python
from PIL import ImageEnhance
# Augmenter la luminosité (1.0 = original, 1.5 = +50%)
enhancer = ImageEnhance.Brightness(img)
img_lumineuse = enhancer.enhance(1.5)
# Augmenter le contraste
enhancer = ImageEnhance.Contrast(img)
img_contraste = enhancer.enhance(2.0)
# Augmenter la saturation (couleurs plus vives)
enhancer = ImageEnhance.Color(img)
img_saturee = enhancer.enhance(1.8)
```
Incrustation et transparence :
```python
# Coller une image sur une autre
fond = Image.open('fond.jpg')
logo = Image.open('logo.png') # avec transparence
# Coller le logo en position (100, 50)
fond.paste(logo, (100, 50), logo) # le 3e argument = masque alpha
fond.save('resultat.jpg')
```
Créer un effet sépia :
```python
def sepia(r, g, b):
tr = int(0.393*r + 0.769*g + 0.189*b)
tg = int(0.349*r + 0.686*g + 0.168*b)
tb = int(0.272*r + 0.534*g + 0.131*b)
return (min(tr, 255), min(tg, 255), min(tb, 255))
pixels = img.load()
for y in range(img.height):
for x in range(img.width):
r, g, b = pixels[x, y]
pixels[x, y] = sepia(r, g, b)
```
Création de vignettes (miniatures) :
```python
# Créer une vignette 128×128 (conserve le ratio)
img.thumbnail((128, 128), Image.LANCZOS)
img.save('vignette.jpg')
```
5Applications pratiques du traitement d'image
Le traitement d'images a de nombreuses applications dans le monde réel, de la photographie à la médecine en passant par la sécurité.
Photographie et retouche :
• Correction automatique de l'exposition
• Réduction du bruit (grain)
• Suppression des yeux rouges
• Beautification et lissage de peau
• Filtres Instagram et Snapchat
Reconnaissance et vision par ordinateur :
• Détection de visages (smartphones, réseaux sociaux)
• Reconnaissance de caractères (OCR) pour numériser des documents
• Lecture de QR codes et codes-barres
• Reconnaissance d'objets (voitures autonomes)
• Identification biométrique (empreintes, iris)
Médecine et imagerie médicale :
• Amélioration des radiographies et IRM
• Détection de tumeurs par analyse d'image
• Segmentation d'organes en 3D
• Aide au diagnostic assisté par ordinateur
Industrie et contrôle qualité :
• Inspection automatique de pièces manufacturées
• Détection de défauts sur chaînes de production
• Comptage d'objets
• Mesure de dimensions
Sécurité et surveillance :
• Reconnaissance faciale
• Détection de mouvements
• Lecture de plaques d'immatriculation
• Analyse comportementale
Arts et création :
• Génération d'images par IA (DALL-E, Midjourney)
• Transfert de style artistique
• Morphing et animation
• Effets spéciaux au cinéma
Le traitement d'images est un domaine en pleine expansion grâce aux progrès de l'intelligence artificielle et de l'apprentissage profond.
📝Quiz de validation
1. Pour convertir une image couleur en niveaux de gris, quelle formule utilise-t-on généralement ?
2. Qu'est-ce qu'un filtre de convolution ?
3. En Python PIL, comment appliquer un flou à une image ?
4. Quelle transformation permet de retourner une image horizontalement ?
5. Quelle est une application pratique de la détection de contours ?
