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

Traitement d'images Discussion :

dessiner des cercles sur une image avec java


Sujet :

Traitement d'images

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Points : 41
    Points
    41
    Par défaut dessiner des cercles sur une image avec java
    Bonjour tout le monde, dans mon projet, je veux délimiter les couronnes d'arbres ans une image haute résolution en niveaux de gris avec java.
    j'ai identifié les sommets des arbres et je veux par la suite déssiner des cercles initiales autour de chaque sommet et ensuite faire apparier le cercle avec le contour réel de l'arbre.
    je trouve des difficultés à dessiner les cercles, y'a t-il quelqu'un qui peut m'aider?
    Merci infiniment

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    c'est quoi des "cercles initiales" ?

    Sinon, où est exactement ton problème ?
    - tu as des problème pour faire un cercle ? Si c'est ça, avec ton rayon et le centre du cercle, tu détermines un nombre de points à tracer et tu utilises les bons vieux sinus et cosinus.
    - tu as un problème d'affichage à proprement parlé ? Dans ce cas c'est pas un problème de traitement d'images, mais plutôt de Java si tu utilises Java2D ou d'OpenGL si tu utilises JOGL ou l'une des nombreuses librairies OpenGL pour Java.

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    autre hypothèse : ce que tu appelles des cercles initiaux sont une très grossière approximation de ta couronne d'abres, et tu veux la calculer au plus fin.

    Alors regarde pour "Snake" sur ce forum (et pseudocode a même fourni le (vrai ) code

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Points : 41
    Points
    41
    Par défaut
    avec ton rayon et le centre du cercle, tu détermines un nombre de points à tracer et tu utilises les bons vieux sinus et cosinus.
    Merci pour répondre est ce que tu peux me réexpliquer Merci encore

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    tu souhaites tracer un cercle => tu as besoin des coordonnées du centre (Cx, Cy) et du rayon R.
    Tu choisis arbitrairement un nombre de points pour tracer le cercle.
    Pour Theta = 0 à 360 par incrément de '360 / nbPoints', tu calcules le point du cercle pour l'angle Theta. Pour cela, tu as besoins de tes bonnes vieilles formule de trigo de troisième.
    Par exemple, tu obtiendras pour :
    - Théta = 0 => (Cx+R, Cy).
    - Théta = 90 => (Cx, Cy+R).
    - Théta = 180 => (Cx-R, Cy).
    - ...

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Heu... Pourquoi ne pas utiliser les méthodes Java pour tracer les primitives ? Votre image n'est pas un format Java standard (Graphics2D) ?

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Points : 41
    Points
    41
    Par défaut
    Bonjour pseudocode , je travaille avec BufferedImage
    pour afficher mon image, j'utilise le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	           	JFrame f = new JFrame("Load Image Sample");
     
    	        	      f.addWindowListener(new WindowAdapter(){
    	        	          public void windowClosing(WindowEvent e) {
    	        	              System.exit(0);
    	        	          }
    	        	      });
    	        	      f.add(new Afficherimage(bufferedimage));
     
    	        	      f.pack();
    	        	      f.setVisible(true);
    aidez moi merci

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Graphics2D g2d = bufferedimage.createGraphics();
     
    Ellipse2D circle1 = new Ellipse2D.Double(10,10,80,80);
    g2d.draw(circle1);
     
    Ellipse2D circle2 = new Ellipse2D.Double(110,50,80,80);
    g2d.draw(circle2);
     
    /* ... */

  9. #9
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut
    Bonjour,
    Envoyé par Toto13
    Bonjour,

    tu souhaites tracer un cercle => tu as besoin des coordonnées du centre (Cx, Cy) et du rayon R.
    Tu choisis arbitrairement un nombre de points pour tracer le cercle.
    Pour Theta = 0 à 360 par incrément de '360 / nbPoints', tu calcules le point du cercle pour l'angle Theta. Pour cela, tu as besoins de tes bonnes vieilles formule de trigo de troisième.

    C'est exactement ce que je veux faire, ça fait des heures que j'essais de trouver les formules pour discrétiser les points d'un cercle en ayant les coordonnées du centre (Cx,Cy), le rayon et le pas (360/nbPoint).
    Par exemple, tu obtiendras pour :
    - Théta = 0 => (Cx+R, Cy).
    - Théta = 90 => (Cx, Cy+R).
    - Théta = 180 => (Cx-R, Cy).
    - ...

    Ici ce sont des "cas particuliers", ce qui m'intéresse c'est la formule générale c-à-d pour Théta quelconque.
    J'ai essayé de revenir aux vieilles formules trigonométriques de troisième comme vous dites... ça remonte à loin
    Je pense que j'ai trouvé mais je n'en suis pas trés sûr, j'aurai besoin de votre confirmation ou éventuellement d'une correction.
    Pour un angle quelconque Théta :
    (X,Y) = (Cx+ R*Cos(Théta) , Cy+ R*Sin(Théta)) ?
    car Sin(Théta)=X/R, Cos(Théta)=Y/R (Cas où le centre est au milieu du repère)

    Je peux foncer?

  10. #10
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    oui, c'est cela...

  11. #11
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Bonjour,

    oui, c'est cela...
    Bonjour,c'est ce que j'ai fais et cela en remplissant un vecteur de points (contenant les coordonnées des points du cercle),Ensuite j'ai affiché le résultat,et là surprise :
    Tous les points affichés appartiennenet bien au cercle mais ils ne sont pas equi-distant!ils sont regroupés deux à deux ou trois à trois selon la valeur que je donne au Pas.
    Est ce normal?

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par b_reda31 Voir le message
    Tous les points affichés appartiennenet bien au cercle mais ils ne sont pas equi-distant!ils sont regroupés deux à deux ou trois à trois selon la valeur que je donne au Pas.
    Est ce normal?
    Ta variable "théta", tu l'as bien fait varier uniformément entre 0 et 2*PI (et pas entre 0 et 360°) ?

  13. #13
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Ta variable "théta", tu l'as bien fait varier uniformément entre 0 et 2*PI (et pas entre 0 et 360°) ?
    C'était plutôt entre 0 et 360 que j'ai fais varier la variable Théta
    Je travaillé en degré,je ne savais pas qu'il fallait convertir en radian.
    Merci à vous PseudoCode le problème est réglé.

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

Discussions similaires

  1. [three.js] Mixer des filtres sur une image
    Par scandinave dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 19/08/2014, 19h38
  2. Dessiner un cercle sur une image
    Par 7ider5 dans le forum Débuter
    Réponses: 4
    Dernier message: 26/04/2011, 05h07
  3. Placer des images sur une image avec un JFrame
    Par blackhock dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 28/06/2009, 18h31
  4. Dessiner des lignes sur une image
    Par g_barthe dans le forum wxPython
    Réponses: 2
    Dernier message: 10/10/2008, 11h29
  5. [Image]Dessiner des rectangles sur une image
    Par navona dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 09/03/2006, 22h51

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