1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
| clear all
close all
fileinfo = aviinfo('b3e1-1.avi')
nf=fileinfo.NumFrames; % nombre d'images dans le film
nphoto=input('Combien de particules voulez vous suivre? : ')
H=25; % H : hauteur de l'image extraite
W=H; % W : largeur de l'image extraite
Hs2=round(H/2); % demi-hauteur de l'image extraite
Ws2=round(W/2); % demi-largeur de l'image extraite
% détermination manuelle de l'intensité de fond
mov=aviread('b3e1-1.avi',1);
m=double(mov.cdata(:,:)); % chargement de la première image du film
figure(1)
imagesc(m)
colormap(gray)
'cliquez sur le fond de l''image puis appuyez sur Enter'
[x2,y2]=ginput;
x2=round(x2);
y2=round(y2);
fond=m(y2,x2);
figure(1)
colormap(gray)
% méthode du centroïd : calcul du barycentre de la distribution d'intensité de l'image d'indice k
% au voisinage de la position de la particule
Dx=[];
X=[];
Dy=[];
Y=[];
for n=1:nphoto
% sélection de la particule à traquer sur l'image 1
mov=aviread('b3e1-1.avi',1);
m1=double(mov.cdata(:,:)); % chargement de la première image du film
figure(1)
imagesc(m1)
colormap(gray)
'cliquez sur la particule a suivre puis appuyez sur Enter'
[x,y]=ginput;
hold on
plot(x,y,'w.')
for k=1:nf
k
mov=aviread('b3e1-1.avi',k); % chargement de la première image du film
m=double(mov.cdata(:,:));
imagesc(m(round(y)-Hs2:round(y)+Hs2,round(x)-Ws2:round(x)+Ws2)) % Affiche une image (objet graphique Image) avec interpolation des couleurs
colorbar
hold on
% seuillage de l'image
% fond=fond/1.1;
m=255*((m-fond/fond));
% calcul des coordonnées (Meanx,Meany) du barycentre de la région d'intérêt de m de largeur W, le
% hauteur H, centrée autour de la bille
%%%%%%%%%
X=[X Meanx];
x=Meanx; % nouvelle abscisse de la particule
Y=[Y Meany];
y=Meany; % nouvelle ordonnée de la particule
% tracé du barycentre de la distribution d'intensité seuillée autour de
% la particule
figure(2)
plot(Meanx-(round(x)-Ws2)+1,Meany-(round(y)-Hs2)+1,'ro')
pause
hold off
% tracé de la trajectoire du barycentre sur l'image m
figure(1)
hold on
imagesc(m)
colormap(gray)
hold off
plot(X,Y,'r.')
% if val ~=1
% val=input('Erreur, voulez vous conserver cette image: 1 pour oui /2 pour n')
% end
end
%Conservation de l'image
valider=input('Voulez vous conserver cette image: oui/non :','s');
while strcmp(valider,'oui|non')
valider=input('Voulez vous conserver cette image: oui/non :','s');
end
if strcmp(valider,'oui')
disp(['Etude de l''image suivante, N° ',num2str(n)]);
end
if strcmp(valider,'non')
n=n-1;
disp('Cette image n''a pas été conservée')
end
end
return |
Partager