4
Résume TP : traitement d’images support physique Omar Bella 1)La fonction histogramme: function h = histograme1(I) I = double(I); p = 0; for i = 1:10 s = sum(I==p) s = sum(s); h(i) = s; p = p + 1; end plot(h); end 2) la fonction histogramme cumule : function hc = histogramec(I) I = double(I); p = 0; for i = 1:256 s = sum(I==p); s = sum(s); h(i) = s; p = p + 1; end hc(1) = h(1); for i = 2:256 hc(i) = h(i) + hc(i-1); end end 3)la fonction distance : function d =distanc(I,x1,y1,x2,y2,dist) switch dist case 'eclu' d = sqrt((x1-x2)^2 + (y1- y2)^2) case 'city' d = abs(x1-x2)+abs(y1-y2) case 'manth' d = max(abs(x1-x2),abs(y1-y2)) end end 4)la fonction etirement: function n = etirement(I) I = double(I); Max = max(I(:)) Min = min(I(:)) n = ((I - Min)*255)/(Max - Min); n = uint8(n); end 5)la fonction rgb2GRAY : function g = rgbtogray(I) I = double(I); [h w c] = size(I); if c ==3 R = I(:,:,1); G = I(:,:,2); B = I(:,:,3); g = 0.299*R + 0.587*G + 0.114*B; end g = uint8(g); x = g(100,100) end 6)la fonction detection de countour : function grad = u_Contoure(I, operateur, diriction) J = double(I); switch operateur case 'sobel' sx = [1 -2 -1; 0 0 0; 1 2 1]; sy = sx'; case 'prewith' sx = [-1 1 1; 0 0 0; 1 1 1]; sy = sx'; end switch diriction case 'horizontal' grad = u_Filter(J, sx); case 'vertical' grad = u_Filter (J, sy); case 'both' gx = u_Filter (J, sx); gy = u_Filter (J, sy); grad = sqrt(gx.^2 + gy^2); end grad = uint8(grad); end 7)la fonction u_filter : function R = u_Filter(I, sv) I=double(I); [h,w] = size(I); for i = 2:h-1 for j=2:w-1 k = sv.*I(i-1:i+1, j- 1:j+1); J(i, j) = sum(k(:)); end end R = uint8(J); end

Traitement des images avec matlab

Embed Size (px)

Citation preview

Page 1: Traitement des images avec matlab

Résume TP : traitement d’images support physique Omar Bella

1)La fonction histogramme:

function h = histograme1(I) I = double(I); p = 0; for i = 1:10 s = sum(I==p) s = sum(s); h(i) = s; p = p + 1; end plot(h); end

2) la fonction histogramme cumule :

function hc = histogramec(I) I = double(I); p = 0; for i = 1:256 s = sum(I==p); s = sum(s); h(i) = s; p = p + 1; end hc(1) = h(1); for i = 2:256 hc(i) = h(i) + hc(i-1); end end

3)la fonction distance :

function d =distanc(I,x1,y1,x2,y2,dist)

switch dist case 'eclu' d = sqrt((x1-x2)^2 + (y1-

y2)^2) case 'city' d = abs(x1-x2)+abs(y1-y2) case 'manth' d = max(abs(x1-x2),abs(y1-y2)) end end

4)la fonction etirement:

function n = etirement(I) I = double(I);

Max = max(I(:))

Min = min(I(:))

n = ((I - Min)*255)/(Max - Min); n = uint8(n);

end

5)la fonction rgb2GRAY :

function g = rgbtogray(I) I = double(I); [h w c] = size(I); if c ==3 R = I(:,:,1); G = I(:,:,2); B = I(:,:,3); g = 0.299*R + 0.587*G + 0.114*B; end g = uint8(g); x = g(100,100) end

6)la fonction detection de countour :

function grad = u_Contoure(I, operateur,

diriction) J = double(I);

switch operateur case 'sobel' sx = [1 -2 -1; 0 0 0; 1 2 1]; sy = sx'; case 'prewith' sx = [-1 1 1; 0 0 0; 1 1 1]; sy = sx'; end

switch diriction case 'horizontal' grad = u_Filter(J, sx); case 'vertical' grad = u_Filter (J, sy); case 'both' gx = u_Filter (J, sx); gy = u_Filter (J, sy); grad = sqrt(gx.^2 + gy^2); end grad = uint8(grad); end

7)la fonction u_filter :

function R = u_Filter(I, sv) I=double(I); [h,w] = size(I); for i = 2:h-1 for j=2:w-1 k = sv.*I(i-1:i+1, j-

1:j+1); J(i, j) = sum(k(:)); end end R = uint8(J); end

Page 2: Traitement des images avec matlab

Résume TP : traitement d’images support physique Omar Bella

8)la fonction variance :

function v = variance(I) I = double(I); [h w] = size(I) N = h*w moy = sum(I(:)); moy = moy/N;

v = (I - moy).^2; v = sum(v(:)); v = v/N end

9)la fonction egalise:

function g = egalise(f) [w h c] = size(f); I = f; if c == 3 I = rgb2gray(f); end

I = double(I); H = zeros(256); HC = zeros(256); taille = w*h;

for m = 1:w for n = 1:h val = I(m, n); H(val + 1) = H(val + 1) + 1; end end

HC(1) = H(1);

for m = 2:256 HC(m) = HC(m-1) + H(m); end

for m = 1:w for n = 1:h val = I(m, n); g(m, n) = 255*HC(val+1)/taille; end end

g = uint8(g); end

10)la fonction bruit :

function ib=bruiter_image(I) ib=imnoise(I,'salt & pepper'); figure(1);subplot(4,2,1);imshow(I);title('I

mage initiale');

subplot(4,2,2);imshow(ib);title('Image

bruitee');

11)la fonction filter gauss:

function if_gauss=filtre_gauss(I) J=double(I)/255.0;

h=fspecial('gaussian',[5 5 ],0.9); if_gauss=conv2(h,J); figure(1);subplot(4,2,7);imshow(I);title('i

mage initiale'); subplot(4,2,8);imshow(if_gauss);title('imag

e filtre(filtre gaussian)');

12)la fonction filter moyenneur:

function if_moy=filtre_moy(I) f=ones(7)/9; if_moy=imfilter(I,f); figure(1);subplot(4,2,3);imshow(I);title('i

mage initiale'); subplot(4,2,4);imshow(if_moy);title('image

filtre(filtre moyenneur)');

13) la fonction filtre median :

function r=med(i) r=medfilt2(i,[10 10]); figure(3);subplot(1,2,1);imshow(i);title('i

mage originale'); figure(3);subplot(1,2,2);imshow(r);title('i

mage filtree');

14)la fonction rgb2ycbcr:

function c = rgb2yacbcr(i); i=double(i); A=[65.481 -37.797 112;128.553 -74.203 -

93.786 ;24.966 112 -18.214 ]; k=i./255; u=reshape(k,[],3); s=u*A; s1=s(:,1)+16; s2=s(:,2)+128; s3=s(:,3)+128; j=reshape(cat(3,s1,s2,s3),size(i)); c=uint8(j); end

15) le filter gauss avec meshgrid :

function T=gauss_h (taille,sigma,I) I=double(I); switch taille case 3 m=1; case 5 m=2;

Page 3: Traitement des images avec matlab

Résume TP : traitement d’images support physique Omar Bella

case 7 m=3; end [X Y]=meshgrid(-m:m,-m:m); GA=(1/(2*pi*sigma^2))*exp(-

(X.^2+Y.^2)/(2*sigma^2)); [h w]=size(I); for i=2:h-1 for j=2:w-1 k=GA.*I(i-m:i+m,j-m:j+m); T(i,j)=sum(k(:)); end end T=uint8(T); imshow(T); end

16)le filter median:

function img = filter_medien(I) I=double(I); [h w]=size(I); img = zeros(size(I)); for i=2:h-1 for j=2:w-1 m = I(i-1:i+1,j-1:j+1); for k=1:9 for p=1:8 if m(p)>m(p+1) aide = m(p); m(p) = m(p+1); m(p+1) = aide; end end end img(i,j) = m(5); end end img = uint8(img); imshow(img); end

17)détection de contours par hystérises :

function ig=detec(I) I=double(I);

[h w c]=size(I); sth=[1 0 -1]; stv=sth'; igx =zeros(size(I)); igy =igx; for i=2:h-1 for j=2:w-1 igx1 = sth.*I(i,j-1:j+1); somx = sum(igx1); igx(i,j) = somx;

igy1 =stv.*I(i-1:i+1,j);

somy = sum(igy1); igy(i,j) = somy; end end

for i=2:h-1 for j=2:w-1 ig(i-1,j-

1)=abs(igx(i,j)+abs(igy(i,j))); end end ig=uint8(ig); imshow(ig); end

Les relations : Egalisation d’histogramme :

( ) ( )

P :le nbre de bits Hc :histo cumule Nl :nbre de lignes

Nc :nbre de colonnes

Etirement d’histogramme :

( ) ( ( ) )

Inversion de la dynamique : ( ) ( ) ( )

La correction gamma :

( )

( )

Changement d’échelle : Interpolation du plus proche voisin par copie des pixels Interpolation bilinéaire : Plus complexe Offre de bien meilleur résultats

Filtrage et détection de contours :

Filtres linéaires :sous forme de convolution

Filtres non linéaires :une forme non linéaire

L ’u être=1

Effets de bords (solution) : -0 padding :le voisinage en dehors a des valeurs nulles.

Page 4: Traitement des images avec matlab

Résume TP : traitement d’images support physique Omar Bella

-duplication :le voisinage en dehors prend la valeur du pixel ’ p u p . -négliger les bords -effet miroir.

Passe-bas : -réduit le bruit -réduit les faibles détails ’ -crée du flou -tous les coefficients du noyau sont positifs

1) filtres moyenneurs(linéaire) : - v u ’u p v v -la somme des coeff=1 -plus d et grand plus le lissage est important

2)filtres gaussien (linéaires) : -meilleur lissage et une meilleure reduction du bruit -sigma>1 :rendre imade floue -sigma<1 :reduire le bruit -sigma est grand plus la cloche est large plus le fou sera marque

-avantages : L ’ u -filtre séparable

Filtre médian(non linéaire) : Filtre non-linéaire Elimine le bruit impulsionnel (aléatoire) Préserve ’ contour sans les rendre flous Peut-être applique itérativement

Inconvénients : a tendance a « déplacer » les frontières

Passe haut : Accentue les contours (rehaussement) Augmente les détails ’ Amplifie le bruit La noyau contient des coeff positifs et négatifs.

Le laplacien(rehaussement de contraste) :mesure la rapidité

des changements ’intensité sur le voisinage afin de rendre les contours visible

-la détection de contours :est une technique de réduction

’ ’ u u p forcement fermées formant les frontières significatives de ’

Les contours hautes frequ=> passe haut Masques de convolution des opérateurs pour image de gradient :prewitt-sobel-roberts-kirsch