Pratiques de conversion RVB/HSV et traitement d’images en niveau gris avec MATLAB

Page 1 sur 3Lecteur de document UniversityLib

Pratiques de conversion RVB/HSV et traitement d’images en niveau gris avec MATLAB

Image Processing, Programming, Digital Imaging · course

Voir tous les documents en programmation

1) Définition de l’image :

Une image numérique est une matrice de pixels repérés par leur coordonnées (x,y). S'il s'agit

d'une image couleur, un pixel est codé par 3 composantes (r,g,b) (chacune comprise au sens

large entre 0 et 255), représentant respectivement les "doses" de rouge, vert et bleu qui

caractérisent la couleur du pixel. S'il s'agit d'une image en niveau de gris, il est codé par 1

composante comprise au sens large entre 0 et 255, représentant la luminosité du pixel.

2) Traitements d’image :

Pour manipuler une image, on travaille sur un tableau d'entiers qui contient les composantes de

chaque pixel. Les traitements s'appliquent toujours aux images en niveau gris et parfois aussi

sur des images couleur. Nous allons distinguer plusieurs types de traitements dans ce projet.

2.1) Changement de format de l’image sous Matlab :

L'oeil humain possède des récepteurs pour les trois couleurs primaires rouge, vert et bleu. Ainsi,

tous les espaces couleur ont trois dimensions. Il ya plusieurs espaces de couleurs disponibles, les

plus connus étant RVB (Rouge-Vert-Bleu) et HSV (Hue-Saturation-Valeur).

 Charger deux images : une en "noir et blanc" et une en couleurs que vous enregistrerez

dans votre répertoire de travail.

 Chercher la taille de chaque image

 Décomposer l'image en trois plans de couleurs R, G et B. Afficher les 3 images obtenues.

 Convertir l'image au niveau de gris. Afficher l'image couleur et l'image résultante sur la

même figure.

Les commandes à utiliser : imread, imshow, rgb2gray

2.2) Histogramme d’images :

Publicité

 Charger et afficher une image

 Afficher son histogramme

 Egaliser son histogramme.

 Afficher l'histogramme de l'image résultante.

Interpréter

Commandes à utiliser : imhist, histeq

2.3) Filtrage d’images :

Pour améliorer la qualité visuelle de l’image, on doit éliminer les effets des bruits (parasites) en

lui faisant subir un traitement appelé filtrage.

Dans une image, les basses fréquences correspondent à des variations lentes de l'intensité

(zones uniformes), et les hautes fréquences à des variations rapides (contours, bruits). Le

filtrage d'une image par un filtre passe-bas donne une image floue, c'est à dire une image

possédant peu de hautes fréquences (les contours sont adoucis par le filtre). D'une manière

générale, un passe-haut accentue les contours et le bruit, tandis qu'un passe-bas réduit le bruit

et adoucit les contours.

Le filtrage consiste à modifier la distribution fréquentielle des composantes d’un signal selon des

spécifications données. Le système linéaire utilisé est appelé filtre numérique.

Le but de ce TP est de mettre le point sur les différentes méthodes de filtrage, à savoir : le filtrage

linéaire et le filtrage non linéaire. L’étudiant est mené à tester et comparer la performance de

plusieurs filtres.

Commandes à utiliser : imread, imshow, imnoise, fspecial, filter2, medfilt2, nrfildemo

Publicité

Manipulation 1 : Ajout d’un Bruit

Avec la commande imnoise, ajouter un bruit à l’image. Tester plusieurs types de bruit : gaussien,

sel et poivre

Manipulation 2 : Filtrage linéaire et Filtrage non linéaire

Filtrage linéaire

 Filtre moyenneur

 Charger et afficher une image

 Ajouter un bruit gaussien à cette image, avec une variance de 0.2 puis 0.4. Afficher

sur la même figure : l’image originale, l’image bruitée (gaussien 0.2) et l’image

bruitée (gaussien 0.4). Insérer des titres.

 Filtrer avec le filtre moyen de taille 3x3, puis 5x5 puis 7x7 les images bruitées.

Comparer les résultats obtenus.

 Filtre gaussien

 Refaire le même travail avec le filtre gaussien. Varier à chaque fois la variance

(sigma) et la taille du filtre.

Filtrage non linéaire

 Charger et afficher une image

 Ajouter un bruit gaussien à cette image, avec une variance de 0.2 puis un bruit sel et

poivre à l’image. Afficher sur la même figure : l’image originale, l’image bruitée

(gaussien 0.2) et l’image bruitée (sel et poivre). Insérer des titres.

 Filtrer les images bruitées avec des filtres non linéaires : Médian, Minimum,

Maximum

Publicité

 Varier la taille des filtres. Interpréter.

2.4) Détection de contours :

Le but de la détection de contours est de repérer les points d'une image numérique qui

correspondent à un changement brutal de l'intensité lumineuse. La détection des contours d'une

image réduit de manière significative la quantité de données et élimine les informations qu'on

peut juger moins pertinentes, tout en préservant les propriétés structurelles importantes de

l'image. Il existe un grand nombre de méthodes de détection de l'image.

Dans ce qui suit quelques méthodes seront exposées :

 Filtre de Prewitt :

La matrice qui correspond au filtrage horizontal, faisant ressortir essentiellement les contours

verticaux, selon l'opérateur de Prewitt, s'écrit hx = [-1 0 1] tandis que la matrice verticale hy est

sa transposée. Les deux convolutions avec le tableau de valeurs initiales créent deux tableaux

Gxet Gy à l'origine du tableau G sur lequel on peut localiser les maximums.

Commandes à utiliser : fspecial, filter2, sqrt

 Filtre de Sobel :

Le principe de ce filtre est que l'opérateur calcule le gradient de l'intensité de chaque pixel. Ceci

indique la direction de la plus forte variation du clair au sombre, ainsi que le taux de changement

dans cette direction. On connaît alors les points de changement soudain de luminosité,

correspondant probablement à des bords, ainsi que l'orientation de ces bords.

L'opérateur utilise des matrices de convolution. La matrice (généralement de taille 3×3) subit

une convolution avec l'image pour calculer des approximations des dérivées horizontale et

verticale. Soit A l'image source, Gx et Gy deux images qui en chaque point contiennent des

Publicité

approximations respectivement de la dérivée horizontale et verticale de chaque point. Ces

images sont calculées comme suit:

En chaque point, les approximations des gradients horizontaux et verticaux peuvent être

combinées comme suit pour obtenir une approximation de la norme du gradient:

Commandes à utiliser : fspecial, filter2, sqrt

 Filtre de robert :

Les filtres de Roberts sont une approche discrète de la dérivée de pas 1 d'une fonction: le

gradient de cette fonction.

Si I(x,y) représente un pixel dans une image, alors les amplitudes des gradients en x et en y

peuvent s'écrire respectivement:

Cela revient à convoluer l'image avec les deux filtres Rx = [-1 1] et Ry = transpose ([-1 1]).

L'amplitude du gradient peut être alors calculée de plusieurs façons:

Gx = I(x+1,y) - I(x,y),

Gy = I(x,y+1) - I(x,y).

G1(x,y) = sqrt(Gx^2 + Gy^2),

G2(x,y)= max(abs(Gx),abs(Gy))

ou G3(x,y) = abs(Gx) + abs(Gy).

Et la direction du gradient est donneée par: D(x,y) = Arctan(Gy/Gx).

Or le bruit peut aussi être une brusque variation locale des niveaux de gris : ces filtres sont donc

très sensibles au bruit car ils accentuent, par dérivation, le bruit présent dans l'image. De plus,

ces filtres donneront un contour épais si celui-ci est un contour de type "rampe".