IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

[JAI] Rotation floue


Sujet :

2D Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Points : 29
    Points
    29
    Par défaut [JAI] Rotation floue
    Bonjour,

    J'utilise JAI pour le traitement d'image dans mon applet. Mon problème est que lorsque j'effectue plusieurs rotations sur une même image, celle-ci devient de plus en plus floue.

    Pour information je ne fais que des rotation de 90° ou -90°. Quelqu'un peut-il m'aider à résoudre ce problème svp? Voici mon code pour les rotations:

    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
     
    /**
         * Execute le traitement d'image->Rotate
         * @return
         */
        protected BufferedImage doViewControlRotate()
        {
            PlanarImage input = this.bookView.get(this.bookIndex);
            float angle = (float)Math.toRadians(this.angleRotation); // angle de rotation
            float centerX = this.viewWidth/2f; // abscisse du centre
            float centerY = this.viewHeight/2f; // ordonnée du centre
            ParameterBlock param = new ParameterBlock();
            param.addSource(input);
            param.add(centerX);
            param.add(centerY);
            param.add(angle);
            param.add(new InterpolationBilinear());
            PlanarImage scaledImage = JAI.create("rotate", param); // rotation
     
            this.bookView.set(this.bookIndex, scaledImage); // remplacement de l'ancienne numérisation par la nouvelle après rotation
     
            return scaledImage.getAsBufferedImage(); // renvoi de la numérisation après rotation pour l'afficher à l'écran
        }
    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 89
    Points
    89
    Par défaut
    Salut,

    As-tu essayé avec une interpolation BICUBIC ou BICUBIC2 à la place d'une bilinear?
    (c'est une piste à laquelle je pense mais je ne sais pas si ça donnera vraiment de meilleurs résultats.)

    Ou alors..., mais je ne sais pas si c'est compatible avec ton application, plutot qu'appliquer la rotation chaque fois sur l'image transformée, le faire sur l'image initiale que tu conserverais qqpart bien au chaud en mémoire...
    Dans ce cas tu évites de déteriorer la qualité de ton image à chaque rotation si elles sont nombreuses.

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 857
    Points
    22 857
    Billets dans le blog
    51
    Par défaut
    Cela me semble normal surtout si en prime le centre de rotation se trouve entre deux pixels. As-tu egalement essaye sans JAI pour voir si uniquement avec Java2D (c'est assez simple a code) le probleme aparaissait ?

    Mieux vaut probablement faire comme pssst te l'a suggere : appliquer l'angle de rotation finale sur l'image source plutot qu'un seul 90° sur une image intermediaire (qui aura elle-meme deja ete degradee).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    J'ai résolu mon problème en utilisant la fonction JAI "transpose" à la place de "rotate".

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 89
    Points
    89
    Par défaut
    Salut roxor,

    Je n'ai vraiment pas eu le temps de me pencher sur ces petits problèmes. désolé.
    Néanmoins, un truc me chiffone (mais je me trompe p-e car je dis ca de tete sans avoir vérifié...)
    La fonction transpose ne réalise-t'elle pas des opérations de symétrie???
    Parce que dans ce cas tu ne réalises pas vraiment une rotation même si ca y ressemble...

    Ou alors pour obtenir le meme résultat qu'une rotation il te faudrait faire 2transpose (a vue d'oeil) ... non? (genre pour une rotation de 180°, faire ce que chez sun ils appellent un flip_vertical puis un flip_horizontal (ou un truc du style en tt cas)).

    Dans ce cas l'opération devient relativement gourmande je pense...

    Ou alors j me trompe

    A+++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de rotation
    Par Francky033 dans le forum DirectX
    Réponses: 1
    Dernier message: 17/07/2003, 16h38
  2. Rotation de Bitmap -> ScanLine
    Par jujuesteban dans le forum Langage
    Réponses: 7
    Dernier message: 03/07/2003, 15h11
  3. Rotation d'un bouton ?
    Par ken_survivant dans le forum Composants
    Réponses: 3
    Dernier message: 01/04/2003, 18h16
  4. matrice et rotation
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/12/2002, 17h59
  5. algo : rotation d'objet 3d
    Par numeror dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 19/08/2002, 22h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo