Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Aller télécharger les images disponibles depuis le site de cours et les sauvegarder dans votre
répertoire courant.
1 Lecture/écriture d’image
La commande « imread » permet de lire un fichier d’image :
Function Description
imread Read image from graphic file.
(file,format) File specifies the path of the image to be loaded.
Format specifies which format is used for this file: jpg, tif, png, etc
Format can be omitted for known extensions.
imwrite(A, file, Write image to graphic file.
format) A is the array containing data.
File specifies the path of the image to be written.
Format specifies which format is used for this file.
Par exemple :
im = imread(‘image1.jpg’) ;
Remarque: La variable « im » est une matrice de dimension 2 (pour des images en niveau de gris).
La commande « image(im) » permettra d’afficher l’image. Si l’image n’est pas affichée correctement,
ajouter la commande "colormap(gray(256)) ;"
La commande "axis equal" permet d’avoir une bonne échelle horizontale et verticale.
3 Transformation en float
Pour faciliter le travail, il est possible de transformer l’image en nombre réel dans l’intervalle [0,1].
On peut donc effectuer la commande
1
4 Zoom
Ecrire une fonction de zoom (zoomImage) pour zoomer de 𝑘𝑥 en direction de 𝑥 et de 𝑘𝑦 en direction
de 𝑦 ; et le tout dans un carré dont le coin supérieur gauche est donné en argument. On obtiendra
une image de la même taille que l’image d’origine.
Exercice 2 : prendre l’image ‘lenna_large.gif’), et appliquer un zoom 4x pour mieux voir les yeux.
5 Rotation
Ecrire une fonction (rotateImage) qui prendra une image, l’angle de rotation en degré, et le point
autour duquel la rotation s’effectuera.
6 Déformation
Nous essayons de créer un effet ludique. Faite les transformations ci-dessous à la fois sur x et à la fois
sur y (trouver une formule qui approxime ces courbes):
2
𝑦 = 2.5625𝑥 − 4.6875𝑥 2 + 3.125𝑥 3
xr=round(M*(2.5625*x/M-4.6875*(x/M)^2+3.125*(x/M)^3));
yr=round(N*(2.5625*y/N-4.6875*(y/N)^2+3.125*(y/N)^3));
Les paramètres low_in, low_out, high_in et high_out sont the valeur entre 0 et 1.
Exercice 4 :
Essayer la commande :
im2 = imadjust(im, [la valeur min, la valeur max]/255, [0 1]) ; et afficher l’image résultante.
3
7.3 Saturation
Pour appliquer la saturation et puis ajustement
im_dest = im_source ;
im_dest (im_source < Cmin)=Cmin ;
im_dest (im_source >= Cmax)=Cmax ;
7.4
Nous disposons aussi d’une commande matlab « imcontrast » qui ajuste le contraste de manière
interactive.
h1=figure ; imshow(‘lenna_480.tif’) ; colormap(gray(256)) ; imcontrast(h1) ;
7.5 Histogramme
La commande « imhist » donne directement l’histogramme d’une image.
Exercice 5 :
h=zeros(1,256) ;
Commande directe matlab : La fonction imhist(im) de matlab trace l’histogramme d’une image.
et puis tracer la nouvelle histogramme sur les mêmes repères. Y a-t-il des améliorations ?
h1=imhist(im)/numel(im) ; h2=imhist(im2)/numel(im2) ; bar(h1,'b') ; hold on;
bar(h2,'r') ;
Prenez une image mal contrastée (par exemple lenna_480.tif) et essayer de l’améliorer avec
l’égalisation à base d’histogramme.
4
7.7 Filtre médian
Ecrivez une fonction qui éliminerait le bruit « salt & pepper » sur une fenêtre de taille donnée en
argument.
function imageM = imageMediane(im, windowSize)
Ensuite appliquer votre filtre médian pour éliminer ce bruit. Pour afficher ces deux images côte à
côte (pour les comparer plus facilement), utiliser la commande imshowpair(im1, im2,’montage’) ;
5
7.8 Filtrage linéaire
Pour appliquer un filtre linéaire sur une image, on peut utiliser la commande "conv2".
Function Description
conv2() conv2(A, B) performs the 2-D convolution of matrices A and B.
Utilisant cette fonction nous pouvons flouter une image. Prenons le masque mask=ones(3,3)/9 ;
Appliquer ce masque à une des images de test. Augmentez la taille du masque et observer le
résultat. Essayer un masque non uniforme.
L’image ainsi obtenue est de type double (vérifiable par la commande class(imageS)). Pour retourner
à l’image uint8 avec la dynamique entre 0 et 255 :
imageS=uint8(imageS/max(max(imageS))*255);
7.10 Sharpening
Ajouter une image à ses contours et les comparer visuellement.
alpha = 1;
im3 = im + alpha * im2;
Utilisant d’abord Sobel et ensuit le laplacien, tester l’effet de sharpening sur des images de test.
6
En effectuant la commande " image(im( : , : , 1) ) ; colormap(gray(256)) ; " on pourra voir uniquement
les composants "rouge".
En calculant une moyenne sur les trois couleurs, construisez une image noir&blanc et l’afficher.
Pour mieux transformer l’image en noir et blanc, des pondérations sont utilisées :