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