Histogramme d'une image Nombre de pixels Niveau de gris L'histogramme représente la distribution des niveaux de gris (ou de couleurs) dans une image H(k) = nombre de pixels de l'image ayant la valeur k. CVIPTools : File>Show Histogram 2 Histogramme d'une image PI(k) 1 k PI(k) 1 0.5 k PI(k) 0.1 k Dynamique d'une image = [valeur_min,valeur_max] Source : Tal Hassner. Computer Vision. Weizmann Institute of Science (Israel). 3 Luminance ou brillance d'une image La luminance (ou brillance) est définie comme la moyenne de tous les pixels de l'image. Dans les deux images suivantes, seule la luminance est différente : CVIPTools : Utilities>Stats>Image Statistics (Mean) Source : Eric Favier. L'analyse et le traitement des images. ENISE (France). 4 Contraste d'une image Le contraste peut être défini de plusieurs façons : Ecart-type des variations des niveaux de gris Variation entre niveaux de gris min et max CVIPTools : Utilities>Stats>Image Statistics (S.D.) 5 Contraste d'une image Les deux images suivantes possèdent un contraste différent : Source : Eric Favier. L'analyse et le traitement des images. ENISE (France). 6 Exemples de contrastes d’une image Source : Gonzalez and Woods. Digital Image Processing. Prentice-Hall, 2002. 7 Amélioration du contraste Plusieurs méthodes possibles : Transformation linéaire Transformation linéaire avec saturation Transformation linéaire par morceau Transformation non-linéaire Égalisation de l’histogramme CVIPTools : Enhancement>Histograms Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 8 Transformation linéaire I’ max− min 255− 0 = I i , j − min I ' i , j − 0 Alors : 255 I ' i , j = I i , j − min max− min 255 I’(i,j ) 0 min I(i,j) max I −min) [ ] 255 ( I ( i , j ) −min) avec ∈ 0,1 I ' (i, i) = ( I ( i , j ) max −min max −min CVIPTools : Enhancement>Histograms>Linear Modification Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 9 Transformation linéaire % 255 255 0 255 min max 255 min max 255 Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 0 255 10 Implémentation… Pour i=1 à nblig Pour j=1 à nbcol I’(i,j) = 255*(I(i,j)-minI) /(maxI-minI); Pas optimal Utilisation d’une LUT (Look Up Table) /* Initialisation de la LUT */ Pour i=0 à 255 LUT[i]=255*(i-minI)/(maxI-minI); /* Initialisation de la LUT */ Pour i=1 à nblig Pour j=1 à nbcol I’(i,j) =LUT[I(i,j)]; Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 11 Transformation linéaire avec saturation % 255 255 0 255 Smin Smax 255 min Smin max 255 Smax Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 0 255 12 Transformation linéaire avec saturation 255 I ' (i, j ) = ( I (i, j ) −Smin ) Smax −Smin I ' (i, j ) ≤ 0 ⇒ I ' (i, j ) = 0 I ' (i, j ) ≥ 255 ⇒ I ' (i, j ) = 255 min(I (i, j )) ≤ Smin < Smax ≤ max(I (i, j )) Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 13 Transformation linéaire par morceaux % 255 255 0 255 Smin Smax 255 min max Smin Smax S 255 Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 0 255 14 Transformation linéaire par morceaux Exemple d’une fonction ad-hoc de modification du contraste de l’image. Source : Gonzalez and Woods. Digital Image Processing. Prentice-Hall, 2002. 15 Transformation non-linéaire Ex: Correction gamma (g) I émise =k⋅n 1 γ γ ⇒n'=n γ écran ∈[ 1 . 3, 3 . 0 ] 1 1 γ oeil≈ à 2 3 CVIPTools : Enhancement>Histograms>Histogram Specificationc 16 Autres fonctions possibles 255 255 255 255 Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 17 Correction de la dynamique de l'image Image originale Image restaurée CVIPTools : Utilities>Stats>Image Data Range + Enhancement>Histograms>Histogram Stretch Source : www.crans.ens-cachan.fr/~genest/histogramme.pdf 18 Correction de la dynamique de l'image Dans le cas où l'histogramme initial occupe toute la plage de dynamique, aucun changement n'est visible. Source : www.crans.ens-cachan.fr/~genest/histogramme.pdf 19 Egalisation de l'histogramme 3500 3500 3000 3000 2500 2500 2000 2000 1500 1500 1000 1000 500 500 0 0 50 100 150 200 Image originale 250 0 0 50 100 150 200 250 Image plus contrastée CVIPTools : Enhancement>Histograms>Histogram Equalization Source : Tal Hassner. Computer Vision. Weizmann Institute of Science (Israel). 20 Egalisation de l'histogramme Pour améliorer le contraste, on cherche à aplanir l’histogramme h ideal k hk k k Etape 1 : Calcul de l'histogramme hi i∈[ 0, 255] Etape 2 : Normalisation de l'histogramme hi h n i = Nbp i∈[ 0, 255] C i = ∑ h n j i∈[ 0, 255] (Nbp : nombre de pixels de l‘image) i Etape 3 : Densité de probabilité normalisé j= 0 Etape 4 : Transformation des niveaux de gris de l'image f ' x , y=C f x , y× 255 21 Egalisation de l'histogramme L'égalisation d'histogramme peut améliorer une image là où la correction de dynamique de l'histogramme est inefficace. 22 Egalisation de l'histogramme Si on prend la même image avec des contrastes différents, l’égalisation d’histogramme donne le même résultat pour toutes les images. Source : Gonzalez and Woods. Digital Image Processing. Prentice-Hall, 2002. 23 Egalisation (locale) de l'histogramme Image originale Egalisation globale Egalisation locale L’égalisation locale de l’histogramme est faite en prenant une fenêtre de 7x7 autour de chaque pixel. CVIPTools : Enhancement>Histograms>Local Equalization Source : Gonzalez and Woods. Digital Image Processing. Prentice-Hall, 2002. 24 Opérations sur les images (ET,OU) Les opérations logiques fonctionnent aussi sur les images. ET = OU = CVIPTools : Utilities>Arith/Logic>{AND,OR} Source : Gonzalez and Woods. Digital Image Processing. Prentice-Hall, 2002. 25 Opérations sur les images (ET,OU) Source : Gonzalez and Woods. Digital Image Processing. Prentice-Hall, 2002. 26 Addition d’images Si f et g sont deux images, on peut définir l’addition R pixel à pixel de ces deux images par : R(x,y) = Min( f(x,y)+g(x,y) ; 255 ) L’addition d’images peut permettre De diminuer le bruit d’une vue dans une série d’images D’augmenter la luminance en additionnant une image avec elle-même CVIPTools : Utilities>Arith/Logic>Add Source : Eric Favier. L'analyse et le traitement des images. ENISE. 27 Soustraction d’images On peut définir la soustraction S pixel à pixel de deux images f et g par : S(x,y) = Max( f(x,y)-g(x,y) ; 0 ) La soustraction d’images peut permettre Détection de défauts Détection de mouvements CVIPTools : Utilities>Arith/Logic>Substract Source : Eric Favier. L'analyse et le traitement des images. ENISE. 28 Multiplication d’images La multiplication S d’une image f par un ratio (facteur) peut se définir par : S(x,y) = Max( f(x,y)*ratio ; 255) La multiplication d’images peut permettre d’améliorer le contraste ou la luminosité x1,5 = CVIPTools : Utilities>Arith/Logic>Multiply Source : Eric Favier. L'analyse et le traitement des images. ENISE. x1,2 = 29 Opérations sur les images (+,-) F(x,y) 0.5*F(x,y) + 0.5*G(x,y) G(x,y) G(x,y) F(x,y) Source : www.nte.montaigne.u-bordeaux.fr/SuppCours/5314/Dai/TraitImage01-02.ppt F(x,y) G(x,y) 30 Interpolation d’images 31 Changement d'échelle (interpolation) CVIPTools : Analysis>Geometry>Resize image Source : Gonzalez and Woods. Digital Image Processing. Prentice-Hall, 2002. 32 Interpolation du plus proche voisin Interpolation du plus proche voisin par copie des pixels Copie de chaque colonne et de chaque rang 12 14 12 12 14 14 15 17 12 12 14 14 15 15 17 17 15 15 17 17 33 Interpolation bilinéaire Zoom ! Interpolation bilinéaire Fonction bilinéaire de 4 pixels voisins (en 2D) Principe 1D i-1 i i-1 i-1/2 i i+1 x y i+1/2 i+1 i+3/2 yi = xi yi+1/2 = (xi + xi+1) /2 Problème pour le dernier point ⇒ extrapolation linéaire de : =2*xN - xN-1 Source : www.dearesin.cicrp.jussieu.fr/dearesin/module7/TSSI/Doc Traitement Images/Poly_image/ 34 Interpolation bicubique Principe 1D Même raisonnement que précédemment sauf que yi+1/2 = (-xi-1 + 9*xi + 9*xi+1 - xi+2) /16 Problèmes pour y1/2, ainsi que pour les 2 derniers points ⇒ 2 extrapolations : une parabolique à distance 1 une linéaire à distance 2 x− 1= 3∗x 0− 3∗x 1 x 2 x N = 3∗x N − 1 − 3∗x N − 2 x N − x N 1 = 2∗x N −x N − 1 3 Le facteur zoom peut être plus élevé, par exemple 3, ce qui donne pour une interpolation cubique : y i 1/ 3 =− 5∗xi− 1 60∗x i 30∗x i 1 − 4∗x i 2 / 81 y i 2/ 3 =− 4∗xi− 1 30∗x i 60∗x i 1 − 5∗x i 2 / 81 35 Exemples d’interpolation Plus proche voisin Bilinéaire Source : Gonzalez and Woods. Digital Image Processing. Prentice-Hall, 2002. 36 Changement d'échelle Plus proche voisin Bilinéaire (4 voisins) Source : Jacques-André Landry, Vision robotique (GPA669), ETS (Canada) 37 Changement d'échelle Bilinéaire (4 voisins) Bicubique (16 voisins) Source : Jacques-André Landry, Vision robotique (GPA669), ETS (Canada) 38 Références (voir aussi la page web du cours) Eric Favier. Cours sur L'analyse et le traitement des images ; Les principes de la vision assistée par ordinateur. ENISE (France). http://www.enise.fr/perso/favier/vision/indexvision.htm Cours sur les traitements ponctuels : http://www.enise.fr/perso/favier/vision/traitements_ponctuels.pdf Caroline Rougier. Cours de Traitement d'images (IFT2730). Université de Montréal (Canada) http://www-etud.iro.umontreal.ca/~rougierc/ift2730/ Chap 9 : Histogramme : étirements, égalisation, manipulation, seuillage : http://www-etud.iro.umontreal.ca/~rougierc/ift2730/cours/Cours9_IFT2730_2008_2.pdf 39