VIP: Volume Image Processing


talairach.h
Go to the documentation of this file.
1/****************************************************************************
2 * PROJECT : V.I.P. Library
3 * MODULE NAME : vip/talairach.h * TYPE : Header
4 * AUTHOR : POUPON F. * CREATION : 07/01/1998
5 * VERSION : 0.1 * REVISION :
6 * LANGUAGE : C++ * EXAMPLE :
7 * DEVICE : Sun SPARC Station 5
8 ****************************************************************************
9 *
10 * DESCRIPTION : Genere les fichier de transformation vers Talairach
11 *
12 ****************************************************************************
13 *
14 * USED MODULES : string.h - vip/volume.h - vip/talairach.h
15 *
16 ****************************************************************************
17 * REVISIONS : DATE | AUTHOR | DESCRIPTION
18 *--------------------|--------------|---------------------------------------
19 * / / | |
20 ****************************************************************************/
21
22#ifndef VIP_TALAIRACH_H
23#define VIP_TALAIRACH_H
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29#include <stdio.h>
30#include <stdlib.h>
31
32#include <vip/volume.h>
33#include <vip/bucket.h>
34#include <vip/math.h>
35
36#define P_COR_0 0
37#define P_COR_1 1
38#define P_COR_2 2
39#define P_COR_3 3
40#define P_SAG_0 4
41#define P_SAG_1 5
42#define P_SAG_2 6
43#define P_AXI_0 7
44#define P_AXI_1 8
45#define P_AXI_2 9
46
47#define TALAIRACH_SIZEX 157.
48#define TALAIRACH_SIZEY 189.
49#define TALAIRACH_SIZEZ 136.
50
51typedef struct
52{
53 float a;
54 float b;
55 float c;
56 float d;
57 int num;
58} VipPlane;
59
60typedef struct
61{
62 Vip3DPoint_VFLOAT AC;
63 Vip3DPoint_VFLOAT PC;
64 Vip3DPoint_VFLOAT Hemi;
65
66 Vip3DPoint_VFLOAT MinAxial;
67 Vip3DPoint_VFLOAT MaxAxial;
68 Vip3DPoint_VFLOAT MinSagittal;
69 Vip3DPoint_VFLOAT MaxSagittal;
70 Vip3DPoint_VFLOAT MinCoronal;
71 Vip3DPoint_VFLOAT MaxCoronal;
72
73 Vip3DPoint_VFLOAT ACPC_vector;
74 Vip3DPoint_VFLOAT Hemi_vector;
75 Vip3DPoint_VFLOAT Cross_vector;
76
77 Vip3DPoint_VFLOAT Scale;
78 float Translation[3];
79 float Rotation[3][3];
80
81 int MinBox[3];
82 int MaxBox[3];
83
85
86 Vip3DPoint_VFLOAT VoxelGeometry;
88
89/*---------------------------------------------------------------------------*/
90extern int GetCommissureCoordinates(Volume *vol, char *point_filename, VipTalairach *tal,
91 int xCA, int yCA, int zCA,
92 int xCP, int yCP, int zCP,
93 int xP, int yP, int zP,
94 int coord_provided);
95/*---------------------------------------------------------------------------*/
96
98 VipTalairach *tal,
99 int num,
100 float AA,
101 float BB,
102 float CC,
103 float DD
104);
105/*---------------------------------------------------------------------------*/
106
107/*---------------------------------------------------------------------------*/
109 VipTalairach *tal,
110 float *minA,
111 float *maxA,
112 float *minS,
113 float *maxS,
114 float *minC,
115 float *maxC
116);
117/*---------------------------------------------------------------------------*/
118
119/*---------------------------------------------------------------------------*/
121 VipTalairach *tal,
122 int num1,
123 int num2,
124 int num3,
125 float *ptInter
126);
127/*---------------------------------------------------------------------------*/
128
129/*---------------------------------------------------------------------------*/
131 float *pt,
132 VipTalairach *tal,
133 float *res
134);
135/*---------------------------------------------------------------------------*/
136
137/*---------------------------------------------------------------------------*/
139 float *pt,
140 VipTalairach *tal,
141 float *res
142);
143/*---------------------------------------------------------------------------*/
144
145/*---------------------------------------------------------------------------*/
147 float *pt,
148 VipTalairach *tal,
149 float *res
150);
151/*---------------------------------------------------------------------------*/
152
153/*---------------------------------------------------------------------------*/
155 float *pt,
156 VipTalairach *tal,
157 float *res
158);
159/*---------------------------------------------------------------------------*/
160
161/*---------------------------------------------------------------------------*/
163 float *pt,
164 VipTalairach *tal,
165 float *res
166);
167/*---------------------------------------------------------------------------*/
168
169/*---------------------------------------------------------------------------*/
171 float *pt,
172 VipTalairach *tal,
173 float *res
174);
175/*---------------------------------------------------------------------------*/
176
177/*---------------------------------------------------------------------------*/
179 Volume *vol,
180 VipTalairach *tal
181);
182/*---------------------------------------------------------------------------*/
183
184/*---------------------------------------------------------------------------*/
186 VipTalairach *tal
187);
188/*---------------------------------------------------------------------------*/
189
190/*---------------------------------------------------------------------------*/
192 float *A,
193 float *B,
194 float *C,
195 float *sol
196);
197/*---------------------------------------------------------------------------*/
198
199/*---------------------------------------------------------------------------*/
201 float *a,
202 float *b,
203 float *c,
204 float *d,
205 float *x,
206 float *y,
207 float *z
208);
209/*---------------------------------------------------------------------------*/
210
211/*---------------------------------------------------------------------------*/
213 VipTalairach *tal
214);
215/*---------------------------------------------------------------------------*/
216
217/*---------------------------------------------------------------------------*/
219 Volume *vol,
220 VipTalairach *tal
221);
222/*---------------------------------------------------------------------------*/
223
224/*---------------------------------------------------------------------------*/
226 char *filename,
227 VipTalairach *tal
228);
229/*---------------------------------------------------------------------------*/
230
231/*---------------------------------------------------------------------------*/
233 char *filename,
234 VipTalairach *tal
235);
236/*---------------------------------------------------------------------------*/
237
238/*---------------------------------------------------------------------------*/
240 char *filename,
241 VipTalairach *tal
242);
243/*---------------------------------------------------------------------------*/
244
245/*---------------------------------------------------------------------------*/
247 char *filename,
248 VipTalairach *tal
249);
250/*---------------------------------------------------------------------------*/
251
252/*---------------------------------------------------------------------------*/
254 char *filename,
255 VipTalairach *tal
256);
257/*---------------------------------------------------------------------------*/
258
259/*---------------------------------------------------------------------------*/
261 char *filename,
262 VipTalairach *tal
263);
264/*---------------------------------------------------------------------------*/
265
266/*---------------------------------------------------------------------------*/
268 VipTalairach *tal
269);
270/*---------------------------------------------------------------------------*/
271
272#ifdef __cplusplus
273}
274#endif
275
276#endif
float a
Definition talairach.h:53
float d
Definition talairach.h:56
int num
Definition talairach.h:57
float c
Definition talairach.h:55
float b
Definition talairach.h:54
Vip3DPoint_VFLOAT MinCoronal
Maximum sagittal plane coordinates.
Definition talairach.h:70
int MaxBox[3]
Talairach box minimum (X,Y,Z) coordinates.
Definition talairach.h:82
Vip3DPoint_VFLOAT MinAxial
Inter-hemispheric point coordinates.
Definition talairach.h:66
float Rotation[3][3]
Talairach translation vector.
Definition talairach.h:79
int MinBox[3]
Talairach rotation matrix.
Definition talairach.h:81
Vip3DPoint_VFLOAT MaxCoronal
Minimum coronal plane coordinates.
Definition talairach.h:71
Vip3DPoint_VFLOAT AC
Definition talairach.h:62
Vip3DPoint_VFLOAT MaxAxial
Minimum axial plane coordinates.
Definition talairach.h:67
VipPlane Plane[10]
Talairach box maximum (X,Y,Z) coordinates.
Definition talairach.h:84
Vip3DPoint_VFLOAT VoxelGeometry
10 Talairach planes
Definition talairach.h:86
Vip3DPoint_VFLOAT MinSagittal
Maximim axial plane coordinates.
Definition talairach.h:68
Vip3DPoint_VFLOAT Cross_vector
Inter-hemispheric plane vector.
Definition talairach.h:75
Vip3DPoint_VFLOAT PC
AC point coordinates.
Definition talairach.h:63
Vip3DPoint_VFLOAT MaxSagittal
Minimum sagittal plane coordinates.
Definition talairach.h:69
Vip3DPoint_VFLOAT Hemi
PC point coordinates.
Definition talairach.h:64
Vip3DPoint_VFLOAT Hemi_vector
AC-PC plane vector.
Definition talairach.h:74
Vip3DPoint_VFLOAT Scale
Third plane vector.
Definition talairach.h:77
Vip3DPoint_VFLOAT ACPC_vector
Maximum coronal plane coordinates.
Definition talairach.h:73
float Translation[3]
Talairach scale factor.
Definition talairach.h:78
void VipTalairachInverseRotation(float *pt, VipTalairach *tal, float *res)
void VipTalairachInverseTranslation(float *pt, VipTalairach *tal, float *res)
void VipTalairachInverseTransformation(float *pt, VipTalairach *tal, float *res)
int VipWriteTalairachRefFile(char *filename, VipTalairach *tal)
void VipFillTalairachPlane(VipTalairach *tal, int num, float AA, float BB, float CC, float DD)
void Vip3PlanesIntersection(VipTalairach *tal, int num1, int num2, int num3, float *ptInter)
int VipWriteTalairachFiles(char *filename, VipTalairach *tal)
int VipWriteTalairachTalFile(char *filename, VipTalairach *tal)
void Vip3DPlanesResolution(float *a, float *b, float *c, float *d, float *x, float *y, float *z)
void VipTalairachTransformation(float *pt, VipTalairach *tal, float *res)
void VipTalairachRotation(float *pt, VipTalairach *tal, float *res)
void VipTalairachRotationAndTranslation(VipTalairach *tal)
void VipComputeDeterminant(float *A, float *B, float *C, float *sol)
void VipTalairachTranslation(float *pt, VipTalairach *tal, float *res)
void VipTalairachBox(Volume *vol, VipTalairach *tal)
int VipReadTalairachTalFile(char *filename, VipTalairach *tal)
void VipPrintTalairach(VipTalairach *tal)
void VipInitTalairachVectors(VipTalairach *tal)
int VipReadTalairachFiles(char *filename, VipTalairach *tal)
int GetCommissureCoordinates(Volume *vol, char *point_filename, VipTalairach *tal, int xCA, int yCA, int zCA, int xCP, int yCP, int zCP, int xP, int yP, int zP, int coord_provided)
void VipComputeTalairachTransformation(Volume *vol, VipTalairach *tal)
void VipInitTalairachPlanes(VipTalairach *tal, float *minA, float *maxA, float *minS, float *maxS, float *minC, float *maxC)
int VipReadTalairachRefFile(char *filename, VipTalairach *tal)