Université De Galatasaray
12 Temmuz 2007
Université de Galatasaray
Genie Informatique
Fit IV
01.04.2002
TRAITEMENT DU SIGNAL
PROJET TS-1
- Une mosaïque d’images -
M u r a t G e ç k a l a n 9 5 4 0 1 0 6 8
P r o f : V l a d i m i r R a d e v s k i
Le but de Projet TS-1 est faire une mosaïqe d’images. Pour ce projet je choisi image31.jpg .
Premiérement on fermet toutes les fenetres et effacer les variables, aprés on lit l’image image31.jpg avec la fonction imread. Et puis, on transforme en grayscale de taille 600 x 800 :
>>clear, close all;
>>I=imread(’image31.jpg’);
>>I=rgb2gray(I);
>>I=imresize(I,[600 800 ],’bilinear’);
>>imshow(I)
Dans ce moment-la lÂ’image devenue comme :
Maintenent, il faut la convertir en double et puis on améliore sa contraste avec la fonction imadjust en distribuant les valeurs entre 0 et la valeur maximum de I vers les valeurs entre 0 et 1. Ensuite, on essai de deviner le fond avec une approximation. On prend la valeur moyen de chaque bloc de taille 30×40 afin dÂ’obtenir une matrice qui sera le fond approximé de lÂ’image:
>>I=double(I)/255;
>>I=imadjust(I,[0 max(I(:))],[0 1]);
>>X=blkproc(I,[30 40],’mean(x(:))’);
Etpuis on lit les images de mosaïque avec ce algoritme et on transforme tous les images en grayscale:
>>for i=1:36
>> PI{i}=imread(strcat(’image’,int2str(i),’.jpg’));
>> PI{i}=rgb2gray(PI{i});
>>end
Maintenant pour construire le mosaïque on utilise cette algoritme :
>>V1=size(X); %% V1 est une vecteur. V1=[20 20]
>>V2=size(PI); %% V2 est une vecteur. V2=[1 36]
>>n=-1; %% Pour commencer des lÂ’images en 0.
>>nim=V2(2); %% Ici nim=36
>> a=-30; %% Pour commencer de 0
>> b=-40; %% Pour commencer de 0
>> for i=1:V1(1) %% V1(1)=20
>> a=a+30; %% Pour avancer 30 pixel
>> for j=1:V1(2) %% V1(2)=20
>> n=n+1; %% Pour avancer dans la
table PI
>> im=PI{1+mod(n,nim)}; %% On met la valeur
de image dans
le table PI Ã im
>> im=imresize(im,[30 40]); %% On
redimansionne
ces images
>> im=double(im)/255;
>> m=mean(im(:));
>> b=mod((b+40),800);
>> d=X(i,j)-m; %% on calcule la
distance entre im
et PI(i)
>> for k=1:30
>> for l=1:40
>>
>> if d<0 M(k+a,l+b)=(im(k,l)-abs(d));
%% Si la moyenne de
PI(i)>m, on
soustrait la
distance pour
egalise
>> else if d>0 M(k+a,l+b)=(im(k,l)+d);
%% Si la moyenne de
PI(i)
additionne la
distance pour
egalise
>> else M(k+a,l+b)=im(k,l);
%% Si la moyenne de
PI(i)=m
>> end
>> end
>> end
>> end
>> end
>> end
>> imshow(M);
Dans ce moment-la on construit lÂ’image M:
En fin, on a obtenu ce qu’on voulait. Mais, quand-meme, on peut encore faire quelques opérations sur l’image, si on fait addition de cet image avec l’original de l’image:
>>M2=(I+M)/2;
>>figure, imshow(M2)
Dans ce moment-la lÂ’image M devenue comme :
Mais, au lieu de M2=(I+M)/2; si on ecrire M2=(5*I+7*M)/2; dans ce cas lÂ’image est plus efficace:
>>M2=(5*I+2*M)/7;
>>figure, imshow(M2)
Dans ce moment-la lÂ’image M devenue comme :
Kategori: Genel kültür