Bonjour,
J'ai une image volumique en niveau de gris sous forme d'un tableau tridimensionnel d'unsigned char ptr donc chaque élément correspond à un niveau de gris (blanc=niveau maximal, noir=niveau nul).
Je désire trier mes voxels selon leur niveau de gris. J'ai pensé à une std::map dont les clés sont les adresses des voxels dans ptr et dont les valeurs sont les niveaux de gris. Voici un exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 std::map<unsigned char*, unsigned char, classcomp> mamap; //remplissage de la map for(int i=0; i<3; i++) for(int j=0; j<2; j++) for(int k=0; k<4; k++) mamap[&ptr[i][j][k]] = ptr[i][j][k];
où classcomp est défini comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 struct classcomp { bool operator()( unsigned char* s1, unsigned char* s2 ) { return (*s1)<(*s2); } };
Après ceci, le premier constat est que la taille de mamap vaut 1!!! C'est pas bon! La taille devrait être la taille du volume (=nbre total de voxels).
Où pensez-vous que se situe mon erreur?
Merci de m'aider, je ne comprends pas
Pix
Partager