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 :

Histogramme Bilineaire d'une image


Sujet :

2D Java

  1. #61
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Avec Graphics.drawString( string, x, y), tu peux écrire ce que tu veux.

    Il y a des exemples dans l'une des discussions que je t'avais données au début.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  2. #62
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je vais commencer par le plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void paintComponent(Graphics g) 
    	{  
    	        addMouseListener(this); 
    	        addMouseMotionListener(this);
    Tu te rends compte que tu enregistres des écouteurs d'évenements dans une méthode destinée à dessiner le composant ? Une méthode appelée plusieurs fois, à chaque fois qu'il est nécessaire de dessiner le composant... tu vois ce où je veux en venir ?

    Le problème c'est que tous le reste du code est du même acabit : un affreux fatras de mélanges de trucs dans tous les sens et c'est horriblement fatiguant de ne serait-ce que le lire, alors le comprendre... sans parler du temps à passer. Du coup, ta question d'intégration, qui est vague en elle-même (intégrer comment, où, pour faire quoi ?), j'ai du mal à extrapoler ne serait-ce qu'une possibilité de le faire...
    Il faut absolument refactoriser, faire des classes séparées, avec des traitements (méthodes) séparées, isolées, sans inter-dépendances spaghettis... après, je pourrais peut-être y entrevoir une possibilité d'intégration. Là, pour l'instant, c'est comme si tu avais ton mobilier en tas dans ta cour, et que tu me demandais d'y intégrer une plante verte.
    Ah, autre chose : je sais bien que (presque) tous les exemples d'interfaces graphiques, même la plupart des tutoriels ont l'habitude de proposer i'implémentation des interfaces d'écouteur d'événement dans la classe principale, ou une classe de groupement (genre un JPanel), mais il ne faut pas faire ça. Avant Java 8, il vaut mieux isoler le code dans des classes à part dédiées (interne éventuellement pour simplifier l'accès aux attributs de la classe principale), en particulier quand on a beaucoup d'écouteurs, parce que ça devient illisible, ça donne des maux de tête, voire pire. Avec Java 8 et les expressions lambdas, on peut tirer le meilleur des 2 : ne pas faire plein de classes d'écouteur, avoir des méthodes sémantiques (métiers, fonctionnelles...) plutôt que techniques (du genre changeSeuil() au lieu de stateChange()), et ne pas avoir une ribambelles d'interfaces implémentées dans une classe, avec des dizaines de if ( e.getSource()== ... imbitables.

    [EDIT] j'oubiais un truc. A part lorsqu'on fait des composants personnalisés, il est la plupart du temps inutile d'utiliser MouseListener ou MouseMotionListener : il y a toujours des écouteurs spécialisés/adaptés plus simples (ActionListeenr, ListSelectionListener, ChangeListener...).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #63
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 185
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    Je reviens vers vous pour une dernière fois dans ce sujet. On m'a demandé de remplacer les 2 images avec quoi on calcule l'histogramme avec la position i et j d'une seul image et calculer l'histogramme à partir de celle ci du coup je mets à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int pixel = sImg.getRGB(i, j);
    				int gray = ((pixel >> 16) & 0xFF) >> 3;
     
    				int pixel2 = hImg.getRGB(i, j);
    				int gray2 = ((pixel2 >> 16) & 0xFF) >> 3;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int pixel = monImage.getRGB(i, 0);
    				int pixel2 = monImage.getRGB(0, j);
    pouvez vous corriger mon erreur parceque là appremment j'obtiens pas l'histogramme exact
    Le résultat doit être di j'ai une image toute noire et une bande rouge au milieu, l'histogramme doit avoir des valeurs au milieu (la position de la bande) et rien d'autres. Oui je sais que je dois pas faire de longues calcul dans paintComponent je vais modifier ça aussi
    Merci !

  4. #64
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je n'ai aucune idée de quoi tu parles et ça ne concerne pas Java tes questions, mais des problèmes d'algorithmie et de traitement d'images. Pose ces questions dans la rubrique dédiée (http://www.developpez.net/forums/f64...ment-d-images/ ou http://algo.developpez.com/). Quand tu sauras quoi faire en dehors de toute notion de langage, tu pourras essayer de le traduire en Java, et là, si tu as des difficultés tu pourras venir demander ici de l'aide.

    Tout ce que je peux dire, c'est qu'avant tu combinais les cinq bits de poids fort de la composante rouge du même pixel (s'entend aux mêmes coordonnées) de deux images différentes, et que maintenant (je suppose que tu n'a pas viré le traitement gray = ((pixel >> 16) & 0xFF) >> 3; contrairement à ce que ton code partiel semble indiquer) tu combines les cinq bits de poids fort de la première ligne et de la première colonne de pixels d'une même image, combinés 2 à 2 de manière à ce que la colonne et la ligne soit les mêmes. Si ton image est bordée de noir, je ne vois pas comment tu pourrais obtenir autre chose que du noir. En gros, tu ne traites par cette sélection que les pixels situés dans la bordure haute (j=0) et la bordure gauche (i=0). Tout le reste de l'image est ignoré. Ceci me semble douteux, mais comme je n'ai aucune idée de ce qu'est un histogramme bilinéraire d'une image, comme celui de deux d'ailleurs, je ne sais pas comment te dire ce que tu dois faire.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

Discussions similaires

  1. [2D/3D] [OpenGL] Histogramme 3D d'une image
    Par 686insomnia686 dans le forum Qt
    Réponses: 9
    Dernier message: 08/10/2013, 23h26
  2. [Débutant] histogramme logarithmique d'une image
    Par amal1410 dans le forum Images
    Réponses: 1
    Dernier message: 16/05/2013, 20h24
  3. histogramme vertical d'une image
    Par matrix2008 dans le forum Images
    Réponses: 5
    Dernier message: 13/12/2012, 10h49
  4. histogramme cumulé d'une image
    Par arsonlupo dans le forum Images
    Réponses: 1
    Dernier message: 02/06/2009, 20h01
  5. Réponses: 3
    Dernier message: 27/01/2005, 10h53

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