Chapitre III Filtrage numérique en utilisant Matlab 1 Le logiciel Matlab : . Le

Chapitre III Filtrage numérique en utilisant Matlab 1 Le logiciel Matlab : . Le logiciel MATLAB (MATrix LABoratory) est spécialisé dans le domaine du calcul matriciel numérique. Tous les objets définis dans MATLAB sont donc au moyen de vecteurs et de matrices/tableaux de nombres. Un ensemble important d’opérateurs et de fonctions MATLAB de base facilitent leur manipulation et des opérations comme par exemple le produit et l’inversion matricielles (inv), la transposition (’) ou encore le calcul des valeurs propres (eig) font partie de la bibliothèque standard. D’autres fonctions servant à la création et à la manipulation de matrices et de tableaux (diag, fliplr, flipud, rot90, rand, ones, zeros, linspace, logspace) sont également disponibles en nombre. L’environnement MATLAB se présente sous la forme d’un espace de travail (Workspace), où un interpréteur de commandes exécute des opérations et fonctions MATLAB. Les sources de celles-ci sont disponibles, écrites en “ langage ” MATLAB, voire en C ou en Fortran. L’utilisateur peut à sa guise les modifier, mais en s’en inspirant, il peut surtout créer et rajouter ses propres fonctions. S’il est parfaitement adapté à l’automatique et au traitement du signal, sa facilité d’emploi avec des nombres complexes et ses possibilités d’affichages graphiques en font un outil intéressant pour bien d’autres types d’applications. De plus, des toolboxes sont disponibles dans de nombreux domaines (Traitement du signal, traitement d’images, optimisation, contrôle…) L’objectif de cette introduction au traitement d’images sous Matlab est de présenter la notion d’image et d’effectuer des opérations simples d’analyse d’images telles que le filtrage. 1.1 Vecteurs et Matrices : En fait, toute variable de Matlab est une matrice (Scalaire : matrice 1x1, vecteur : matrice 1xN ou Nx1). On peut spécifier directement une matrice sous la forme d’un tableau, l’espace ou la virgule sépare deux éléments d’une même ligne, les points virgules séparent les éléments de lignes distinctes. Code : >> A = [-1 -1 -1; -1 -8 -1; -1 -1 -1] Exécution : On peut aussi créer des matrices avec la fonction « ones », cette fonction crée des matrices de taille précisée. Code : >> A = ones (3,3) Exécution : « One » peut changer la valeur d’un élément de la matrice par l’affectation Code : >> A (2,2) = 8 Exécution : On peut avoir des informations sur la taille d’une matrice : Code : >> size(A) Exécution : 1.2 Affichage d’une image : Une image est une matrice dont les éléments de la matrice sont les pixels qui sont caractérisé par la position X et Y, et l’intensité de la lumière comme troisième dimension. Exemple: Code : >> A= [ 0 1 0 ; 1 0 1 ; 0 1 0]; >> imshow(A) % pour afficher l’image A >> imshow(A,'InitialMagnification','fit') %pour obtenir une image plus clair Exécution : Pour chaque élément de la matrice B, le 1 représente la couleur blanche et le 0 représente la couleur noire . 1.3 Histogramme: L’histogramme d’une image en niveau de gris associe à chaque valeur d’intensité le nombre de pixels prenant cette valeur. Pour créer l’histogramme d’une image en niveau de gris, il suffit de parcourir l’image pour compter le nombre de pixels de chaque valeur. Voici, en langage MATLAB, la méthode de calcul de l’histogramme d’une image en niveau de gris. Affichage de l’image ‘CAMERAMAN’ Code: >> I= imread('cameraman.tif'); >> imshow(I) Exécution: Histogramme de l’image: Code: >> imhist(I) Exécution: On remarque dans l’histogramme de cette image que Les niveaux de gris moyens et proches du noir sont les plus dominants par contre les niveaux de gris proches du blanc sont négligeables . 1.4Fonctions de matlab : Certaines fonctions ou certains outils de Matlab permettent des manipulations interactive sur une image contenue dans une figure ou non : imageinfo : retourne les informations de l’image dans la figure ou d’un fichier image. zoom : zoom sur une zone de l’image de la figure. Imnoise : Ajouter du bruit l’image. improfile : affiche le profil d’une ligne sélectionnée. impixel : retourne les valeurs des pixels sélectionnés. impixelinfo : affiche la position et les valeurs d’un pixel pointé avec la souris. impixelregion : affiche les valeurs des pixels dans une région sélectionnée avec la souris. imdistline : affiche la distance entre deux pixels sélectionnés. imdisplayrange : affiche l’intervalle des valeurs des pixels de l’image. imcontrast : réajuste une image. Imhist : Histogramme des données d’image. Histeq : Améliorer le contraste en utilisant l’égalisation des histogrammes. imresize : ré-échantillonnage de l’image (homothétie). imrotate : rotation de l’image.  imadjust : recadrage de la dynamique selon une correction gamma. les types de conversion d’image: gray2ind -> Convertir l’image en niveaux de gris ou l’image binaire en image indexée. ind2gray -> Convertir l’image indexée en image en niveaux de gris. mat2gray -> Convertir la matrice en image en niveaux de gris. rgb2gray -> Convertir l’image RVB ou la carte des couleurs en niveaux de gris. ind2rgb -> Convertir l’image indexée en image RVB. label2rgb -> Convertir la matrice en image RVB. Demosaic -> Convertir l’image codée du modéle Bayer en image couleur vraie. im2bw -> Convertir l’image en image binaire, en fonction du seuil. im2double -> Convertir l’image en double précision . im2int16 -> Convertir l’image en entiers signés 16 bits. 2-Matlab et traitements d’images : Une image Matlab est une matrice bidimensionnelle de valeurs entières ou réelles. Les principales fonctions de traitement d’images sous Matlab se trouvent dans la boîte à outils (toolbox) image processing (traitement d’images). L’aide sur cette boîte à outils est obtenue en tapant help images en ligne de commande de Matlab. Ensuite, l’aide sur une commande particulière est obtenue en tapant help suivi du nom de la commande, par exemple help edge. Dans le traitement d’image on retrouve, le filtrage qui est un traitement local qui consiste à effectuer un ensemble d’opérations sur un voisinage, en faisant appel à un filtre ou un masque de même dimension que ce voisinage. Les valeurs du masque sont des coefficients et non des pixels et suivant ces valeurs, on distingue plusieurs types tels que ; le masque de convolution pour un filtre passe-bas, le masque de convolution pour un filtre passe-haut et le masque de convolution pour un filtre gaussien. Le filtrage, qui peut être spatial ou fréquentiel, est utilisé principalement pour réaliser une analyse spatiale d’une image. Son objectif est d’accentuer les variances d’intensité de l’image, ou de détecter les contours et de réduire les bruits existants. Alors deux manières de procéder : dans le domaine spatial : produit de convolution entre l’image et le filtre. dans le domaine fréquentiel : produit entre les spectres de l’image et du filtre. 2-1-Filtrage d’une image : domaine spatial Le filtrage peut être vu comme une opération transformant une image en une autre image ayant des propriétés spatiales et fréquentielles différentes. On distingue deux types de filtrage : les filtres linéaires. Les filtres non linéaires. 2-1-1-Les filtres linéaires : Un filtre linéaire est une transformation mathématique (appelée produit de convolution) permettant, pour chaque pixel de la zone à laquelle il s'applique, de modifier sa valeur en fonction des valeurs des pixels avoisinants, affectées de coefficients. Le filtre est représenté par un tableau (matrice), caractérisé par ses dimensions et ses coefficients, dont le centre correspond au pixel concerné. Le filtrage de l’image I par le filtre h est une image F dont les luminances sont données par : 2-1-1-1-Les filtres de convolution : Beaucoup de traitements d’images sont basés sur les produits de convolutions, dont nous allons expliquer le principe. L’image numérique étant en quelque sorte une carte de pixels. On note qu’un pixel est décrit par : −Ses coordonnées dans l’image (i,j) −Sa valeur I(i,j), représentant son niveau de gris. Pour les images numériques on définit un tableau de « i » colonnes et « j » lignes qui réservent une place pour ranger la valeur de chaque pixel de l’image. Dans le langage mathématique ce genre de tableau s’appelle une matrice. On dispose de plusieurs d’outils pour effectuer des calculs sur les matrices, comme additionner deux matrices, les multiplier, etc ... . Un produit de convolution, est un opérateur mathématique qu’on utilise pour multiplier des matrices entre elles. Dans le cas qui nous intéresse, nous mettons en jeu deux matrices très différentes: la matrice image, très grande ( par exemple 512 x 512, ce qui représente 262144 pixels ) et une matrice plus petite qu’on appelle le noyau parce que c’est le "coeur" de tous les changements qui vont affecter l’image. Le noyau va donc agir sur chacun des pixels, c’est dire sur chacun des éléments de la matrice "image". Dans la figure ci-dessus, l’image est représentée par la matrice [i] composée de n x m éléments. Le noyau est quant lui composé de la matrice carrée [k] de 3x3 éléments. Appliquer un filtre de convolution consiste multiplier chacun des pixels de la matrice [i] par le noyau [k]. Les valeurs du noyau sont appelées les coefficients de convolution et l’ensemblecomplet se nomme le masque de convolution . En pratique, la convolution numérique d'une uploads/S4/ chapitre-iii-filtrage-numerique-en-utilisant-matlab.pdf

  • 39
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jan 17, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 1.1927MB