Transformée en cosinus discrète (DCT) d'une image

Je travaille sur une fonction Matlab qui calcule la DCT (discrete cosine transform) d'une image. Je ne sais pas ce qui ne fonctionne pas dans mon code, mais j'ai eu une image de sortie avec le même numéro. Je veux utiliser cette formule pour mon DCT.

Des idées s'il vous plaît.

    function image_comp = dctII(image, b)
[h w] = size(image);
image = double(image) - 128;
block = zeros(b,b);
image_t=zeros(size(image));
for k=1:b:h
for l=1:b:w
image_t(k:k+b-1,l:l+b-1)= image(k:k+b-1,l:l+b-1);
for u=1:b
for v=1:b
if u == 0
Cu = 1/sqrt(2);
else
Cu = 1;
end
if v == 0
Cv = 1/sqrt(2);
else
Cv = 1;
end
Res_sum=0;
for x=1:b;
for y=1:b
Res_sum = Res_sum + ((image_t(x,y))*cos(((2*x)+1)*u*pi/(2*b))*cos(((2*y)+1)*v*pi/(2*b)));  
end
end
dct= (1/4)*Cu*Cv*Res_sum;
block(u,v) = dct;
end
end
image_comp(k:k+b-1,l:l+b-1)=block(u,v);
end
end
end
Vous code fonctionne avec la correction mentionnée ci-dessous. Mais je vous suggère de lire de boucles, sinon vous aurez des ennuis de travailler avec un grand nombre de données.

OriginalL'auteur user2827482 | 2013-09-29