TD Traitement d'images : exercices corrigés en Scilab et Python
Introduction au traitement d'images sous Scilab et Python
Ce document de travaux dirigés propose une première approche pratique du traitement numérique des images, en s'appuyant sur leur manipulation sous forme de matrices. Conçu pour des étudiants en classes préparatoires scientifiques, plus précisément en filières PC et PSI au lycée Fénelon Sainte-Marie, ce support de cours et d'exercices corrigés explore les bases fondamentales de la modification d'images à travers des applications concrètes programmées sous Scilab et Python.
Rédigé par Marc Lichtenberg pour l'année universitaire 2014-2015, le document détaille les manipulations mathématiques et informatiques indispensables pour comprendre comment un ordinateur stocke, analyse et transforme des images en nuances de gris ou en couleurs.
Conversion en nuances de gris et manipulation des matrices
La première partie du document s'intéresse à la conversion d'une image couleur en une image en nuances de gris. Pour ce faire, les recommandations de l'Union Internationale des Télécommunications (recommandation 601) sont appliquées. Le niveau de luminance d'un pixel est calculé à partir de ses composantes Rouge, Verte et Bleue (RVB) selon une combinaison linéaire précise : G = 0,299R + 0,587V + 0,114B.
Les étudiants découvrent comment isoler chaque canal de couleur en extrayant des tranches de la matrice tridimensionnelle représentant l'image. Le document présente les scripts complets permettant d'effectuer cette opération, que ce soit à l'aide de fonctions spécifiques comme imlincomb sous Scilab ou directement par des opérations vectorielles sur des tableaux numpy sous Python.
Négatif d'une image et arithmétique modulaire
Le second exercice aborde la notion de négatif d'une image en nuances de gris. Le principe repose sur le remplacement de chaque intensité lumineuse par son complément à 255. En informatique, les pixels sont généralement codés sur 8 bits non signés (type uint8), ce qui signifie que les calculs s'effectuent selon une arithmétique modulo 256.
Le document explique comment traduire mathématiquement cette transformation à l'aide d'une matrice ne comportant que des uns, et comment simplifier l'écriture de la commande sous Scilab ou Python pour obtenir instantanément le négatif d'une photographie.
Filtrage et floutage : uniforme et gaussien
La partie centrale du document est consacrée au filtrage spatial, et plus particulièrement au floutage d'images. Deux types de filtres majeurs sont étudiés en détail : le floutage uniforme et le floutage gaussien.
- Floutage uniforme : Il utilise un noyau dont tous les coefficients sont égaux. Le document détaille la normalisation des matrices carrées d'ordre 3 et 5, et l'utilisation de la fonction fspecial associée à imfilter.
- Floutage gaussien : Plus complexe, il fait intervenir une fonction exponentielle dépendant de la distance au pixel central et d'un paramètre d'écart-type sigma. Le cours analyse l'impact de la variation de sigma sur la forme du noyau et sur l'atténuation du flou.
Modification du contraste par fonctions trigonométriques
Le dernier exercice du TD traite de la modification du contraste d'une image en nuances de gris. Pour accentuer ou atténuer les contrastes, une fonction mathématique en forme de « S » est appliquée aux valeurs des pixels normalisées entre 0 et 1.
L'utilisation de la fonction arctangente est décortiquée pas à pas. Le document démontre comment imposer des contraintes de symétrie, normaliser les bornes et introduire un paramètre alpha pour contrôler l'intensité de la transformation. Les codes sources en Scilab et Python illustrent la mise en œuvre pratique de cette fonction de contraste sur des images réelles.
Informations pratiques sur le document
Ce document s'adresse en priorité aux étudiants de classes préparatoires scientifiques (PC et PSI). Il constitue une ressource pédagogique complète mêlant théorie mathématique, formulation matricielle et implémentation informatique. L'ensemble des notions est illustré par des exemples visuels montrant l'effet des transformations sur des photographies, permettant ainsi de lier directement le calcul mathématique au résultat graphique.
Questions fréquentes
Quel langage de programmation est utilisé dans ce document ?
Le document propose des exemples de codes et des fonctions à la fois pour Scilab et pour Python, en utilisant notamment les bibliothèques numpy et matplotlib.
Quelle est la formule utilisée pour convertir une image couleur en nuances de gris ?
La formule préconisée par l'Union Internationale des Télécommunications est G = 0,299R + 0,587V + 0,114B, où R, V et B représentent respectivement les composantes rouge, verte et bleue du pixel.
Comment est géré le flou gaussien dans les exercices ?
Le flou gaussien est implémenté à l'aide de noyaux dont les coefficients sont définis par une exponentielle fonction de la distance au centre et du paramètre sigma, gérant l'atténuation de la netteté autour du pixel central.
Quel est l'objectif de la transformation par arctangente étudiée dans le dernier exercice ?
Cette transformation sert à modifier le contraste de l'image en appliquant une fonction en forme de S aux niveaux de gris pour rendre les zones foncées plus sombres et les zones claires plus lumineuses.
Télécharger TD Traitement d'images : exercices corrigés en Scilab et Python pdf