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

C++Builder Discussion :

Le format analyze7.5


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut Le format analyze7.5
    voila, je suis débutant et j'arrive pas a lire un fichier de type analyze7.5;il est constitué de 2 fichier,un header et le fichier image.
    j'arrive pas a reccuperé kelke données a partir du fichier entete.
    l'entete contient:

    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
    24
     
    Filename:'301_5.hdr'
    FileModDate:'08-sep-2004 11:36:22'
    HdrFileSize:348
    ImgFileSize:2.3593e+006
    Format:'Analyze'
    FormatVersion:'7.5'
    Width:256
    Height:256
    BitDepth:16
    ColorType:'grayscale'
    ByteOrder:'ieee-le'
    HdrDataType:'dsr'
    DatabaseName:/tmp/tp174490.hdr'
    Extents:0
    SessionError:0
    Regular:true
    Dimensions:[256 256 18 1]
    VoxelUnits:'mm'
    CalibrationUnits:"
    .
    .
    .
    etc

    je veux que vous m'aidiez a lire le fichier et reccuperé les données dimentions et BitDepth et les mettre dans des variables; genre:
    pour les dimentions: a=256
    b=256
    c=18
    et pour BitDepth: d=16


    j'ai trouvé le program tout fait avec le language C mé comme je travail sur c++ builder et je suis en plus un debutant j'ai pas pu le convertir.

    voila le lien du program;il est en pdf.
    http://www.mayo.edu/bir/PDF/ANALYZE75.pdf

    et voila un fichier header pour tester
    http://rapidshare.com/files/48984187/301_5.hdr.html

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Tout est écris dans le PDF que tu mentionnes. Tu as même une belle structure qui explique la taille de chaque éléments avec l'offset:
    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
    24
    struct image_dimension
    {                       /* off + size */
        short int dim[8];   /* 0 + 16 */
        short int unused8;  /* 16 + 2 */
        short int unused9;  /* 18 + 2 */
        short int unused10; /* 20 + 2 */
        short int unused11; /* 22 + 2 */
        short int unused12; /* 24 + 2 */
        short int unused13; /* 26 + 2 */
        short int unused14; /* 28 + 2 */
        short int datatype; /* 30 + 2 */
        short int bitpix;   /* 32 + 2 */
        short int dim_un0;  /* 34 + 2 */
        float pixdim[8];    /* 36 + 32 */
        float vox_offset;   /* 68 + 4 */
        float funused1;     /* 72 + 4 */
        float funused2;     /* 76 + 4 */
        float funused3;     /* 80 + 4 */
        float cal_max;      /* 84 + 4 */
        float cal_min;      /* 88 + 4 */
        float compressed;   /* 92 + 4 */
        float verified;     /* 96 + 4 */
        int glmax,glmin;    /* 100 + 8 */
    };
    Tu peux utiliser du C en C++ sans problème la plupart du temps sans avoir a faire de conversion.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  3. #3
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    En passant tout le code que tu cherches est à la page 8 de ton document PDF dans la fonction main:
    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
    main(argc, argv)
    int argc;
    char **argv;
    {
        struct dsr hdr;
        int size;
        double cmax, cmin;
        FILE *fp;
     
        if((fp=fopen(argv[1],"r"))==NULL)
        {
            fprintf(stderr,"Can't open:<%s>\n", argv[1]);
            exit(0);
        }
        fread(&hdr,1,sizeof(struct dsr),fp);
     
        if(hdr.dime.dim[0] < 0 || hdr.dime.dim[0] > 15)
            swap_hdr(&hdr);
        ShowHdr(argv[1], &hdr);
    }
    Tu fais un fopen sur ton fichier et après un fread pour loader le tout dans ta structure hdr.

    hdr est de type dsr:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct dsr
    {
        struct header_key hk;           /* 0 + 40 */
        struct image_dimension dime;    /* 40 + 108 */
        struct data_history hist;       /* 148 + 200 */
    };
    C'est une structure de structure, regarde le PDF pour la déclaration des autres structures. J'avais mis image_dimension dans mon dernier post.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    marci pour ton aide crayon. mais j'ai pa pu le faire; les messages d'erreur vien de partout.
    franchement,je ne suis pa si doué que toi.
    puisque c'est du copier coller.si tu peu me faire un ptit programme complet sur un interface builder j'en serai trés reconnaissant.merci.

  5. #5
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Premièrement, pour utiliser les structures copie cette section dans ton fichier .h à la bonne place. Tu aurais pu le mettre ce code dans ton fichier cpp, mais je te conseil le fichier d'entête (.h) au cas ou tu voudrais utiliser la structure ailleurs. Ici j'ai corriger les erreurs qu'il y avais dans le PDF (il manquait deux ;):

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    struct header_key
    {                               /* off + size */
        int sizeof_hdr;             /* 0 + 4 */
        char data_type[10];         /* 4 + 10 */
        char db_name[18];           /* 14 + 18 */
        int extents;                /* 32 + 4 */
        short int session_error;    /* 36 + 2 */
        char regular;               /* 38 + 1 */
        char hkey_un0;              /* 39 + 1 */
    };
     
    struct image_dimension
    {                       /* off + size */
        short int dim[8];   /* 0 + 16 */
        short int unused8;  /* 16 + 2 */
        short int unused9;  /* 18 + 2 */
        short int unused10; /* 20 + 2 */
        short int unused11; /* 22 + 2 */
        short int unused12; /* 24 + 2 */
        short int unused13; /* 26 + 2 */
        short int unused14; /* 28 + 2 */
        short int datatype; /* 30 + 2 */
        short int bitpix;   /* 32 + 2 */
        short int dim_un0;  /* 34 + 2 */
        float pixdim[8];    /* 36 + 32 */
        float vox_offset;   /* 68 + 4 */
        float funused1;     /* 72 + 4 */
        float funused2;     /* 76 + 4 */
        float funused3;     /* 80 + 4 */
        float cal_max;      /* 84 + 4 */
        float cal_min;      /* 88 + 4 */
        float compressed;   /* 92 + 4 */
        float verified;     /* 96 + 4 */
        int glmax,glmin;    /* 100 + 8 */
    };
     
    struct data_history
    {                           /* off + size */
        char descrip[80];       /* 0 + 80 */
        char aux_file[24];      /* 80 + 24 */
        char orient;            /* 104 + 1 */
        char originator[10];    /* 105 + 10 */
        char generated[10];     /* 115 + 10 */
        char scannum[10];       /* 125 + 10 */
        char patient_id[10];    /* 135 + 10 */
        char exp_date[10];      /* 145 + 10 */
        char exp_time[10];      /* 155 + 10 */
        char hist_un0[3];       /* 165 + 3 */
        int views;              /* 168 + 4 */
        int vols_added;         /* 172 + 4 */
        int start_field;        /* 176 + 4 */
        int field_skip;         /* 180 + 4 */
        int omax, omin;         /* 184 + 8 */
        int smax, smin;         /* 192 + 8 */
    };
     
    struct dsr
    {
        struct header_key hk;           /* 0 + 40 */
        struct image_dimension dime;    /* 40 + 108 */
        struct data_history hist;       /* 148 + 200 */
    };
    Pour utiliser fopen et fread, dans ton cpp en dessus de #include "Unit1.h" (ou autre nom) ajoute:
    Ensuite dans ton FormCreate (ou ailleurs, c'est toi qui le sais) tu mets le code pour lire le fichier:
    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
    	struct dsr hdr;
    	FILE *fp;
    	String strPath = "c:\...";
     
    	if((fp = fopen(strPath.c_str(), "r")) == NULL)
    	{
    		// Message d'erreur
    	}
    	else
    	{
    		fread(&hdr, 1, sizeof(struct dsr), fp);
    		fclose(fp);
     
    		// Pour lire le nombre de bit par pixel tu utilises: hdr.dime.bitpix
    	}
    PS: Je n'ai pas tester le code et je n'ai pas l'intention de le faire
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  6. #6
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Je crois que c'est assez évident, mais juste au cas, dans la variable strPath tu dois mettre le chemin d'accès pour le fichier analyze7.5.

    Un petit conseil en terminant avant de te lancer dans de plus gros projet aprend les bases de la programmation C et/ou C++.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    merci crayon,c'est tros gentil de ta part. pour le projet, il est presque fini parsk j'ai reussi a ouvrir l'image sans avoir a ouvrir l'entete mais dés que je change d'image, l'entete change et je devré changer les donnée manuellement.et ça, c'est pas permis devant les membres du jury.


    revenant au sujet.j'ai fais c'est que tu m'a dit.sa se compile sans erreur.mais sa donne de faux resultat lorsque je veux reccuperer une donnée

  8. #8
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Citation Envoyé par 4daime Voir le message
    .sa se compile sans erreur.mais sa donne de faux resultat lorsque je veux reccuperer une donnée
    Tu-peux expliquer quelles sont ces résultats.
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par kmaniche Voir le message
    Tu-peux expliquer quelles sont ces résultats.
    ces resultat sont du genre au lieu d'avoir un 16 pour le nombre de bits, je recoi un 2806 ou kelek chose comme ça.

  10. #10
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Citation Envoyé par 4daime Voir le message
    ces resultat sont du genre au lieu d'avoir un 16 pour le nombre de bits, je recoi un 2806 ou kelek chose comme ça.
    Faut croire que le truc a des gros bits ...

    Oups ...
    Désolé


    (c'est nul, je sais)
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    merci crayon

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

Discussions similaires

  1. Image de format Analyze7.5
    Par inkognito dans le forum C++
    Réponses: 0
    Dernier message: 25/06/2012, 13h56
  2. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2002, 13h34
  3. Format d'un exe pour DOS et pour Windows
    Par Alfhiger dans le forum Assembleur
    Réponses: 4
    Dernier message: 12/06/2002, 11h57
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  5. Réponses: 3
    Dernier message: 06/05/2002, 18h24

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