Traitement d'Images

Découvrir les techniques de traitement d'images : filtres, transformations et programmation avec Python PIL

📊 Difficile⏱️ 55 min110 XP

🎯 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 ?

EdTech AI Assistant