# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  Pivoter une image d'un angle en Java

## tienne9

Bonjour,

J'ai fait une fonction qui prend en paramtre un angle alpha en degr et qui fait une rotation de l'image mais a ne fonctionne pas.



```

```

Quelqu'un pourrait-il me dire ce qu'il ne va pas ou me corriger ? 

Merci beaucoup d'avance.

Informations : PHD pour pixel en haut  droite et PBD pour pixel en bas  droite.

----------


## onylink

Si tu fais un plugin sous ImageJ, tu peux utiliser directement :


```
IJ.run(TonImage, "Rotate... ", "angle=TonAngle grid=1 interpolation=Bilinear");
```

----------


## tienne9

Bonjour,

En fait je ne sais mme pas ce qu'est ImageIJ, je l'ai publi l car c'est la seule partie qui a pour nom Image.

Le truc, c'est que c'est un mini-projet donc je dois tout programmer moi mme et pas utiliser des trucs tout fait.

Vous pouvez regarder ce qu'il a mon code s'il vous plat ?

----------


## onylink

Tu peux t'inspirer du code de milie:
http://www.developpez.net/forums/d52...tation-dimage/


Si tu fais un rotation sur ton image tu dois calcul au pralable la nouvelle taille de ton image. Ton problme vient peut-tre de l

----------


## tienne9

J'ai calcul les coordonnes sur point PHD et PBD, c'est ces points l qui me donnent la hauteur et la longueur et la nouvelle image. Et j'ai mme essay de mettre la nouvelle image de 30000 * 30000 et le problme reste le mme....

----------


## tienne9

J'avais invers le L et H dans ma boucle mais le problme reste le  mme j'avais j'ai dcid d'agrandir un peu plus l'image pour essayer et l a a fonctionn donc j'ai deux problmes.
Premier problme : le calcul de la nouvelle image.
Deuxime soucis regardez le rsultat :


Uploaded with ImageShack.us

Rotation de 10 :



Uploaded with ImageShack.us

----------


## tienne9

J'ai fait une autre fonction rcursive qui s'occupe de 90, 180 et 270 mais seul le 90 fonctionne.



```

```

Pouvez-vous m'aider s'il vous plat ?

----------


## pseudocode

Rgle n1 pour les viter les "trous" : on parcours les pixels de l'image FINALE et pour chaque pixel on cherche le pixel correspondant dans l'image ORIGINALE.

Inspire toi du code de Millie, cit plus haut.  :;):

----------


## tienne9

Le code de Millie pour moi est un total charabia, je ne comprends qu'une ligne sur deux sur les codes... Je dbute !

----------


## souviron34

x' =  x cos(a) + y sin(a)
y' = x sin(a) - y cos(a)


si a = -alpha

tu as l'quation partant d'un pixel final vers un pixel original..  ::): 

Tu pacoures simplement l'image finale et applique l'quation  chaque pixel pour avoir le pixel initial (et donc la valeur)  appliquer..

----------


## tienne9

Quelqu'un m'a dit qu'on pouvait multiplier l'image par n (entier) puis faire la rotation, et aprs rduire l'image. Quelle solution est la mieux ?

----------


## souviron34

> Quelqu'un m'a dit qu'on pouvait multiplier l'image par n (entier) puis faire la rotation, et aprs rduire l'image. Quelle solution est la mieux ?


Pourquoi faire simple quand on peut faire compliqu  ::aie:: 

Soit alpha l'angle de rotation

D'abord calculer la rotation des 4 coins et en dduire la dimension de l'image tourne

       x' = x cos(alpha) + y sin(alpha)
       y' = x sin(alpha) - y cos(alpha)

       d'o   xmin,xmax,ymin, ymax

       d'o Nlignes et NCol finales



```

```

----------


## tienne9

Au final j'ai chang d'avis, je dbute alors je vais me contenter de faire une moyenne  la fin des pixels voisins. Pour le moment j'essaie de faire l'image la plus petite possible et de centrer l'image mais j'ai vraiment du mal... C'est dur !

----------


## tienne9

Votre solution est efficace souviron34 ?
Y aura-t-il des trous ?

----------


## pseudocode

> Votre solution est efficace souviron34 ?
> Y aura-t-il des trous ?


Il n'y aura forcment aucun trou, vu qu'on parcourt tous les pixels de l'image finale. On ne va pas en oublier.  ::D:

----------


## tienne9

Oui mais vu qu'on part de l'image finale, il n'y aura pas de soucis ? Car si on lit le premier pixel par exemple, bah on va lire un pixel sur l'image de dpart qui n'existe pas non ?

----------


## tienne9

J'ai d faire une erreur dans la boucle, je n'arrive pas  comprendre comment vous faites. Vous pouvez regarder s'il vous plat ?
Merci
PS : Pour ce qui est de la nouvelle dimension tout est correct...



```

```

----------


## pseudocode

Il faut travailler en utilisant comme repre le centre de chaque image.

C'est a dire qu'il faut retrancher les coordonnes du centre avant de faire les rotations, puis rajouter les coordonnes du centre aprs pour accder aux pixels.



```

```

----------


## tienne9

Merci beaucoup infiniment.

----------

