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
| clear
lamda=2;n0=50;
Nfr=240; % numero du premier frame à convertir
nbfr=2; % nombre de frames à convertir
entree=fopen('foreman.qcif','r');
sortie=fopen('foreman230.dat','w');
fseek(entree,Nfr*99*384,0);
xprec=fread(entree,[176 144],'uchar');
for k_fr=1: nbfr
%k_fr
x=fread(entree,[176 144],'uchar');
yr=fread(entree,[88 72],'uchar');
yb=fread(entree,[88 72],'uchar');
[Ix,Iy]=gradient(x);
for i=1: 144
for j=1: 176
[Ix,Iy]=gradient(x);
It = x - xprec ;
vx(i,j)= 0;
vy(i,j)= 0;
end
end
xprec=x;
end
n=1;
while(n<n0)
for k_fr=1: nbfr
for i=1: 144
for j=1: 176
vxb= 1/4*(vx(j-1,i)+vx(j+1,i)+vx(j,i-1)+vx(j,i+1));
vyb= 1/4*(vy(j-1,i)+vy(j+1,i)+vy(j,i-1)+vy(j,i+1));
alpha=lamda*(x*vxb+y*vyb+It)/(1+lamda*((Ix*Ix)+(Iy*Iy)));
vx(i,j)=vxb-alpha*Ix;
vy(i,j)=vyb-alpha*Iy;
hold on;
h=quiver(i,j,vx,vy);
hold off;
end
end
k_fr=k_fr+1;
end
n=n+1;
end
fclose('all'); |
Partager