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