Bonjour,
j'utilise vtk pour visualiser et traiter des images medicales. Je travaille sur des fichier 3d raw contenant des signed short.
J'ai reussi a lire les donnees en utilisant ImageReader. Le code est le suivant :
j'aimerai faire simplement l'operation inverse, ecrire ces donnees dans un fichier raw. J'ai donc fait suivre mon code de ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 vtkImageReader *monImg = vtkImageReader::New(); monImg->SetFileName("data/r15noise-slice110.vtk.dcm.raw"); monImg->SetNumberOfScalarComponents(1); monImg->SetDataExtent(0,511,0,511,0,40); monImg->SetDataScalarTypeToShort(); monImg->Update();
mais le resultat est incorrect, quand je charge ce nouveau fichier dans une autre fonction le resultat n'est pas le meme qu'avec le fihcier de base. On dirait que selon une voire 2 directions les donnees sont inchangees et selon la troisieme directoin les donnees sont fausses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 //Write into a raw file vtkImageWriter *nvo = vtkImageWriter::New(); nvo->SetFileDimensionality(3); nvo->SetFileName("test.raw"); nvo->SetInputConnection(monImg>GetOutputPort()); nvo->Write();
Je pense que le probleme vient peut-etre de l'histoire du signed short.
je vous met en piece jointe une des images obtenues avec les donnees de depart (snapshot5.png. j'ai du reduire sa taille cause trop haute resolution) puis la meme fonction appliquee au fichier test.raw (test1.png).
Partager