1. 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
2. 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;
3. 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.
4. 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