/* TP 5 */ /* PARTIE 1 */ clf() U=double(imread('/Users/gghis/Desktop/A_aa_MT12_TP_Sci/Images/mandrill.bmp')); scf(1) imshow(mat2gray(U)) V=U; W=U; /* Q1 */ V(1:50,1:50)=zeros(50,50) clf() scf(2) subplot(2,2,1) imshow(mat2gray(U)) subplot(2,2,2) imshow(mat2gray(V)) W(1:50,1:50)=ones(50,50)*54.5; scf(3) imshow(mat2gray(W)) /* Partie 2 : Bruiter une image */ /* Q 2 */ /* Q 2.(a)*/ function res=bruitgaus(U,sig) Si=size(U) m=Si(1) n=Si(2) res=U + grand(m, n, "nor", 0, sig); endfunction sig=100 Ub=bruitgaus(U,sig); scf(4) imshow(mat2gray(Ub)) /* Q 2.(b)*/ function Uimp=bruit_imp(U,p) [N,M]=size(U) L=rand(N,M) I=rand(N,M); Uimp = 255*L.*(I
=p/100).*U; endfunction p=20 Uimp=bruit_imp(U,p) ; scf(5) imshow(mat2gray(Uimp)) /* Partie 3 : `filtre moyenne et médian" */ /* Q 3 */ //f=10; // f=80; f=160; [N,M]=size(U); Ubig=zeros(N+(2*f),M+(2*f)); Ubig(f+1:N+f,f+1:M+f)=U; scf(6) imshow(mat2gray(Ubig)) /* Q4 */ /* Q4 (a) Moyenne des voisins */ function res=moyenne(U,f) [N,M]=size(U); Ubig=zeros(N+2*f,M+2*f); Ubig(f+1:N+f,f+1:M+f)=U; Utemp=zeros(N+2*f,M+2*f); for i=f+1:N+f for j=f+1:M+f Utemp(i,j)= mean(Ubig(i-f:i+f,j-f:j+f)); end end res=Utemp(f+1:f+N,f+1:f+M) endfunction //f=10, 30 pas terrible f=2 sig=30 Ub=bruitgaus(U,sig); Ub_DeBruit_Moy=moyenne(Ub,f); scf(7) subplot(1,3,1) imshow(mat2gray(U)) title('Image originale') subplot(1,3,2) imshow(mat2gray(Ub)) title('Image bruitée') subplot(1,3,3) imshow(mat2gray(Ub_DeBruit_Moy)) title('Image débruitée') /* Q4 (b) Mediane des voisins */ function res=mediane(U,f) [N,M]=size(U); Ubig=zeros(N+2*f,M+2*f); Ubig(f+1:N+f,f+1:M+f)=U; Utemp=zeros(N+2*f,M+2*f); for i=f+1:N+f for j=f+1:M+f Utemp(i,j)= median(Ubig(i-f:i+f,j-f:j+f)); end end res=Utemp(f+1:f+N,f+1:f+M); endfunction Uimp=bruit_imp(U,30); Uimp_debruite_median=mediane(U,2); scf(8) subplot(1,3,1) imshow(mat2gray(U)) title('Image originale') subplot(1,3,2) imshow(mat2gray(Uimp)) title('Image bruitée p') subplot(1,3,3) imshow(mat2gray(Uimp_debruite_median)) title('Image débruitée mediane') /* Partie 4 : détecter les contours */ /* Q 5 */ function res=contour(U,f) [N,M]=size(U); Ubig=zeros(N+2*f,M+2*f); Ubig(f+1:N+f,f+1:M+f)=U; Utemp=zeros(N+2*f,M+2*f); for i=f+1:N+f for j=f+1:M+f Utemp(i,j)= sqrt((Ubig(i+1,j)-Ubig(i-1,j))^2+(Ubig(i,j+1)-Ubig(i,j-1))^2)/2; end end res=Utemp(f+1:f+N,f+1:f+M); endfunction U_cont=contour(U,1); scf() subplot(1,2,1) imshow(mat2gray(U)) title('Image originale') subplot(1,2,2) imshow(mat2gray(U_cont)) title('Image contour')