VIP: Volume Image Processing


simplesurface.h
Go to the documentation of this file.
1/****************************************************************************
2 * PROJECT : V.I.P. Library
3 * MODULE NAME : vip/fold_arg * TYPE : Header
4 * AUTHOR : MANGIN J-F * CREATION : 02/03/1999
5 * VERSION : 1.4 * REVISION :
6 * LANGUAGE : C * EXAMPLE :
7 * DEVICE : Linux
8 ****************************************************************************
9 *
10 * DESCRIPTION : recuperation du format de graphe relationnel
11 * attribue sur les plis corticaux de la these de JF Mangin
12 *
13 ****************************************************************************
14 *
15 *
16 ****************************************************************************
17 * REVISIONS : DATE | AUTHOR | DESCRIPTION
18 *--------------------|--------------|---------------------------------------
19 * / / | |
20 ****************************************************************************/
21
22#ifndef VIP_SIMPLESURFACE_H
23#define VIP_SIMPLESURFACE_H
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29
30 typedef struct surfacepoint {
31 short x;
32 short y;
33 short z;
35
36 typedef struct surfacesimple {
37 int label;
38 /*in skeleton*/
39 int index;
40 /*for some tabs*/
41 int the_label; /*identification*/
42
43 /* identification de la surface simple*/
45 float confiance; /*pourcentage identification*/
46 float dist_moy;
47 /* nombre total de points*/
49 /* bucket des points de surface*/
50 Vip3DBucket_S16BIT *surface_points;
51 /* bucket des points frontieres*/
52 Vip3DBucket_S16BIT *edge_points;
53 /* ss junction points and small ss dispatched to this ss*/
54 Vip3DBucket_S16BIT *other_points;
55 /* surface simple suivante dans la liste chainee*/
57 /*jonction avec la surface externe */
59 /*jonctions topologiques:
60 nombre: n_bijunction;
61 liste de pointeurs de jonctions topologiques
62 liste de pointeurs des surfaces simples correspondantes*/
66 /*plidepassage:
67 nombre: n_bijunction;
68 liste de pointeurs de jonctions topologiques
69 liste de pointeurs des surfaces simples correspondantes*/
77 /*Jonctions Corticales...
78 nombre: n_cortex_birel;
79 liste de pointeurs de relations corticales;
80 liste de pointeurs des surfaces simples correspondantes;*/
84 /* taille de la ss */
85 float size;
87 /*boite englobante de la ss dans le referentiel image*/
89 Vip3DPoint_S16BIT boxmin;
90 Vip3DPoint_S16BIT boxmax;
91 /*boite englobante de la ss dans le referentiel commun*/
93 Vip3DPoint_VFLOAT refboxmin;
94 Vip3DPoint_VFLOAT refboxmax;
95 /* normale de la ss par rapport aux axes de l'image*/
96 Vip3DPoint_VFLOAT normale;
98 /* normale dans le referentiel commun*/
99 Vip3DPoint_VFLOAT refnormale;
101 /* centre de gravite dans le ref de l'image*/
102 Vip3DPoint_VFLOAT g;
104 /* centre de gravite dans le ref commun*/
105 Vip3DPoint_VFLOAT refg;
107 /* distance max et min a la surface externe*/
108 float depth;
110 float mindepth;
112 /*matrice d'inertie dans Talairach*/
113 float talcovar[3][3];
115
117
118 /* liste chainee de surfaces simples
119 */
120 typedef struct surfacesimplelist {
122 int n_ss;
123 SurfaceSimple **tab; /*WARNING, tab is of size n_ss + 1, 0 = HULL*/
125
127
128/*-------------------------------------------------------------------------*/
130 Vip3DBucket_S16BIT *sp_list);
131/*-------------------------------------------------------------------------*/
132
133/*-------------------------------------------------------------------------*/
134 extern SurfaceSimpleList *VipComputeFoldArgSSList( Volume *squel , int inside, int outside,
135 int limitsize, char *rootsvoronoi_name);
136/*-------------------------------------------------------------------------*/
137 /*-------------------------------------------------------------------------*/
139 /*-------------------------------------------------------------------------*/
140 /*-------------------------------------------------------------------------*/
141 extern int FreeSurfaceSimple( SurfaceSimple *dead );
142 /*-------------------------------------------------------------------------*/
143 /*-------------------------------------------------------------------------*/
145 /*-------------------------------------------------------------------------*/
146 /*-------------------------------------------------------------------------*/
147 extern Vip3DBucket_S16BIT *GetSurfaceSimple(
148 Volume *vol,
149 int labelSS,
150 int inside,
151 int outside);
152 /*-------------------------------------------------------------------------*/
153
154/*-------------------------------------------------------------------------*/
156 JunctionSet *jset);
157/*-------------------------------------------------------------------------*/
158
159/*-------------------------------------------------------------------------*/
161 SurfaceSimpleList *ss_list,
162 CortexRelationSet *jset);
163/*-------------------------------------------------------------------------*/
164/*-------------------------------------------------------------------------*/
166 SurfaceSimpleList *ss_list,
167 Volume *vol,
168 int labelFRONTIERE);
169/*-------------------------------------------------------------------------*/
170/*-------------------------------------------------------------------------*/
172SurfaceSimpleList *ss_list,
173Volume *squel,
174Volume *voronoi);
175/*-------------------------------------------------------------------------*/
176/*-------------------------------------------------------------------------*/
177extern BiJunction *CreateBiJunction( int index1,
178 int index2,
179 Vip3DBucket_S16BIT *buck,
180 SurfaceSimpleList *sslist);
181/*-------------------------------------------------------------------------*/
182
183/*-------------------------------------------------------------------------*/
185 int index1,
186 int index2,
187 Vip3DBucket_S16BIT *buck,
188 SurfaceSimpleList *sslist);
189/*-------------------------------------------------------------------------*/
190
191#ifdef __cplusplus
192}
193#endif
194
195#endif
struct cortexrelationset CortexRelationSet
struct cortexbirelation CortexBiRelation
struct junctionset JunctionSet
struct bijunction BiJunction
struct plidepassage PliDePassage
int FreeSurfaceSimple(SurfaceSimple *dead)
struct surfacesimplelist SurfaceSimpleList
int FillSSListJunctionPtr(SurfaceSimpleList *ss_list, JunctionSet *jset)
Vip3DBucket_S16BIT * GetSurfaceSimple(Volume *vol, int labelSS, int inside, int outside)
SurfaceSimple * CreateEmptySurfaceSimple()
int FreeSurfaceSimpleList(SurfaceSimpleList *deadlist)
struct surfacesimple SurfaceSimple
SurfaceSimpleList * VipComputeFoldArgSSList(Volume *squel, int inside, int outside, int limitsize, char *rootsvoronoi_name)
SurfaceSimpleList * CreateSurfaceSimpleList(Vip3DBucket_S16BIT *sp_list)
struct surfacepoint SurfacePoint
int FillSurfaceSimpleEdgeBucket(SurfaceSimpleList *ss_list, Volume *vol, int labelFRONTIERE)
CortexBiRelation * CreateCortexBiRelation(int index1, int index2, Vip3DBucket_S16BIT *buck, SurfaceSimpleList *sslist)
int FillSSListCortexBirelationPtr(SurfaceSimpleList *ss_list, CortexRelationSet *jset)
BiJunction * CreateBiJunction(int index1, int index2, Vip3DBucket_S16BIT *buck, SurfaceSimpleList *sslist)
int FillSurfaceSimpleOtherBucket(SurfaceSimpleList *ss_list, Volume *squel, Volume *voronoi)
Vip3DPoint_S16BIT boxmax
struct surfacesimple ** plidepassage_neighbor
struct surfacesimple * next
Vip3DBucket_S16BIT * other_points
struct surfacesimple ** bijunction_neighbor
Vip3DBucket_S16BIT * edge_points
char the_name[VIP_NAME_MAXLEN]
int * pppotentialneighbor_index
Vip3DPoint_VFLOAT normale
struct surfacesimple ** cortex_neighbor
Vip3DPoint_VFLOAT refg
float talcovar[3][3]
Vip3DPoint_VFLOAT refboxmax
BiJunction * hull_bijunction
Vip3DBucket_S16BIT * surface_points
Vip3DPoint_VFLOAT g
PliDePassage ** plidepassage
Vip3DPoint_S16BIT boxmin
BiJunction ** bijunction
Vip3DPoint_VFLOAT refboxmin
Vip3DPoint_VFLOAT refnormale
CortexBiRelation ** cortex_birel
SurfaceSimple * first_ss
SurfaceSimple ** tab
#define VIP_NAME_MAXLEN
Definition structure.h:33