Je suis en train de programmer un compresseur d'image et j'ai un problème avec ma DCT![]()
bloc_in[] est une matrice de 8*8 et la fonction retourne un entier à placer dans un tableau à l'indice k.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 struct s_dct dct(struct s_image bloc_in[],int k)//DCT { int x,y; struct s_dct bloc_out; bloc_out.bleu = bloc_out.rouge = bloc_out.vert = 0; for(x=0;x<8;x++) { for(y=0;y<8;y++) { bloc_out.bleu=bloc_out.bleu + (bloc_in[x*y].bleu*cos((((2*x)+1)*(bloc_in[k].x)*M_PI)/(16))*cos((((2*x)+1)*(bloc_in[k].y)*M_PI)/(16))); bloc_out.vert=bloc_out.vert + (bloc_in[x*y].vert*cos((((2*x)+1)*(bloc_in[k].x)*M_PI)/(16))*cos((((2*x)+1)*(bloc_in[k].y)*M_PI)/(16))); bloc_out.rouge=bloc_out.rouge + (bloc_in[x*y].rouge*cos((((2*x)+1)*(bloc_in[k].x)*M_PI)/(16))*cos((((2*x)+1)*(bloc_in[k].y)*M_PI)/(16))); } } bloc_out.bleu=0.25*C(bloc_in[k].x,bloc_in[k].y)*bloc_out.bleu;; bloc_out.vert=0.25*C(bloc_in[k].x,bloc_in[k].y)*bloc_out.vert; bloc_out.rouge=0.25*C(bloc_in[k].x,bloc_in[k].y)*bloc_out.rouge; return (bloc_out); }
Merci d'avance.
EDIT : la formule de la DCT ce trouve là : http://fr.wikipedia.org/wiki/Compression_JPEG
Les structure s_dct et s_imagecontiennent les coordonnées (x,y) d'un point dans une matrice "virtuelle" ainsi que la valeur des composante de couleur du point.
En fait j'envoie dans ma fonction un bloc de 8*8 "pixels" (bloc_in[]) et je voudrai qu'elle me retourne un entier que je place dans un tableau à l'indice k ca pour les trois couleur de la matrice avec derrier une boucle for pour remplire un tableau de la meme structure contenant les résultat de la DCT
Partager