Salut,
j'ai trouvé un code qui permet de lire une image IRM de format analyze (.img), et je l'ai utilisé :
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
 
void __fastcall TForm1::Button1Click(TObject *Sender)
 
{
 
  TOpenDialog* dlgOuvrir = new TOpenDialog(this);
        dlgOuvrir->Title = "Ouvrir l'image IRMD";
         dlgOuvrir->DefaultExt= "*.hdr" ;
        dlgOuvrir->FileName= "*.hdr" ;
        if (dlgOuvrir->Execute())
        {
        String strFichierHDR = dlgOuvrir->FileName;
	String strFichierIMG = ChangeFileExt(dlgOuvrir->FileName, ".img");
 
         dsr hdr;
         FILE *fp;
         if((fp = fopen(strFichierHDR.c_str(), "r")) == NULL)
	{
		ShowMessage("le fichier n'exist pas !!");
	}
	else
	{
	      Form1->Cursor =crAppStart ;
              	fread(&hdr, 1,sizeof(dsr), fp);
		fclose(fp);
	}
//lecture fichier image
  FILE *id;
                short buf[1];
                id=fopen(strFichierIMG.c_str(),"rb");
 
                  for (int k=0;k<cp;k++)
                    for (int i=0;i<h;i++)
                      for (int j=0;j<w;j++)
                       {
                           fread(buf,1,1,id);
                           mat3[i][j][k] = buf[1];
                       }
                fclose(id);
J'ai testé ce code dans un programme qui permet de lire une image et la segmenter sur une image codée sur 8 bits, ça marche très bien. J'ai téléchargé des images de Brainweb qui sont codées sur 16 bits et tester le programme, la ça ne marche plus, soit l'image ne s'affiche pas correctement soit c'est lors de la segmentation que j'ai des erreurs .
J'aimerais que mon programme soit indépendant du codage (8 ou 16), et qu'il puisse lire n'importe quelle image médicale de format analyze.
Merci de votre aide.