begin process at 2012 05 30 15:58:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Rotation image (matrice) ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Rotation image (matrice) ?

mardi 20 décembre 2005 à 14:09:58 | Rotation image (matrice) ?

albert0

Membre Club
Bonjour,

voilà, je suis sur un petit projet. Il consite a charger une image en .RAW (binaire) et de l'afficher sous diéfrente forme.

Donc, je charge cette image .RAW (128x128) je stock chaque octet dans un tableau de 128x128 (c est ma matrice)

Avec Gtk j'affiche donc mon ma matrice, et cella m'affiche mon image .raw

j'ai déja fait quelque truc, comme la symétrie (vertical,horizontal etc..)

mais je bloque sur la Rotation :S

je sais que pour faire une rotation il faut cette formule :

X' = cos(alpha) * X + (-sin(alpha) * Y);
X' = sin(alpha) * X + (cos(alpha) * Y);


mais je sais comment mettre ca en pratique .....

si quelqu'un peut me donner un coup de main?

merci
mardi 20 décembre 2005 à 17:45:19 | Re : Rotation image (matrice) ?

luhtor

Tu auras besoin d'une seconde matrice (c'est plus simple) pour stocker le résultat. Sinon je vois pas ou est le pb, tu prends chaques pixel de ton image, tu lui appliques la transformation, et tu stokes le point final dans la matrice résultat. Le pb est qu'il va rester des points blancs.

Donc peut etre qu'il vaut mieux prendre le pb dans le sens inverse. Tu prends chaque pixel de la matrice résultat, tu regardes quels pixels doit aller à cette place. Donc a partir de la formule, tu exprimes X et Y en fonction et X' et Y'. En fait ca revient a faire la rotation dans le sens inverse.

Bon en première approximation ca devrait aller. Pour avoir un meilleur résultat, comme X et Y ne seront pas des entiers, tu peux faire une interpolation linéaire.
mardi 20 décembre 2005 à 19:50:53 | Re : Rotation image (matrice) ?

albert0

Membre Club
d'abord merci beacoup d'aovoir répondu,

J'ai pensé faire comme tu m'as dit , mais le probleme, c'est que quand je calcul X' ou Y' je me retrouve avec des chiffre negatife :S

donc je comprend pas comment stocker ce nouveau pt dans ma matrice resultat

Dison que j'ai ma matrice  5 x 5 avec mon dessin (tres grossierement c ets jste pour s imaginer)


   1 2 3 4 5
1 XOOXX
2 OXXOX
3 OXXOX
4 XOOXX
5 XXXXX

et Ma Matrice Resultat

   1 2 3 4 5
1 XXXXX
2 XXXXX
3 XXXXX
4 XXXXX
5 XXXXX

Donc je prend mon pixel qui se trouve dans 1,1

X' = cos(90) * 1 + (-sin(90) * 1);
Y' = sin(90) * 1 + (cos(90) * 1);

X' = -1
Y' = 1

la comment je fait pour mettre ce point puisque il sera en -1 ?


merci

mercredi 21 décembre 2005 à 09:51:38 | Re : Rotation image (matrice) ?

buno

Administrateur CodeS-SourceS
Attention... Avec les transformations géométriques, tu ne sais jamais si le point transformé appartient à l'image finale. Du coup, tu auras des zones "indéfinies". Le mieux c'est de partir des points de l'image résultat et d'appliquer la transformation inverse.

Dans ton cas, il faut vérifier si ton point calculé appartient bien à l'image

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mercredi 21 décembre 2005 à 10:20:36 | Re : Rotation image (matrice) ?

luhtor

Oui bruno, ce que j'avais dis en gros :), mais quand tu fais une rotation ton image résultat doit etre plus grosse puisque justement elle est tournée :). La hauteur de ton image doit etre égale à la hauteur de l'ancienne plus 2 fois sin(angle_de_rotation) * longueur de l'ancienne. Pour la nouvelle largeur je te laisse faire.
mercredi 21 décembre 2005 à 19:07:28 | Re : Rotation image (matrice) ?

albert0

Membre Club
aaaaaa

attand la je commance a plus rien comprendre :S

comment ca elle devien 2 fois plus grosse? je la tourne l'image je vois pas commetn elle peut grandire :S


et oui je sais si je fait comme j'avais moi en cherchant X' et Y' j'auai des blanc

mais pour trouve X je vais devoir faire la matrice inverse et la je sais pas comment on fait---





mercredi 21 décembre 2005 à 20:38:41 | Re : Rotation image (matrice) ?

buno

Administrateur CodeS-SourceS
La matrice inverse d'une rotation d'angle alpha est tout simplement la matrice de rotation d'angle -alpha

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mercredi 21 décembre 2005 à 21:04:10 | Re : Rotation image (matrice) ?

albert0

Membre Club
ok,ok merci,

donc maintenant que j'ai les X et Y a paritr des X' et Y'

je fait un truc du style
 
    mCosinus := Cos(-90.0);
     mSinus :=     Sin(-90.0);

      //Modif Matrice
      loop de la hauteur de ma matrice //128x128
        loop de la longeur de ma matrice //128x128
         
           X := J*mCosinus + I*(-mSinus);
           Y := J*Msinus +   I*Mcosinus;   
          
    MatriceResultat(I,J):= MatriceImage(X,Y);

end loop;
end looP;

Mais la le probleme c est encore que j'aurai surement des X ou Y négatif :(
et donc je fait comment pour acceder a cette case negative? (j ai essayé de faire la valeur absolu mais au final ma matrice resultat est identique a l'original...)


merci

jeudi 22 décembre 2005 à 17:39:54 | Re : Rotation image (matrice) ?

buno

Administrateur CodeS-SourceS
Laisse tomber les valeurs "incorrectes". Il faut un test: - si coordonnées obtenues appartiennent à l'image alors prendre la couleur correspondante - sinon, mettre en noir par exemple Buno
jeudi 12 janvier 2006 à 21:52:18 | Re : Rotation image (matrice) ?

albert0

Membre Club
Oki,

bon voila j'ai reussi a faire ma rotation, et maitenant je comprend pourquoi il fallait agrandire la Matrice resultat :)
"
La hauteur de ton image doit etre égale à la hauteur de l'ancienne plus 2 fois sin(angle_de_rotation) * longueur de l'ancienne"

j'ai essayé, mais ca me donne beacoup trop haut

comment as-tu fait pour savoir de combien agrandir?


merci



Cette discussion est classée dans : image, alpha, rotation, matrice, raw


Répondre à ce message

Sujets en rapport avec ce message

rotation d'une image PGM ou RAW [ par zorillamarc ] je cherche à coder une fonction me permettant de faire tourner une image PGM ou RAW d'un angle souhaité. par avance merci,Marc Zorilla rotation d'une image [ par David ] Rotation d'une image [ par xleureaud ] J'aimerai faire tourner une image par rapport a son centre avec C++Builder image centrée [ par tdeco ] SALUT je cherche à centrer une image qui est sous forme de matrice (fichier txt).cette matrice (suite de 1 et 0) de dimension 16*16 represente un chi DirectX 9: Probleme pour effectuer deux transformations en même temps (rotation et ranslation) [ par Overwrite ] Je veux effectuer une translation et une rotation en même temps sur un triangle tt bete mais ca fonctionne pas. DirectX n'execute que la rotation : / Appliquer une matrice 3*3 à image en C++ [ par dj roupe ] Je dispose d'une image définie par un ensemble de pixels et je souhaite appliquer une matrice homogène 3*3 à cette image et je ne sais pas comment fai Ouverture d'une image .bmp en tant que matrice [ par jpout ] Bonjour,Je cherche à ouvrir une image (*bmp ou *.jpg) en tant que simple matrice afin de pouvoir travailler plus facilement sur les pixels. Je cherche aide en c++ sur conversion d'un image bmp en matrice [ par beide ] Je suis étudiant en IUT, je n'ai jammais utilisé visual C++. <p class="MsoNormal" styl recuperer la matrice qui correspond a une image JPG ou BMP [ par ouafaa ] Bonjour a tout le monde je souhaite savoir comment faire pour recuperer la matrice d'une image BMP ou JPG .j'utilise vtk com Petite question sur la "rotation" [ par albert0 ] Bonjour, Voila, j'ai codé un petit algo qui effectue la rotation d'un angle donné. Dison que j'ai une image de 256x256 pixels si je fait la rot


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,566 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales