Travaux dirigés Traitement de l`image Transformations orthogonales
Transcription
Travaux dirigés Traitement de l`image Transformations orthogonales
Département de Génie Electrique 5ème Année GE option TdSI, Master EEAP parcours Systèmes & Images Travaux dirigés Traitement de l’image Transformations orthogonales et ondelettes Olivier Bernard Rémy Prost Edition 2015 / 2016 Institut National des Sciences Appliquées de Lyon TD 5GE Option TDSI INSA GE TABLE DES MATIERES Séances Sujets Pages 1 Filtrage / Convolution / Transformation de Fourier 3-4 2 Prise en main de Matlab pour le traitement d'images 5-8 3 Filtrage des images 9 4 Transformation en ondelettes 10 2/12 TD 5GE Option TDSI INSA GE Séance 1 Filtrage / Convolution / Transformation de Fourier I. Opérateur Laplacien Soit un signal continu f(x) et sa version discrète f[i]. On pose: f x f ' x f ' ' x f [i] f ' [ i]= f [i1]− f [i] f ' ' [i]= f ' [i]− f ' [i−1] Pour une image continue f(x,y) (de version discrète f[i,j]), les mêmes relations sont supposées être valides dans les 2 directions du plan image. Le Laplacien de f(x,y) est donné par: ∂ 2 f x , y ∂ 2 f x , y f x , y = ∂x2 ∂ y2 Questions: ∂2 f x , y ∂2 f x , y et de . ∂x2 ∂y2 2. En déduire le masque 3x3 équivalent à l'opérateur Laplacien ainsi défini. 1. Trouver les expressions discrètes de II. Convolution Une image est filtrée par un masque 3x3. Ce filtre H est présenté ci-dessous: [ ] 1 1 1 1 1 1 1 9 1 1 1 Question: 1. L'image filtrée est encore bruitée. Cette image est alors de nouveau filtrée par H. Quel filtre G peut produire le même effet en une étape? (on déterminera parfaitement G). 3/12 TD 5GE Option TDSI INSA GE III.Transformée de Fourier On considère l'image analogique rectangulaire de dimensions Lx et Ly ayant les caractéristiques suivantes: ● ● ● ● sur une ligne horizontale quelconque, l'évolution de la densité est sinusoïdale, de la forme: 1cos2 0 x sur une ligne verticale quelconque (colonne), la densité est constante; l'origine de l'image x 0, y 0 = 0,0 est prise au centre du rectangle; la densité sera prise égale à zéro à l'extérieur du rectangle. Question: 1. Quelle est la transformée de Fourier monodimensionnelle d'un signal ligne ? Quelle est, de même, la transformée de Fourier d'un signal « colonne »? 2. En déduire l'expression rigoureuse de la transformée de Fourier bidimensionnelle de cette image. 3. On fait maintenant l'approximation que les dimensions de l'image sont très grandes devant la période 1/ 0 et devant la taille d'un pixel (Lx et Ly de dimension infinie). Que devient alors le spectre bidimensionnel de l'image analogique de départ ? On conservera cette approximation dans la suite du problème. 4. On considère maintenant l'image texturée résultant de l'addition de 2 motifs identiques à celui décrit précédemment, mais ayant subi respectivement une rotation de +45° et de -45°. Quel est le spectre correspondant à cette texture ? 5. L'image de la question 4) est perturbée par un bruit additif haute fréquence dont le spectre a l'allure suivante: La densité spectrale est constante à l'extérieur du cercle et elle est nulle à l'intérieur. Quelle est la valeur minimale que peut prendre R0 si l'on veut pouvoir extraire la texture du bruit par filtrage linéaire? 4/12 TD 5GE Option TDSI INSA GE Séance 2 Prise en main de Matlab pour le traitement d'images I. Format des images sous Maltab et leur visualisation Une image dans l'environnement matlab est généralement une matrice codée en virgule flottante 64 bits. Nous étudierons uniquement deux types d’images: ● images couleurs: à chaque pixel correspond une couleur codée sur 3 valeurs correspondant aux couleurs primaires R (Rouge), (V) Vert, (B) Bleu (RGB en anglais); ● images monochrome: à chaque pixel correspond une valeur numérique. 1. Images couleurs Exécuter et commenter le code suivant: >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> clear all; close all; img = imread('paysage.png'); figure; subplot(2,2,1); imshow(img); img1 = img; img1(:,:,2) = zeros( size(img,1), size(img,2) ); img1(:,:,3) = zeros( size(img,1), size(img,2) ); subplot(2,2,2); imshow(img1); img2 = img; img2(:,:,1) = zeros( size(img,1), size(img,2) ); img2(:,:,3) = zeros( size(img,1), size(img,2) ); subplot(2,2,3); imshow(img2); img3 = img; img3(:,:,1) = zeros( size(img,1), size(img,2) ); img3(:,:,2) = zeros( size(img,1), size(img,2) ); subplot(2,2,4); imshow(img3); Remarque: Le format png correspond au format « Portable Network Graphics » utilisé pour stocker des images couleurs. 5/12 TD 5GE Option TDSI INSA GE 2. Images monochrome Exécuter et commenter le code suivant: >> clear all; close all; >> >> img = imread('circuit.pgm'); >> figure; imshow(img); colormap(gray) ; axis image ; colorbar; Remarque 1: Le format pgm correspond au format « Portable Graymap » utilisé pour stocker des images en niveau de gris. Remarque 2: la fonction colorbar permet d'afficher l'échelle de couleur dans la fenêtre de visualisation. Dans l'exemple précédent, l'image img possède des données au format uint8, c'est à dire en entier non signé codé sur 8 bits (format standart du niveau de gris compris entre 0 et 255). Cependant, lors de traitement (par exemple lors de filtrage), il est intéressant de manipuler des données au format double (réel double précision codé sur 64 bits), augmentant ainsi la précision des calculs. La ligne de code suivante permet de représenter l'image img en format double: >> img2 = double(img); A partir de l'image img précédente, exécuter et commenter le code suivant: >> >> >> >> >> img2 = double(img)+1; figure; imshow(img2); colorbar; figure; imagesc(img2); colorbar; figure; imagesc(img2); colormap(gray); colorbar; figure; imagesc(img2); colormap(gray); axis image; colorbar; Remarque 1: la fonction imagesc permet de faire une mise à l'échelle des données d'une image vers l'ensemble de la plage de valeur de la table de couleurs courante et affiche le résultat dans une fenêtre.( Ne modifie pas img2) Remarque 2: la fonction colormap permet de changer la table des couleurs pour une fenêtre d'affichage. Dans la suite des TD, nous nous intéresserons uniquement aux images monochromes. 6/12 TD 5GE Option TDSI INSA GE II. Histogramme et recadrage 1. Calcul de l'histogramme d'une image Exécuter et commenter le code suivant: >> clear all; close all; >> img = imread('circuit.pgm'); colorbar; >> imhist(img); ● ● ● Quel est le format de donnée de la variable img ? A quoi correspond l'axe des abscisses ? Est-ce cohérent avec le format de donnée trouvé ci-dessus ? A quoi correspond l'axe des ordonnées ? 2. Réhaussement de contraste Exécuter et commenter le code suivant: >> >> >> >> >> >> clear all; close all; img = imread('cuircuit.pgm'); figure; imagesc(img); colormap(gray); axis image; colorbar; imcontrast(); figure; imshow(img); colorbar; imcontrast(); Pourquoi l'effet de réhaussement de contraste amélirore la qualité visuelle de cette image particulière ? 3. Recadrage d'une image A partir de l'image img précédente, programmer une fonction recadre qui reçoit en entrée une image, qui recadre les valeurs de cette image entre 0 et 1 et qui renvoie l'image résultante en sortie. L'utilisation d'une telle fonction se fera de la façon suivante: >> load imtest.mat; >> figure;imshow(im); >> figure;imhist(im,256); >> imr=cadrelin(im); >> figure;imhist(imr,256); >> figure;imshow(imr); >> figure;imagesc(imr);colormap(gray);colorbar;axis image; 7/12 TD 5GE Option TDSI INSA GE III. Filtrages élémentaires Etudier les 4 filtres suivants: ● ● ● Moyenne mobile 3x3 de réponse impulsionnelle hl[m,n] (voir le TD n°1); Filtre passe-haut complémentaire du filtre précédent (réponse harmonique HH[k,l] = 1 – HL[k,l] ); Filtre Laplacien (voir le TD n°1); Pour chacun des 3 filtres, répondre aux questions suivantes. Questions: 1. Calculer la réponse harmonique par transformation de Fourier 2D de sa réponse impulsionnelle. On visualisera cette réponse en 3D maillée grâce à la fonction mesh (n'hésitez pas à aller voir la documentation de cette fonction sous Matlab) et sous la forme d’une image d’intensité. 2. Filtrer l'image imgRec par convolution 2D. 3. Verifier l'accroissement de dimension de l'image résultat. 4. Vérifier la modification des niveaux de gris maximum et minimum. 8/12 TD 5GE Option TDSI INSA GE Séance 3 Filtrage des images I. Vérification des propriétés de la transformée de Fourier 2D (TF 2D) étudiées au TD n°1 Questions: 1. Synthétiser une image de 32x32 pixels avec un niveau de gris périodique suivant l’axe horizontal (voir TD1) de période 10 pixels. Observer l’image et calculer sa TF discrète 2D. 2. Faire pivoter l’image de 90°. Observer l’image et calculer sa TF discrète 2D. 3. Ajouter la deuxième image à la première. Observer l’image et calculer la TF discrète 2D de cette nouvelle image. 4. Changer la période: 20 pixels au lieu de 10. Calculer sa TF discrète 2D. II. Filtrages élémentaires (suite du TD n°2, 3ème partie) 1. Filtre de Sobel et détection de contours par seuillage Question: 1. Effectuer le filtrage de l'image imtest par un filtre de sobel (horizontal, vertical, bidirectionnel par combinaison quadratique). 2. Calculer l’histogramme de l’image filtrée par le filtre de Sobel, choisir le seuil nécessaire pour séparer l’image en deux classes (noir et blanc) et réaliser le programme de seuillage. III. Filtrages non-linéaire: filtre médian Question: 1. Comparer le filtrage médian 3x3 à la moyenne mobile 3x3 pour le filtrage d'un bruit impulsionnel sur l'image lena. Le filtre médian se fera à partir de la fonction matlab medfilt2. L'image bruitée sera générée à partir du code suivant: >> lenab = imnoise( lena, 'salt & pepper' ); 9/12 TD 5GE Option TDSI INSA GE Séance 4 Transformation en ondelettes Analyse multirésolution par ondelettes et reconstruction On souhaite effectuer une analyse multirésolution séparable d'une image. Les figures 1 et 2 donnent un shéma de décompostion et recontruction de l'image lena à partir d'un tel filtre. Fig. 1 Décomposition multirésolution approximation BL BC 1:2 Fr détails horiz. BL HC 1:2 Gr détails vert. HL BC 1:2 Fr détails diag. HL HC 1:2 Gr 1:2 Fr 1:2 Gr Lignes Colonnes Fig 2 Reconstruction 10/12 TD 5GE Option TDSI INSA GE Questions: Dans un but de simplification, nous utiliserons les filtres de Haar. 1. Proposer une méthode numérique simple de vérification de la reconstruction exacte par les filtres (formule dite de ‘distorsion de module’ et de 'suppression des repliements spectraux'). On observera le retard du processus ‘analyse et reconstruction’ : r =1. 2. Ecrire le programme principal pour tester la décomposition 1D. Ce programme génèrera le signal test suivant: x= [zeros(4,1) ; ones(6,1) ;zeros(4,1)]; Ce signal sera, respectivement, décomposé et reconstruit par les deux fonctions suivantes. On vérifiera que la reconstruction est exacte. ● decomp1D: cette fonction permet de décomposer un signal. Cette fonction prendra en entrée le signal à décomposer x, les coefficients de la réponse impulsionnelle des filtres de décompositon fa et ga (cf Fig.1). Elle fournira en sortie les coefficients d'approximation c et les détails d issus de la décomposition. Ainsi, le prototype d'une telle fonction est: [c,d]=decomp1D(x,fa,ga) ● recons1D: cette fonction permet de reconstruire un signal à partir de ces coefficients d'approximation c et les détails d. Cette fonction prendra en entrée c et d, les coefficients de la réponse impulsionnelle des filtres de reconstruction fr et gr (cf Fig.2), le retard r introduit par le filtrage FIR ainsi que la taille N du signal à reconstruire. Elle fournira en sortie le signal reconstruit avec compensation de retard xrr. Ainsi, le prototype d'une telle fonction est: xrr=reconst1D(c,d,fr,gr,r,N) 3. Ecrire le programme principal pour tester la décomposition 2D. Ce programme utilisera l’image imtest.mat. L’image sera, respectivement, décomposée et reconstruite par les deux fonctions suivantes. La fonction decomp2D sera utilisée pour décomposer les lignes de l’image, puis les colonnes du résultat. On obtiendra 4 sous images de coefficients : approximation, détails horizontaux, détails verticaux, détails diagonaux. La fonction reconst2D effectuera la reconstruction. On affichera les deux images intermédiaires, les quatre images de la décomposition et on vérifiera que la reconstruction est exacte. 11/12 TD 5GE Option TDSI ● INSA GE decomp2D: cette fonction permet de décomposer une image en appliquant decomp1D sur les lignes, puis, par une seconde application, sur les colonnes du résultat. Cette fonction prendra en entrée l'image à décomposer X les coefficients de la réponse impulsionnelle des filtres de décomposition fa et ga (cf Fig.1). Elle fournira en sortie les deux images C et D issues de la décomposition. Ainsi, le prototype d'une telle fonction est: [C,D]=decomp2D(X,fa,ga) ● reconst2D: cette fonction permet de reconstruire une image à partir de deux images C et D issues de la décomposition. Cette fonction prendra en entrée C et D, les coefficients de la réponse impulsionnelle des filtres de reconstruction fr et gr (cf Fig.2), le retard r introduit par le filtrage FIR ainsi que la taille N du signal à reconstruire. Elle fournira en sortie l'image reconstruite Xr. Elle utilisera la fonction reconst1D. Ainsi, le prototype de cette fonction est: Xr=reconst2D(C,D,fr,gr,r,N) 12/12