Images Part 3

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 30

Exercice 1 – Normalisation d’histogramme

Soit une image monochrome 4-bit avec l’histogramme présenté dans la


figure ci-dessous, et associé à une table de ./ niveaux de gris :
Niveau / 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
de gris i
./ 15 0 0 0 0 70 110 45 70 35 0 0 0 0 0 15

Q1.1 Donner l’histogramme de cette


image.
Q1.2 Utiliser la fonction représentée
par la courbe de la figure ci-contre pour
étendre le contraste de l’image.
Q1.3 Donner le nouvel histogramme.

MIDMS – Département GE – BABA 70 modifié : le 14 Oct. 2024


Exercice 2 – Égalisation d’histogramme
Soit une image monochrome 4-bit avec l’histogramme présenté dans la
figure ci-dessous, et associé à une table de ./ niveaux de gris :
Niveau / 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
de gris i
./ 15 0 0 0 0 0 0 0 0 70 110 45 80 40 0 0

Q2.1 Donner l’histogramme de cette image.


Q2.2 Égaliser l’histogramme de l’image.
Q2.3 Donner le nouvel histogramme.

MIDMS – Département GE – BABA 71 modifié : le 14 Oct. 2024


Exercice 3 – Égalisation d’histogramme
Soit une image monochrome 8x8 dans les valeurs des pixels sont comprises
entre 0 et 19.

12 6 5 13 14 14 16 15
11 10 8 5 8 11 14 14
9 8 3 4 7 12 18 19
10 7 4 2 10 12 13 17
16 9 13 13 16 19 19 17
12 10 14 15 18 18 16 14
11 8 10 12 14 13 14 15
8 6 3 7 9 11 12 12

Q3 Donner la nouvelle image 8x8 après égalisation de l’histogramme de


l’image donnée par la matrice ci-dessus

MIDMS – Département GE – BABA 72 modifié : le 14 Oct. 2024


Restauration d’images

MIDMS – Département GE – BABA 73 modifié : le 14 Oct. 2024


Restauration d'image
❑ La restauration d'image consiste à supprimer ou à réduire les
dégradations survenues lors de l'acquisition de l'image.
❑ Ces dégradations peuvent inclure du bruit, qui correspond à des
erreurs dans les valeurs des pixels, ou des effets optiques tels
qu'un flou :
- bruit poivre et sel : est dû soit à des erreurs de transmission
de données, soit à la présence de particules fines sur les
éléments du capteur.
- bruit gaussien : valeurs aléatoires, cas de bruit blanc
❑ La restauration d'image reste l'un des domaines les plus
importants du traitement d'image

MIDMS – Département GE – BABA 74 modifié : le 14 Oct. 2024


Suppression du bruit poivre et sel
❑ filtre moyenneur :
>> x=imread('noise.png'); f3=fspecial('average');
>> xf3=filter2(f3,x); imshow(xf3/255);
❑ filtre médian :
>> xm5=medfilt2(x, [5,5]); imshow(xm3);

Noise.png Filtre moyenneur Filtre moyenneur Filtre médian


428×320 uint8 3×3 7×7 5×5

MIDMS – Département GE – BABA 75 modifié : le 14 Oct. 2024


Suppression du bruit gaussien
❑ La fonction imnoise() permet d’ajouter un bruit à une image :
>> x=imread('image'); xga=imnoise(x, 'gaussian');
>> % xsp=imnoise(x, 'salt & pepper',0.2);
❑ filtre moyenneur :
>> x=imread('fabio.png'); g3=fspecial('average');
>> xg3=filter2(g3,x); imshow(xg3/255);
a–b–c

a. Fabio.png
256×256 uint8
avec bruit gaussien

b. Filtre moyenneur 3×3

c. Filtre moyenneur 5×5

❑ Le filtre moyenneur rend une image floue


❑ Un compromis à faire entre réduction du bruit et le flou

MIDMS – Département GE – BABA 76 modifié : le 14 Oct. 2024


Suppression du bruit gaussien
❑ Filtre adaptatif: il modifie son comportement non linéaire en
fonction des valeurs des pixels sous le masque ; il peut agir
davantage comme un filtre médian ou comme un filtre
moyenneur, selon sa position dans l'image.
❑ L’un de ses filtre est le filtre de Wiener qui minimise l'erreur
quadratique moyenne entre l’image souhaité et l’image bruitée
❑ La fonction wiener2() implémente se filtre sous Matlab ;
>> x=imread('fabio.png'); xw5=wiener2(x, [5,5]);

Fabio.png Filtre de Wiener Filtre de Wiener Filtre de Wiener


Image bruitée 3×3 par défaut 5×5 7× 7
MIDMS – Département GE – BABA 77 modifié : le 14 Oct. 2024
Segmentation d’images

MIDMS – Département GE – BABA 78 modifié : le 14 Oct. 2024


Segmentation d'images
❑ La segmentation d'image est le fait de découper une image en
différents composants ou en objets distincts
❑ Elle est utilisée pour supprimer un détail non souhaité dans une
image.
❑ Pour mettre en valeur certains aspects cachés d’une image

❑ On s’intéresse à deux types d’Operations :


- Seuillage d’image
• Seuillage simple
• Seuillage double
- Détection de contours

MIDMS – Département GE – BABA 79 modifié : le 14 Oct. 2024


Seuillage simple
❑ Une image greyscale est convertie en image binaire (noir et
blanc) via un seuil (niveau de gris) T :
255 23 % > L,
%←0
0 23 % < L.
❑ La commande Matlab x > T exécute une opération de seuillage.
❑ La fonction im2bw() implémente aussi un seuillage pour tout
type d’image, avec un paramètre de seuillage entre 0 et 1 :
>> x=imread('rice.tif'); imshow(x>T);
>> y=im2bw(x, L);
a–b–c

a. Rice.tif
256×256 uint8

b. Seuillage T=110
256×256 logical

c. Seuillage L=0.43
256×256 logical

MIDMS – Département GE – BABA 80 modifié : le 14 Oct. 2024


Seuillage simple
❑ Un autre exemple :
>> x=imread('bacteri.tif');
>> y=im2bw(x, 0.39);
a–b

a. Bacteria.tif
178×178 uint8

b. Seuillage L=0.39
178×178 logical

L’objectif ici est de supprimer un


détail non souhaité (background)

On peut ainsi mesurer la taille des


bactéries par exemple

❑ La valeur du paramètre L dépend de chaque image


❑ La fonction Matlab graythresh() permet de donner L
❑ Isoler des objets du background permet de montrer facilement
certains aspects cachés de l’image
MIDMS – Département GE – BABA 81 modifié : le 14 Oct. 2024
Seuillage double
❑ Une image greyscale est convertie en image binaire via deux
seuils L" et L, :
255 23 L" < % < L, ,
%←M
0 23;N;.
❑ La commande Matlab (# > L" & # > L, ) permet d’opérer un
seuillage sur une image x
>> x=imread('spine.png');
>> y=rgb2gray(x);
>> imshow(y), figure, imshow(y>125 & y<115);
a–b

a. Spine.png
367×490×3 uint8

b. Seuillage double
T1=115 & T2=125
367×490×3 logical

Ce résultat ne peut être obtenu


par un seuillage simple
MIDMS – Département GE – BABA 82 modifié : le 14 Oct. 2024
Application de seuillage : détecter un texte dans une image
❑ La démarche dépend beaucoup de l’image en question:
>> x=imread('text.jpg'); lire l’image
>> y=rgb2gray(x); convertir l’image RGB en greyscale
>> z=y>T; opérer un seuillage simple
>> zm5=medfilt2(z, [5,5]); appliquer un filtre médian
>> imwrite(1-zm5, 'textzm5.jpg'); enregister l’image
a–b–c

a. Text.jpg
256×256×3 uint8

b. Seuillage T=230
256×256 logical

c. Filtrage médian
256×256 logical

❑ Parfois il est nécessaire de choisir un seuillage adaptatif :


découper l’image en plusieurs morceaux et appliquer un
seuillage simple pour chaque morceau
MIDMS – Département GE – BABA 83 modifié : le 14 Oct. 2024
Détection de contours
❑ Les contours dans une images jouent un rôle très important.
❑ Mesurer la taille des objets dans une image
❑ Isoler les objets du Background
❑ Reconnaitre des objets et les classifier
❑ Plusieurs algorithmes pour la détection des contours
❑ Utiliser la commande edge(image, 'méthode', option) pour
détecter les contours où option dépend de la méthode utilisée
❑ Un contour peut être défini comme une discontinuité locale
dans la valeur d’un pixel.
❑ On peut aussi dire que c’est une différence remarquable dans
les valeurs des pixels.

MIDMS – Département GE – BABA 84 modifié : le 14 Oct. 2024


Dérivées et contours
❑ Considérons l’exemple suivant :
3(7) 3 ( (7)

Profil de l’image Dérivée


de gauche du profil

❑ Sur le profil de l’image on observe deux types de contours :


- Une rampe : variation lente de niveaux de gris
- Marche d’escalier : variation brusque des niveaux de gris

MIDMS – Département GE – BABA 85 modifié : le 14 Oct. 2024


Dérivées et contours
❑ Les dérivées sont souvent utilisées pour trouver les contours
❑ La dérivée de la fonction ! au point # peut s’écrire
!(# + 1) − ! (# ) ou !(#) − !(# − 1)
❑ Pour une image à 2 dimensions on utilise les dérivées
partielles de la fonction ! au point (#,%)
S! S!
R T
S# S%
❑ La plupart des méthodes de détection de contours utilisent
l’amplitude du vecteur gradient, et applique un seuillage :

S! , S! ,
U: > + : >
S# S%
MIDMS – Département GE – BABA 86 modifié : le 14 Oct. 2024
Filtres de détection de contours
❑ Pour détecter les contours on utilise un filtre vertical ou un filtre
horizontal :
−1 0 1 −1 −1 −1
px = X−1 0 1Y ou py = X 0 0 0Y
−1 0 1 1 0 1
❑ Les commandes donnent les contours verticaux :
>> x=imread('circuit.tif'); px=[-1 0 1; -1 0 1; -1 0 1];
>> xf=filter2(px,x); imshow(xf/255);
a–b–c

a. Circuit.tif
280×272 uint8

b. Détection de
contours verticaux

MIDMS – Département GE – BABA 87 modifié : le 14 Oct. 2024


Filtres de détection de contours
❑ Les commandes suivantes détectent les contours horizontaux :
>> py =[-1 -1 -1; 0 0 0; 1 1 1]; yf=filter2(py,x);
❑Les commandes suivantes produisent tous les contours :
>> cont=sqrt(xf.^2+yf.^2); figure, imshow(cont/255);
❑La fonction edge() donne directement le résultat. L’option filter
détermine le type du filtre utilisé. Le seuillage est automatique.
>> conT = edge(x, filter);
a–b–c

a. Détection
de tous les
contours

b. Seuillage
T=70

c. Filtre
'prewitt'

MIDMS – Département GE – BABA 88 modifié : le 14 Oct. 2024


Laplacien et détection de contours
❑ Le Laplacien est définit comme somme de dérivées secondes :
S,! S,!
∆! = , + ,
S# S%
❑ Le Laplacien discret peut être implémenté par le filtre :

1 \ 1−\ \
X1 − \ 4 1 − \Y
1+\
\ 1−\ \
❑ Ce filtre traite tous les axes de l’image de la même façon.

a–b–c–d

a. Exemple de contour
de type rampe

b. Dérivée première

c. Dérivée seconde

d. Laplacien discret

MIDMS – Département GE – BABA 89 modifié : le 14 Oct. 2024


Laplacien et détection de contours
❑Les commandes suivantes permettent l’utilisation du
Laplacien – ALPHA de 0 à 1 :
>> f=fspecial('laplacian', ALPHA); figure, imshow(xf);
a–b

a. Détection de tous les


contours avec
Laplacien " = 0

b. Détection de tous les


contours avec ‘sobel’
ou 'prewitt'

MIDMS – Département GE – BABA 90 modifié : le 14 Oct. 2024


Passages par 0 du Laplacien
❑ Soit l’exemple suivant :

50 50 50 50 50 50 50 50 50 50 -100 -50 -50 -50 -50 -50 -50 -50 -50 -100

50 50 50 50 50 50 50 50 50 50 -50 0 150 150 150 150 150 150 0 -50

-50 150 -300 -150 -150 -150 -150 -300 150 -50
50 50 200 200 200 200 200 200 50 50

50 50 200 200 200 200 200 200 50 50 -50 150 -150 0 0 0 0 -150 150 -50

50 50 200 200 200 200 200 200 50 50 -50 150 -150 0 0 0 0 -150 150 -50

-50 150 -300 -150 0 0 0 -150 150 -50


50 50 200 200 200 200 200 200 50 50
-50 0 150 300 -150 0 0 -150 150 -50
50 50 50 50 200 200 200 200 50 50

50 50 50 50 200 200 200 200 50 50 -50 0 0 150 -300 -150 -150 -300 150 -50

50 50 50 50 50 50 50 50 50 50 -50 0 0 0 150 150 150 150 0 -50

-100 -50 -50 -50 -50 -50 -50 -50 -50 50


50 50 50 50 50 50 50 50 50 50

Image de l’exemple Image après application du Laplacien


(valeurs non testées)

MIDMS – Département GE – BABA 91 modifié : le 14 Oct. 2024


Passages par 0 du Laplacien
❑ On définit un pixel ou le Laplacien passe par 0 :
- Un pixel qui a une valeur négative et il est proche (en 4-
connexité) de pixel dont la valeur est positive; Ou:
- Un pixel qui a une valeur nulle et situé entre un pixel de
valeur positive et un pixel de valeur négative.
❑ La fonction Matlab edge() avec l’option zerocross donne les
passages par 0 du Laplacien.
>> f=fspecial('laplacian', 0); yf=edge(x, 'zerocross', 1);
❑ Le résultat n’est pas satisfaisant, on doit lisser l’image avant
de chercher les passages par 0 du Laplacien.
❑ On utilise la méthode de Marr-Hildreth : 1. lissage par un filtre
gaussien, 2. convolution du résultat avec le Laplacien, 3.
chercher les passages par 0.
MIDMS – Département GE – BABA 92 modifié : le 14 Oct. 2024
Passages par 0 du Laplacien
❑ L’option log de zerocross dans la fonction edge() permet
d’appliquer les deux premières étapes de la méthode de Marr-
Hildreth :
>> zf = edge(x, 'zerocross', 'log'); figure, imshow(xf);
a–b

a. Résultat de la recherche
des passages par 0 par
l’option zerocross sans
pré-lissage

b. Résultat Application de
la méthode de Marr-
Hildreth

MIDMS – Département GE – BABA 93 modifié : le 14 Oct. 2024


Transformée de Hough
❑ Cette méthode détermine des lignes dans une image.
❑ Soit une ligne définie par ses paramètres ^ et _ :

33333; −90° < 7 < 90°


0 = OM

p = 0 × cos(7)
M (p, q)
q = 0 × sin(7)

O x

y
❑ La tangente de la droite (OM) au point M est : tan(_)
❑ La tangente de notre droite au point M est : −tan$" (_)
MIDMS – Département GE – BABA 94 modifié : le 14 Oct. 2024
Transformée de Hough
❑ La tangente de notre droite au point M est aussi :
% − c % − ^ × sin(_) $" ( )
cos(_)
= = −tan _ =−
# − d # − ^ × cos(_) sin(_)
% × sin(_) − ^ × sin, (_ ) = −# × cos(_) + ^ × cos , (_)
❑ Donc, l’équation de notre droite est donnée par :
# × cos(_) + % × sin(_ ) = ^
❑ Énoncé de la méthode :
1) On choisit un nombre discret de valeurs de _;
2) Pour chaque pixel(x,y) de l’image, on calcule pour
chaque valeur de _ la quantité : # × cos(_) + % × sin(_ )
3) On place les résultats dans un tableau [^][_].
- Les plus grandes valeurs [^][_] du tableau correspondent
aux lignes recherchées dans l’image.
MIDMS – Département GE – BABA 95 modifié : le 14 Oct. 2024
Application
❑ Soit l’image simple définie par :

Étape 2.
- Pour chaque valeur de (x, y)
on calcule 0
- On répète le calcul pour
chaque valeur de 7

(x, y) −45° 0° 45° 90°


(2, 0) 1.4 2 1.4 0
(1, 1) 0 1 1.4 1
(2, 1) 0.7 2 2.1 1
(1, 3) −1.4 1 2.8 3
Étape 1. (2, 3) −0.7 2 3.5 3
On prend pour 7 les valeurs : (4, 3) 0.7 4 4.9 3
−45° , 0° , 45° , 90° (3, 4) −0.7 3 4.9 4

MIDMS – Département GE – BABA 96 modifié : le 14 Oct. 2024


Application
❑ Soit l’image simple définie par :
Étape 3.
Un tableau qui contient pour chaque valeur de (!, ") le nombre de fois
d’apparition de la valeur !:

−1.4 −0.7 0 0.7 1 1.4 2 2.1 2.8 3 3.5 4 4.9


−45° 1 2 1 2 1
0° 2 3 1 1
45° 2 1 1 1 2
90° 1 2 3 2

❑ Les plus grandes valeurs correspondent à :


(^, _) = (2, 0° ) et (^, _) = (3, 90° )
❑ Les lignes sont d’équations :
# cosi0° j + % sini0° j=2 et # cosi90° j + % sini90° j=3
MIDMS – Département GE – BABA 97 modifié : le 14 Oct. 2024
Application
❑ Les lignes sont alors d’équations : # = 2 et % = 3

MIDMS – Département GE – BABA 98 modifié : le 14 Oct. 2024


Compression d’images

MIDMS – Département GE – BABA 99 modifié : le 14 Oct. 2024

Vous aimerez peut-être aussi