Salut,
j'ai trouvé un code qui permet de lire une image IRM de format analyze (.img), et je l'ai utilisé :
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 :cry:.Code:
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'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.