FOURIER ET LES IMAGES



Documents pareils
TP SIN Traitement d image

Introduction à MATLAB R

Projet Matlab : un logiciel de cryptage

Création de maquette web

Fête de la science Initiation au traitement des images

Analyse d images. Edmond.Boyer@imag.fr. Edmond Boyer UFRIMA 1

3.2. Matlab/Simulink Généralités

Usage des photos pour Internet et pour la presse

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

LABO 5 ET 6 TRAITEMENT DE SIGNAL SOUS SIMULINK

Comment tracer une droite représentative d'une fonction et méthode de calcul de l'équation d'une droite.

Traitement numérique de l'image. Raphaël Isdant

Gestion de projet. GanttProject Didacticiel V novembre Gérard Gervois Frédéric Giamarchi

Sujet. calculatrice: autorisée durée: 4 heures

Transmission d informations sur le réseau électrique

1 - Clients 2 - Devis 3 - Commandes 4 - Livraisons 5 - Factures 6 - Avoirs 7 - Modèles

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Formats d images. 1 Introduction

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

Choisir entre le détourage plume et le détourage par les couches.

Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo

Utilisation de XnView

FAIRE SES COMPTES AVEC GRISBI

MODULES 3D TAG CLOUD. Par GENIUS AOM

Affectation standard Affectation modifiée (exemple)

Initiation à la programmation en Python

Séance 0 : Linux + Octave : le compromis idéal

TP : Gestion d une image au format PGM

ESPACE MULTIMEDIA DU CANTON DE ROCHESERVIERE

Structure du format BMP, sa lecture, sa construction et son écriture

Rapidolect Les Productions de la Columelle ( ) Page 1

Guide d utilisation de fonctionnalités avancées de Beyond 20/20 (application à des données départementales issues de Sit@del2)

Utilisation du visualiseur Avermedia


LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies

Chapitre 2 Les ondes progressives périodiques

RÉSOLUTION DE SYSTÈMES À DEUX INCONNUES

Codage hiérarchique et multirésolution (JPEG 2000) Codage Vidéo. Représentation de la couleur. Codage canal et codes correcteurs d erreur

Chapitre 3 : outil «Documents»

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24

PHPWEBSITE -Tutoriel image

Conception d'applications de base de données ios plus rapides Guide Pratique FileMaker

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Traitement bas-niveau

Q6 : Comment calcule t-on l intensité sonore à partir du niveau d intensité?

Calculateur quantique: factorisation des entiers

Analyse de la vidéo. Chapitre La modélisation pour le suivi d objet. 10 mars Chapitre La modélisation d objet 1 / 57

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

VOS PREMIERS PAS AVEC TRACENPOCHE

COMMUNICATEUR BLISS COMMANDE PAR UN SENSEUR DE POSITION DE L'OEIL

Cours Informatique Master STEP

Affichage de la date d'exigibilité sur les documents FAQ INV 011

Créer des documents interactifs

G.P. DNS02 Septembre Réfraction...1 I.Préliminaires...1 II.Première partie...1 III.Deuxième partie...3. Réfraction

Exemple d acquisition automatique de mesures sur une maquette de contrôle actif de vibrations

1. Introduction Création d'une requête...2

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Didier Pietquin. Timbre et fréquence : fondamentale et harmoniques

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Organiser ses photos sur l ordinateur

Approche par marquage pour l évaluation de la qualité d image dans les applications multimédias

Cours Excel : les bases (bases, texte)

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Ladibug TM 2.0 Logiciel de présentation visuel d'image Manuel de l utilisateur - Français

Aide - mémoire gnuplot 4.0

Tp_chemins..doc. Dans la barre "arche 2" couleur claire 1/5 21/01/13

Assistant d e tablissement de Tableaux

RDP : Voir ou conduire

Chapitre 3. Les distributions à deux variables

Mesure agnostique de la qualité des images.

Correction : E = Soit E = -1,6. F = 12 Soit F = y = 11. et G = -2z + 4y G = 2 6 = 3 G = G =

Export vers le format WAV dans ArtemiS SUITE

Raisonnement par récurrence Suites numériques

TD : Codage des images

VRM Monitor. Aide en ligne

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Reaper : utilisations avancées

Sur trois couches, on obtient donc 2563 = de couleurs, soit 24bpp (Bit Per Pixel).

LISTES DE DISTRIBUTION GÉRÉES PAR SYMPA DOCUMENT EXPLICATIF DE L'INTERFACE WEB À L'INTENTION DES ABONNÉS

Catégories de format d'optimisation

INFO 2 : Traitement des images

Cours 7 : Utilisation de modules sous python

Equations cartésiennes d une droite

modélisation solide et dessin technique

Les Angles. I) Angles complémentaires, angles supplémentaires. 1) Angles complémentaires. 2 Angles supplémentaires. a) Définition.

Éditeur Koninklijke Brill Langue(s) Multilingue

:...2 I.6. :... 2 I.7. :... 2 I.8. :...3 I.9. :... 3 I.10. :... 3 II. 4 II.1.

S.P.S.N. Lac du Der 2008

Chapitre IV : La Tenue Des Livres Le journal Le grand Livre

Cours 02 : Problème général de la programmation linéaire

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

GESTION DU LOGO. 1. Comment gérer votre logo? Format de l image Dimensions de l image Taille de l image 9

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Projet audio. Analyse des Signaux ELE2700

Infrastructure - Capacity planning. Document FAQ. Infrastructure - Capacity planning. Page: 1 / 7 Dernière mise à jour: 16/04/14 16:09

Chapitre 1 I:\ Soyez courageux!

Transcription:

FOURIER ET LES IMAGES 1 Objectif de ce travail : Le travail proposé ici consiste à manipuler le spectre des images et à découvrir les relations entre les espaces direct et de Fourier. 2 Petite histoire : Jean-Baptiste que l'on appelait Joseph... Né le 21 mars 1768 à Auxerre mort le 16 mai 1830 à Paris Élu académicien libre le 27 mai 1816. Le 29 mai, l'académie est avisée que le roi Louis XVIII n'approuve pas cette élection. Une nouvelle élection le 12 mai 1817 (pour la section de physique générale) est confirmée par le roi le 23 mai 1817. Élu Secrétaire perpétuel pour les sciences mathématiques le 18 novembre 1822 Il fut élu Membre de l'académie française le 14 décembre 1826 Mathématicien, Joseph Fourier est l'auteur de travaux fondamentaux sur la théorie de la chaleur. Il est l'un des initiateurs de la théorie mathématique des phénomènes physiques. Joseph Fourier consacra ses premiers travaux à l'étude de théorèmes généraux relatifs à la résolution d'équations algébriques. Il présenta un mémoire sur ce sujet devant l'académie des sciences le 9 décembre 1789. En 1794, il est nommé élève à l'école normale, puis répétiteur à l'école polytechnique, poste qu'il occupa jusqu'en 1797. Recruté par Gaspard Monge, il partit en 1798 avec les scientifiques de l'expédition d'égypte. Bonaparte créa l'institut d'égypte selon un plan inspiré de celui de Paris et le désigna pour en être le Secrétaire perpétuel. Joseph Fourier séjourna en Égypte jusqu'en 1801 où il mena des travaux scientifiques, historiques, administratifs et diplomatiques. Il fut chargé d'écrire la "Préface historique" de l'ouvrage "Description de l'égypte" (1809) qui regroupe l'ensemble des observations faites au cours de l'expédition. À son retour en France en 1802, il fut nommé préfet du département de l'isère. Son nom reste attaché à des grands travaux (assèchement des marais de Bourgoin, ouverture de la route de Grenoble à Turin). Il trouva cepant suffisamment de temps pour effectuer en quelques années l'essentiel de son œuvre scientifique. Le 21 décembre 1807, il soumit à la première Classe de l'institut national des sciences et des arts un premier mémoire intitulé "Théorie de la propagation de la chaleur dans les solides". La section de géométrie de l'institut mit au concours la question "Donner la théorie mathématique des lois de la propagation de la chaleur, et comparer le résultat de cette théorie à des expériences exactes". Après une vive polémique comprenant notamment Jean-Baptiste Biot, Louis de Lagrange et Pierre-Simon de Laplace, l'institut couronna les travaux de Fourier en 1812 par le grand Prix de Mathématiques de l'institut. Révoqué de la vie publique en mai 1815, élu Membre de l'académie des sciences en 1817, puis Secrétaire perpétuel pour la division des mathématiques en 1822, il consacra l'essentiel de son temps à cette fonction tout en continuant à publier des travaux scientifiques ("Mémoire d'analyse indéterminée sur le calcul des conditions d'inégalités", "Sur de nouvelles expériences thermoélectriques", "Analyse des équations déterminées"...). 1

Il mourut le 16 mai 1830. Son éloge fut prononcé par François Arago. Joseph Fourier était aussi Membre de la Royal Society of London (1823). Référence Site web de l'académie des sciences : http://www.academie-sciences.fr/membres/in_memoriam/fourier/fourier_oeuvre.htm Transformée Directe FreqIma [m, n]= Transformée Inverse Ima [i, j]= 1 M.N. M 1 k=0 l=0 M 1 k=0 l=0 N 1 Ima est l'image et i,j sont les coordonnées du domaine spatial. FreqIma est l'image et m,n sont les coordonnées du domaine fréquentiel. M, N sont les dimensions de l'image. n.i l.j 2.j. pi. M.N Ima[i, j ].e N 1 n.i l.j 2.j. pi. M.N FreqIma[ m,n].e 3. MANIPULATIONS : 3.1. Transformée de Fourier 1D : Dans cette première partie, on vous propose de revoir rapidement comment est construite la Transformée de Fourier Discrète (FFT) sur un signal 2D : Pour commencer, ouvrez l'image «porte.bmp» : MaPorte=imread('porte.bmp'); Vous savez à présent que l image est disponible sous la forme d une matrice de valeurs codées sur 8 bits. Pour certaines opérations, il est important de noter que le résultat obtenu est plus précis, voire très différents, si les calculs sont réalisés sur des valeurs réelles. Pour convertir l image en «flottant» : MaPorte = double(maporte) ; L image en niveau de gris est formée de Nlin lignes, Ncol colonnes et 1 seul plan. Ces informations sont récupérables facilement grâce à : [Nlin, Ncol] = size(maporte) ; Pour afficher l'image : figure(1); image(maporte); matlab permet de calculer la FFT d'un signal 1D (un vecteur) grâce à la fonction : Freq_MonSignal = fft(masignal); Attention : votre image est un signal 2D réel et sa fft est complexe (la fonction abs() donne le module). Essayez de regarder ce qu'il se passe si vous faites la fft sur la ligne Nlin/2 de votre image. Tracez ce spectre. Effectuez la même opération sur la première ligne de l'image. Conclusion? Sachant que le spectre d'un signal échantillonné est périodique, effectuez les instructions suivantes pour rre votre espace des fréquences périodique : Freq_periodique=Freq_ligne; for u=2:16 Freq_periodique=[Freq_periodique Freq_ligne]; Tracez les spectres Freq_ligne et Freq_periodique, Calculez la fft inverse (fonction ifft(monspectre) )du nouveau spectre. Conclusion? Sur les spectres tracés, vous observez que l'axe des abscisses représente l'indice du point 2

calculé et non la fréquence. Vous pouvez aussi vous rre compte que le tracé représente les fréquences entre 0 et Fech/2 sur les indices 0 à Nlin/2 et les fréquences entre -Fech/2 et 0 pour les indices Nlin/2 à Nlin. Changez l'échelle de l'axe des abscisses. plot (abs(freq_periodique)); v=axis; % récupère les valeurs des échelles sur x et y axis([nlin/2 3*Nlin/2 v(3) v(4)]); % modifie les valeurs sur l'axe x uniquement! Le spectre obtenue doit ressembler à quelque chose que vous connaissez. Sous matlab, il existe une fonction qui permet d'effectuer ce décalage d'axe. Essayez : figure(3); FFT_ligne=fft(Im1(Nlin/2,:)); FFT_ligne=fftshift(FFT_ligne); % recentrage de l'origine des fréquences au centre de la fenêtre plot (abs(fft_ligne)); % trace le module du spectre 3.2. La Transformée de Fourier 2D : Vous avez revue «vos classiques» sur la transformée 1D. Revenons aux images. Matlab permet de calculer la fft d'une image (commande fft2, regardez l'aide) Affichez la transformée de Fourier 2D de 'MaPorte.bmp'. Sachant que les valeurs du module obtenues peuvent être grandes, vous devrez ajuster les amplitudes du spectre aux valeurs de couleurs disponibles. Image_affiche=FFT_MaPorte... % mise à l'échelle des niveaux de gris image(image_affiche); colormap(pink(256)); % meilleure visibilité du spectre axis('image'); Remarque : Vous pouvez utilisez la fonction 'imagesc()' de matlab à la place de 'image()' qui permet de «recadrer» automatiquement les valeurs dans l'intervalle des couleurs disponibles. 3.3. Animez votre Transformée de Fourier 2D! Vous maîtrisez parfaitement les affichages dans le domaine fréquentiel. On se propose de réaliser une petite application didactique : a) Créez une image 512x512 contenant un cosinus aux fréquences f ox =1/ T ox suivant x et f oy =1/T oy suivant y qui utilise tous les niveaux de gris disponibles. Affichez l'image créée. b) Calculez la fft de cette image et affichez en le module Faites une boucle qui repr les étapes a) et b) en changeant la valeur de la fréquence à chaque passage dans la boucle (utilisez imshow(image); drawnow; pour forcer l'affichage). Tox=0; % définition de la période suivant x Toy=0; % définition de la période suivant y while(tox<=1024) Tox=Tox+1; 3

Toy=Toy+1; for i=1:128 for j=1:128 mon_cos(i,j)=double(128*(1+cos(2*pi*(i/tox+j/toy)))); figure (1); imshow(((mon_cos-min(min(mon_cos)))*1/(max(max(mon_cos)))- min(min(mon_cos)))); drawnow; colormap(pink(256)); axis('image'); figure (2); colormap(pink(256)); axis('image'); FFT_MonCos=fft2(mon_cos); FFT_MonCos=fftshift(FFT_MonCos); Image_affiche=abs(FFT_MonCos); imshow(((image_affiche-min(min(image_affiche)))*256/ (max(max(image_affiche)))-min(min(image_affiche)))); drawnow; 4. COMPRESSION : Vous allez maintenant effectuer une compression JPEG. Cette compression utilise la transformée en Cosinus Discret (DCT). Vous verrez que ce type de compression assume une perte d'information lors de l'opération. 4.1. Principe : Ce type de compression repose sur plusieurs étapes : découper l'image en blocs de taille identique (8x8 en pratique). calculer la DCT de chaque bloc. représenter le résultat de la DCT 2D en regroupant les pixels de tous les blocs par ordre de coefficient. supprimer les blocs de coefficients qui représentent les fréquences les plus élevées. calculer les DCT inverse de chaque bloc. regrouper les blocs dans une même image. 4.2. Manipulation : Pour commencer, il est intéressant de regarder le résultat obtenu en effectuant la DCT de l'image complète. Utilisez l'image 'Clown.bmp'. MonClown=imread('clown.bmp'); figure (1); imagesc(dct); DCT=dct2(MonClown); 4

Affichez le résultat de cette DCT : % affichage du résultat figure (2); imagesc(dct); colormap(pink(256)); Remarquez que l'origine des fréquences se trouvent en haut à gauche de l'image. Ci-dessous, vous trouverez les codes qui vous permettent de réaliser ces différentes étapes. Mettre à zéro les pixels qui sont au-delà de la bissectrice rouge figure ci-dessous. DCT(0,0) Pixels à conserver Pixels mis à 0 Calulez la DCT inverse et afficher l'image obtenue (image 'Ma_DCT_inv'). Estimez l'erreur induite par la mise à zéro des pixels en faisant la différence entre l'image originale et 'Ma_DCT_inv'. Découpage des blocs & calcul DCT par bloc : tbloc=8; % taille du bloc dans l'image (2,4,8,16,...) %Découpage des blocs & calcul DCT par bloc for i=1:round(ncol/tbloc) for j=1:round(nlin/tbloc) % Découpage des blocs %i,j,k,l bloc(k,l)=i((i-1)*tbloc+k,(j-1)*tbloc+l); % calcul DCT d'un bloc dct_image(i,j,:,:) = dct2(bloc); Premier type d'affichage du résultat : Dans ce mode de représentation de la DCT2d, on conserve la localisation des blocs de l image originale : observez l irrégularité spatiale de la répartition de l information. % reconstitution des blocs DCT en une image avec préservation de la position des blocs de l image originale for i=1:round(ncol/tbloc) for j=1:round(nlin/tbloc) DCT1((i-1)*tbloc+k,(j-1)*tbloc+l) = dct_image(i,j,k,l); % affichage du résultat figure (2); 5

imagesc(dct1) Deuxième type d'affichage du résultat : Dans ce mode de représentation, on regroupe maintenant les pixels de tous les blocs par coefficient (tous les premiers pixels de chaque bloc sont regroupés dans un bloc, tous les second pixels sont regroupés dans un second bloc, etc.). Vous utiliserez ce mode d'affichage pour évaluer le niveau de dégradation acceptable de votre compression. % mode de représentation de la DCT2d par regroupement des pixels de tous les blocs par coefficient. for i=1:ncol/tbloc for j=1:nlin/tbloc DCT2((k-1)*Ncol/tbloc+i,(l-1)*Nlin/tbloc+j) = dct_image(i,j,k,l); % affichage du résultat figure (3); imagesc(dct2) Reconstruction de l'image : décompression %Reconstruction par DCT inverse de l'image for i=1:round(ncol/tbloc) for j=1:round(nlin/tbloc) bloc=idct2(masque.*reshape(dct_image(i,j,:,:),tbloc,t bloc)); ImReconstitue((i-1)*tbloc+k,(j-1)*tbloc+l) = bloc(k,l); % affichage figure (4); imagesc(imreconstitue) Notez que dans cette dernière opération apparaît une variable nommée «masque». Il s'agit d'une matrice de dimension (tbloc x tbloc) que vous pouvez remplir de 0 et de 1. Un 0 signifie que vous perdrez cette partie de la zone de fréquences, alors qu'un 1 signifie au contraire que vous souhaitez conserver ces fréquences. Essayez différentes solutions. Rappel : les basses fréquences sont en haut et à gauche de votre image dans la représentation 2. 6