Rotation d'une image

bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 - 17 janv. 2006 à 11:49
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012 - 17 janv. 2006 à 12:11
bonjour

en fait j'ai un petit pb, je dois rendre en devoir demain et il me reste une petite question que je n'arrive pas à résoudre.



j'ai définit une structure pixel(r,v,b) et une structure image avec un
tableau à deux dimensions et le largeur,la hauteur de l'image et le
nombre maximum de couleurs.



const int MAX=2000;

const int max=255;



struct pixel{

int rouge;

int vert;

int bleu;

};



struct image{

pixel matrice[MAX][MAX];

int hauteur;

int largeur;

int max;

};



et j'ai fait une fonction pour pouvoir faire une rotation de l'image mais ça ne marche pas...

je sais que ce que j'ai fait n'est pas ce qu'il faut faire mais je ne vois pas comment faire

voila la fonction :



float conversion(int theta) //convertit l'angle qui est donné en degré en radian

{

float Pi=3.141592654;

float theta2;

theta2=(theta*Pi)/180;

return(theta2);

}



void rotation(image src,int theta,image & dest)

{

int i,j,h,l;

float theta2;

dest.max=src.max;

dest.largeur=src.largeur*2;

dest.hauteur=src.hauteur*2;

theta2=conversion(theta);





for(i=0;i<src.hauteur;i++)

for(j=0;j<src.largeur;j++)

for(h=0;h<dest.hauteur;h++)

for(l=0;l<dest.largeur;l++)

{

dest.matrice[h][l].rouge=src.matrice[i*cos(theta2)+j*sin(theta2)][j*cos(theta2)+i*sin(theta2)].rouge;

dest.matrice[h][l].vert=src.matrice[i*cos(theta2)+j*sin(theta2)][j*cos(theta2)+i*sin(theta2)].vert;

dest.matrice[h][l].bleu=src.matrice[i*cos(theta2)+j*sin(theta2)][j*cos(theta2)+i*sin(theta2)].bleu;

}

}

Merci à ceux qui voudrons bien me donner leur aide

2 réponses

bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 1
17 janv. 2006 à 11:55
J'ai oublié de préciser que l'image est au format pnm. Je sais pas si c'est important...
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
17 janv. 2006 à 12:11
Tout d'abord, évite de valider ta propre réponse car les autres risquent de croire que ton problème est résolu . Ensuite, je ne pense pas que le format de l'image soit important à ce stade du programme .

Pour ce qui est de ta méthode, je te dirais que je n'ai jamais fait de transformations d'image comme ça, mais par contre en troigonométrie complexe, tes formules marcheraient presque. La seule chose, si je ne m'abuse, c'est que dans le premier membre ce serait i*cos(theta2) - j*sin(theta2) mais c'est la seul erreur de calcul que je vois. (j'ai pas vérifié si l'angle n'était pas compté à l'envers)

Après, le deuxième problème, c'est que tu risque de taper dans une coordonnée extèrieur à ton tableau de départ. Il faut que tu fasse attention à ça, et au pire que tu prévoit un tableau d'arrivée plus grand que celui de départ avec un offset sur tes coordonnées pour que les milieux correspondent !

<hr size="2" width="100%"> Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">
0
Rejoignez-nous