SiGraph: sulcal graphs


inertialDomainBox.h
Go to the documentation of this file.
1
2#ifndef SI_FOLD_INERTIALDOMAINBOX_H
3#define SI_FOLD_INERTIALDOMAINBOX_H
4
5
6#include <si/fold/domainBox.h>
7#include <cartodata/volume/volume.h>
8
9
10namespace sigraph
11{
12
14 {
15 public:
18 virtual ~InertialDomainBox();
19 virtual Domain* clone() const;
21 bool canBeFound( double x, double y, double z );
28 virtual bool canBeFound( const Vertex* v, const Graph* g = 0 );
29 virtual void learn( const Vertex* v, const Graph* g = 0 );
31 virtual void learnBucket( const Vertex* v, const Graph* g );
32 virtual void reset();
33 virtual bool needsMorePasses() const { return( !_transfUpToDate ); }
34 virtual void nextPass() { if( !_transfUpToDate ) diagonalize(); }
35 virtual void firstPass();
36 virtual void buildTree( Tree & tr ) const;
37 static void buildInertialDomBox( Tree* parent, Tree* tr );
38 virtual void cubeTalairach( std::vector<std::vector<double> >
39 & pts ) const;
40
42 virtual void diagonalize();
44 virtual void changeRef( double & x, double & y, double & z );
45 float tolerenceMargin() const { return( _tolMargin ); }
46 void setTolerenceMargin( float tm ) { _tolMargin = tm; }
47
48 protected:
50 void learnVoxel( const std::vector<float> & rot,
51 const std::vector<float> & scale,
52 const std::vector<float> & transl,
53 const std::vector<float> & vsz,
54 const AimsVector<short, 3> & pt );
56 void learnTalVoxel( double x, double y, double z );
57
61 Point3df _gravity;
65 Point3df _eigenValues;
66 unsigned _npoints;
71 };
72
73
74 // inline
75
83
84
86 {
87 return( new InertialDomainBox( *this ) );
88 }
89
90
94
95}
96
97#endif
98
99
Domaine de validité.
Definition domain.h:18
carto::VolumeRef< float > _inertia
Matrice d'inertie.
virtual void diagonalize()
Diagonalise la matrice d'inertie.
virtual void nextPass()
Effectue le changement de phase d'apprentissage.
virtual bool canBeFound(const Vertex *v, const Graph *g=0)
Renvoie si le noeud de graphe peut appartenir au modèle concerné (donc avoir le label considéré)
Point3df _eigenValues
Valeurs propres de la matrice d'inertie.
virtual void reset()
Réinitialise l'apprentissage (remet les stats à zéro)
virtual void learnBucket(const Vertex *v, const Graph *g)
apprends 2e phase, bornes des buckets dans le repère d'inertie
carto::VolumeRef< float > _rotation
Matrice de rotation.
virtual void buildTree(Tree &tr) const
Conversion en arbre (pour IO)
static void buildInertialDomBox(Tree *parent, Tree *tr)
Point3df _gravity
Centre de gravité.
void learnVoxel(const std::vector< float > &rot, const std::vector< float > &scale, const std::vector< float > &transl, const std::vector< float > &vsz, const AimsVector< short, 3 > &pt)
Apprends un voxel (2e passe)
virtual Domain * clone() const
Duplication.
virtual void firstPass()
Revient à la première passe d'apprentissage.
virtual bool needsMorePasses() const
Dit s'il faut encore un passage sur une base pour que l'apprentissage soit complet.
float _tolMargin
Marge de tolérence supplémentaire.
virtual void learn(const Vertex *v, const Graph *g=0)
Apprends le domaine d'un morceau de sillon donné.
virtual void changeRef(double &x, double &y, double &z)
Change de repère vers celui de la matrice d'inertie.
void learnTalVoxel(double x, double y, double z)
Apprends un voxel (2e passe) pour un point dans Talairach.
bool canBeFound(double x, double y, double z)
Renvoie si le point peut se trouver aux coordonnées (x, y, z)
virtual void cubeTalairach(std::vector< std::vector< double > > &pts) const
Donne les coordonnées des coins dans Talairach (pas forcément les minmax internes, cf InertialDomainBox),...