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 :

reconstitution d'une image


Sujet :

2D Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut reconstitution d'une image
    J'ai un tableau data de type int[] dont chaque valeur represent un pixel.
    Je transforme mon tableau en byte[] avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    byte[] pixels = new byte[data.length*4];
    for(int i=0;i<data.length;i++){
                 byte[] aux = intToByteArray(data[i]);
    	for (int j = 0; j < aux.length; j++) {
    		pixels[4*i+j]=aux[j];
    	}
    }
     
    public static final byte[] intToByteArray(int value) {
    		return new byte[]{ 
    			(byte)(value >>> 24), (byte)(value >> 16 & 0xff), (byte)(value >> 8 & 0xff), (byte)(value & 0xff) };
     
    }
    Ensuite je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream is = new ByteArrayInputStream(pixels);
    Est ce qu'il y un probleme dans ce passage car l'image contruite n'est pas correcte

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Le chargement d'image depuis des inputstream suppose que l'image est dans un format d'image connu (gif, png, jpeg principalement), pas qu'il s'agit d'un tableua brut de pixels. Pour charger depuis une tableau de pixels utilise un MemoryImageSource.

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut
    Enfin quelqu'un me reponds ,Merci

    En effet j'utilise la librairie pixelmed pour afficher une image.
    Et pour faire, je dois passer un argument de type inputstream au classe SourceImage qui s'occupe de construire une image.

    Tu pense il y aura une methode pour faire ca?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je ne connais pas pixelmed, mais si il faut lui passe un inputstream, la première chose à voir c'est quel format celle librairie attends.

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut
    Juste une petite description...cette libraire est pour lire et afficher des images MRI de type .dcm

    Ce que je fais moi est de lire les pixels de cette image(je pense c'est bon) puis j'essaire de reconstituer cette image(je pense c'est ici est le problem)

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pourquoi tu n'evoie pas immédiatement le inputstream vers ton fichier dcm d'origine? Je pense que ta librairie ne s'attends pas à ce que tu aie décodé le dcm avant de lui passer.

  7. #7
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut
    Pour etre plus claire et que mon travail parait evident je dois explique mon projet...

    Mon projet est d'afficher 3 vues axial, sagittal et coronal du corps.
    Lire directement suffit pour un seul vue et pas pour les autres.

    Je dois mettre mes pixels dans un tableau pour pouvoir le voir dans les 2 autre vues.....j'espere que j'etais clair

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    non pas du tout
    dans tous les cas, il faut que l'inputstream soit au format requis par ta librairie. Ce que tu met là, ce sont des pixels bruts, c'est totatlement inutilisable pas la pluspart des code, car il y manque des infos capitales:
    • la largeur
    • la hauteur
    • le format d'encodage des pixels (niveau de gris, rvb, alpha, etc)

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Je ne suis pas un spécialiste de l'image, mais en jetant un coup d'oeil à l'api standard, je pense que tu devrais partir de javax.imageio.ImageIO pour obtenir un WritableRaster qui te permettrait de retourcher l'image. Le problème, est que je ne suis pas sûr que ImageIO supporte ton format d'image.

  10. #10
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    non pas du tout
    dans tous les cas, il faut que l'inputstream soit au format requis par ta librairie. Ce que tu met là, ce sont des pixels bruts, c'est totatlement inutilisable pas la pluspart des code, car il y manque des infos capitales:
    • la largeur
    • la hauteur
    • le format d'encodage des pixels (niveau de gris, rvb, alpha, etc)
    SourceImage(InputStream i, int w, int h, int depth)

    donc je passe la largeur et la hauteur ....et je pense le format est deja reconnu .... donc ca ne peux pas etre ca le probleme.

    C'est un projet pas facile mais mon prof ne comprends pas ca.....

  11. #11
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut
    voila ici un example d'entree et sortie de mon application ... il y vraiement quelque chose bizard.
    Images attachées Images attachées   

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    *bizzare

    Vu la tête de la sortie, deux supposition. Si l'image est lue de haut en bas et de gauche à droite dans ton format, alors tu extrait tes données beaucoup trop tot, tu as donc un gros blanc avant le début de l'image.

    dans le cas contraire, c'est que tu les lit trop tard. dans tous les cas ca a l'air d'un problème d'offset de tes données par rapport à ta source.

  13. #13
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    *bizzare

    Vu la tête de la sortie, deux supposition. Si l'image est lue de haut en bas et de gauche à droite dans ton format, alors tu extrait tes données beaucoup trop tot, tu as donc un gros blanc avant le début de l'image.

    dans le cas contraire, c'est que tu les lit trop tard. dans tous les cas ca a l'air d'un problème d'offset de tes données par rapport à ta source.
    J'ai essaye mais ca marche pas...

Discussions similaires

  1. Reconstitution d'une image compressée avec un arbre
    Par fab13 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 28/03/2014, 16h10
  2. reconstitution d'une image a partir d'un tableau de bytes
    Par guian dans le forum Entrée/Sortie
    Réponses: 17
    Dernier message: 04/12/2008, 16h54
  3. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  4. Reconstitution d'une image
    Par Fred677 dans le forum Images
    Réponses: 1
    Dernier message: 17/10/2007, 18h33
  5. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11

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