VIP: Volume Image Processing


histo_ss.h
Go to the documentation of this file.
1/*****************************************************************************
2 * PROJECT : V.I.P. Library
3 * MODULE NAME : vip/histo_ss.h * TYPE : Header
4 * AUTHOR : MANGIN J.F. * CREATION : 20/08/1997
5 * VERSION : 1.1 * REVISION :
6 * LANGUAGE : C * EXAMPLE :
7 * DEVICE : sparc5
8 *****************************************************************************
9 *
10 * DESCRIPTION : Scalespace1D des histogrammes
11 *
12 *****************************************************************************
13 *
14 * USED MODULES :
15 *
16 *****************************************************************************
17 * REVISIONS : DATE | AUTHOR | DESCRIPTION
18 *--------------------|--------------|----------------------------------------
19 * / / | |
20 *****************************************************************************/
21#ifndef VIP_HISTO_SS_H
22#define VIP_HISTO_SS_H
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28#include <vip/histo.h>
29
30
31 typedef struct singularity { /*for historic reasons SSSingularity do not use Singularity*/
32 double val; /*finally, this structure is not used but I let it there for potential*/
33 double speed; /* further experiments with extremum speed and Lindeberg Gamma-derivatives*/
34 int iter;
35 short loc;
37
66
79
92
93 typedef struct SSobject {
95 SSSingularity *D2Mls; /* desallocated after VipGetT1HistoAnalysisCustomized */
101 int mean;
102 int sigma;
106
125
126#define SPGR_IR_RATIO 0.20 /*for 3T unbiased image 0.25->0.20, JFM 8-2001*/
127
128#define MRI_T1_SPGR 20
129#define MRI_T1_IR 21
130#define MRI_T1_SEGMENTED_BRAIN 22
131#define MODES_2 23
132#define MODES_3 24
133#define MODES_4 25
134#define MODE_TISSUE 26
135#define MODE_HISTO 27
136#define MODE_RIDGE 28
137
138#define SS_SIMPLE_EXTREMUM 11
139#define SS_TRACKED_EXTREMUM 12
140#define SS_CASCADE_EXTREMUM 13
141
142/*---------------------------------------------------------------------------*/
144/*---------------------------------------------------------------------------*/
145/*---------------------------------------------------------------------------*/
146extern int VipWriteT1HistoAnalysis(VipT1HistoAnalysis *ana, char *name);
147/*---------------------------------------------------------------------------*/
148/*---------------------------------------------------------------------------*/
149extern int VipComputeSSSingularityGammaExtrema( SSSingularity *s, float gamma, Singularity *sval, int nval, float dscale );
150/*---------------------------------------------------------------------------*/
151/*---------------------------------------------------------------------------*/
152extern SSCascade *VipCreateHighestCascade(SSSingularity *slist, int nbiter, int ninfinite );
153/*---------------------------------------------------------------------------*/
154/*---------------------------------------------------------------------------*/
156/*---------------------------------------------------------------------------*/
157/*---------------------------------------------------------------------------*/
158extern SSCascade *VipComputeOrderedCascadeList( SSSingularity *list,int itermax, VipHisto *hcumul );
159/*---------------------------------------------------------------------------*/
160/*---------------------------------------------------------------------------*/
162/*---------------------------------------------------------------------------*/
163/*---------------------------------------------------------------------------*/
165/*---------------------------------------------------------------------------*/
166/*---------------------------------------------------------------------------*/
167extern int VipCountSingularitiesStillAlive( SSSingularity *slist, int *n, int scalemax );
168/*---------------------------------------------------------------------------*/
169 /*---------------------------------------------------------------------------*/
171 VipHisto *histo,
172 int scalemax,
173 float dt);
174 /*---------------------------------------------------------------------------*/
175
176/*---------------------------------------------------------------------------*/
178 Volume *vol);
179 /*---------------------------------------------------------------------------*/
180 /*---------------------------------------------------------------------------*/
182 Volume *vol);
183 /*---------------------------------------------------------------------------*/
184
185/*---------------------------------------------------------------------------*/
187Vip1DScaleSpaceStruct *ssstruct,
188int scalemin,
189int trackD0,
190int trackD1,
191int trackD2,
192int trackD3,
193int trackD4
194);
195/*---------------------------------------------------------------------------*/
196 /*NB in fact borderwidth should be zero for a sure tracking*/
197
198/*---------------------------------------------------------------------------*/
200 VipHisto *shorthisto,
201 int scalemax,
202 float dscale,
203 int offset,
204 int nderivative,
205 int undersampling_factor);
206/*---------------------------------------------------------------------------*/
207/*---------------------------------------------------------------------------*/
209/*---------------------------------------------------------------------------*/
210
211/*---------------------------------------------------------------------------*/
213/*---------------------------------------------------------------------------*/
214/*---------------------------------------------------------------------------*/
216Volume *vol,
217int xmin,
218int xmax,
219int scalemin,
220int scalemax,
221char *filename);
222/*---------------------------------------------------------------------------*/
223
224/*---------------------------------------------------------------------------*/
226SSCascade *clist, Vip1DScaleSpaceStruct *volstruct);
227/*---------------------------------------------------------------------------*/
228
229/*---------------------------------------------------------------------------*/
231/*---------------------------------------------------------------------------*/
232
233/*---------------------------------------------------------------------------*/
234extern int VipMarkNHighestCascades ( SSCascade *clist, int n, Vip1DScaleSpaceStruct *volstruct);
235/*---------------------------------------------------------------------------*/
236
237/*---------------------------------------------------------------------------*/
238extern int VipMarkNBiggestCascades ( SSCascade *clist, int n, Vip1DScaleSpaceStruct *volstruct);
239/*---------------------------------------------------------------------------*/
240/*---------------------------------------------------------------------------*/
242/*---------------------------------------------------------------------------*/
243/*---------------------------------------------------------------------------*/
245/*---------------------------------------------------------------------------*/
246/*---------------------------------------------------------------------------*/
247
248/*---------------------------------------------------------------------------*/
250 Vip1DScaleSpaceStruct *volstruct,
251 char *name,
252 int tracked,
253 int psfile,
254 int title,
255 int writeD0,
256 int writeD1,
257 int writeD2,
258 int writeD3,
259 int writeD4
260);
261/*---------------------------------------------------------------------------*/
264 int plottype,
265 Vip1DScaleSpaceStruct *volstruct,
266 char *name,
267 int tracked,
268 int psfile,
269 int title,
270 int writeD0,
271 int writeD1,
272 int writeD2,
273 int writeD3,
274 int writeD4
275);
276/*---------------------------------------------------------------------------*/
277
278/*---------------------------------------------------------------------------*/
280/*---------------------------------------------------------------------------*/
281/*---------------------------------------------------------------------------*/
283/*---------------------------------------------------------------------------*/
284/*---------------------------------------------------------------------------*/
286/*---------------------------------------------------------------------------*/
287
288/*---------------------------------------------------------------------------*/
290/*---------------------------------------------------------------------------*/
291
293 SSCascade *clist,
294 Vip1DScaleSpaceStruct *volstructana,
295 int sequence);
296
297/*---------------------------------------------------------------------------*/
299 SSCascade *clist, Vip1DScaleSpaceStruct *volstruct);
300/*---------------------------------------------------------------------------*/
301
302/*---------------------------------------------------------------------------*/
304SSCascade *clist, SSCascade *cbrain, Vip1DScaleSpaceStruct *volstruct);
305/*---------------------------------------------------------------------------*/
306/*---------------------------------------------------------------------------*/
307extern SSCascade *VipGetInsideRangeCascade( SSCascade *clist, int left, int right, int scalemax);
308/*---------------------------------------------------------------------------*/
309/*---------------------------------------------------------------------------*/
310extern SSCascade *VipGetInsideRangeBiggestCascade( SSCascade *clist, int left, int right, int scalemax);
311/*---------------------------------------------------------------------------*/
312
313/*---------------------------------------------------------------------------*/
315/*---------------------------------------------------------------------------*/
316
317/*---------------------------------------------------------------------------*/
319/*---------------------------------------------------------------------------*/
320
321/*---------------------------------------------------------------------------*/
323double *input,
324Vip_S8BIT *extrema,
325int dim,
326int *numberplus,
327int *numbermoins
328);
329/*---------------------------------------------------------------------------*/
330
331/*---------------------------------------------------------------------------*/
333 VipHisto *shorthisto,
334 float dscale,
335 int offset,
336 int nderivative,
337 int undersampling_factor);
338/*---------------------------------------------------------------------------*/
339
340/*---------------------------------------------------------------------------*/
342/*---------------------------------------------------------------------------*/
343
344/*-----------------------------------------------------------------------*/
345extern int VipPutSSExtremaValAndSpeedInBuffer(double *data,double *denom, double *num,Vip_S8BIT *eptr,int dim,Singularity *val,int *nval,int sizeval,int iter);
346/*-----------------------------------------------------------------------*/
347
348/*---------------------------------------------------------------------------*/
349extern int VipComputeSSSingularitySpeedMinima( SSSingularity *s, Singularity *sval, int nval, float dscale );
350/*---------------------------------------------------------------------------*/
351
352/*---------------------------------------------------------------------------*/
354/*---------------------------------------------------------------------------*/
355
356/*---------------------------------------------------------------------------*/
357extern int VipComputeSSSingularityGaussianLikeSpeed( SSSingularity *s, Singularity *sval, int nval, float dscale, float sigmamin, int nature);
358/*---------------------------------------------------------------------------*/
359
360/*---------------------------------------------------------------------------*/
361extern int VipComputeAnalysedLoc (SSObject *o, int scale);
362/*---------------------------------------------------------------------------*/
363
364/*---------------------------------------------------------------------------*/
366Volume *vol);
367/*---------------------------------------------------------------------------*/
368
369/*---------------------------------------------------------------------------*/
371Volume *vol,
372int track,
373float dscale);
374/*---------------------------------------------------------------------------*/
375#ifdef __cplusplus
376}
377#endif
378
379#endif /* VIP_HISTO_SS_H */
struct Vip_histo VipHisto
int VipMarkAnalysedObjects(VipT1HistoAnalysis *ana, Vip1DScaleSpaceStruct *volstruct)
int VipCreatePlotFileFromExtrema(int plottype, Vip1DScaleSpaceStruct *volstruct, char *name, int tracked, int psfile, int title, int writeD0, int writeD1, int writeD2, int writeD3, int writeD4)
if plottype=0: gnuplot; 1: matplotlib
int VipAnalyseCascadesIRSequence(VipT1HistoAnalysis *ana, SSCascade *clist, Vip1DScaleSpaceStruct *volstruct)
SSCascade * VipGetInsideRangeCascade(SSCascade *clist, int left, int right, int scalemax)
int VipCreateGnuplotFileFromExtrema(Vip1DScaleSpaceStruct *volstruct, char *name, int tracked, int psfile, int title, int writeD0, int writeD1, int writeD2, int writeD3, int writeD4)
struct SScascade SSCascade
SSCascade * VipDetectCascadeFromD2(SSSingularity *list, SSSingularity *s)
SSCascade * VipDetectCascadeFromD1(SSSingularity *list, SSSingularity *s)
struct sssingularity SSSingularity
int VipCountSingularitiesStillAlive(SSSingularity *slist, int *n, int scalemax)
int VipAnalyseCascadesSegmentedSequence(VipT1HistoAnalysis *ana, SSCascade *clist, Vip1DScaleSpaceStruct *volstruct)
int VipPutSSExtremaValAndSpeedInBuffer(double *data, double *denom, double *num, Vip_S8BIT *eptr, int dim, Singularity *val, int *nval, int sizeval, int iter)
int VipConvertScaleSpaceToSplotFormat(Volume *vol, int xmin, int xmax, int scalemin, int scalemax, char *filename)
Volume * VipDetectExtremaFrom1DSS(Volume *ss)
VipT1HistoAnalysis * VipReadT1HistoAnalysis(char *name)
int VipMarkAnalysedObjectsHisto(VipT1HistoAnalysis *ana, Vip1DScaleSpaceStruct *volstruct)
int VipAnalyseCascadesSPGRSequence(VipT1HistoAnalysis *ana, SSCascade *clist, SSCascade *cbrain, Vip1DScaleSpaceStruct *volstruct)
int VipMarkSSObjectExtrema(SSObject *o, Vip1DScaleSpaceStruct *volstruct)
int VipFreeSSSingularityList(SSSingularity *ss)
struct vip_T1histogram_analysis VipT1HistoAnalysis
Volume * VipComputeHistoScaleSpaceByDiffusion(VipHisto *histo, int scalemax, float dt)
int VipComputeSSSingularityGaussianLikeSpeed(SSSingularity *s, Singularity *sval, int nval, float dscale, float sigmamin, int nature)
SSCascade * VipGetInsideRangeBiggestCascade(SSCascade *clist, int left, int right, int scalemax)
int VipWriteT1HistoAnalysis(VipT1HistoAnalysis *ana, char *name)
SSSingularity * VipComputeSSSingularityList(Vip1DScaleSpaceStruct *ssstruct, int scalemin, int trackD0, int trackD1, int trackD2, int trackD3, int trackD4)
int VipComputeSSSingularitySpeedMinima(SSSingularity *s, Singularity *sval, int nval, float dscale)
SSSingularity * VipGetNextSingularityOnRight(SSSingularity *s, int nature)
struct vip_ss_struct Vip1DScaleSpaceStruct
int VipExpandSSObjectSingularities(SSObject *o, Vip1DScaleSpaceStruct *volstruct)
VipT1HistoAnalysis * VipGetT1HistoAnalysisCustomized(Volume *vol, int track, float dscale)
struct SSobject SSObject
int VipComputeAnalysedLoc(SSObject *o, int scale)
int VipFindSSSingularityMates(SSSingularity *slist)
VipT1HistoAnalysis * VipAnalyseCascades(SSCascade *clist, Vip1DScaleSpaceStruct *volstruct, int sequence)
VipT1HistoAnalysis * VipGetT1HistoAnalysis(Volume *vol)
int VipFree1DScaleSpaceStruct(Vip1DScaleSpaceStruct *ssstruct)
int VipMarkNBiggestCascades(SSCascade *clist, int n, Vip1DScaleSpaceStruct *volstruct)
SSCascade * VipComputeOrderedCascadeList(SSSingularity *list, int itermax, VipHisto *hcumul)
SSCascade * VipCreateHighestCascade(SSSingularity *slist, int nbiter, int ninfinite)
Vip1DScaleSpaceStruct * VipCompute1DScaleSpaceStructUntilLastCascade(VipHisto *shorthisto, float dscale, int offset, int nderivative, int undersampling_factor)
struct singularity Singularity
Volume * VipComputeScaleSpaceSecondDeriv(Volume *vol)
int VipDetectSSExtrema(double *input, Vip_S8BIT *extrema, int dim, int *numberplus, int *numbermoins)
Volume * VipComputeScaleSpaceFirstDeriv(Volume *vol)
Vip1DScaleSpaceStruct * VipCompute1DScaleSpaceStructFromHisto(VipHisto *shorthisto, int scalemax, float dscale, int offset, int nderivative, int undersampling_factor)
int VipComputeSSSingularityGammaExtrema(SSSingularity *s, float gamma, Singularity *sval, int nval, float dscale)
int VipMarkNHighestCascades(SSCascade *clist, int n, Vip1DScaleSpaceStruct *volstruct)
int VipAnalyseCascadesModes(VipT1HistoAnalysis *ana, SSCascade *clist, Vip1DScaleSpaceStruct *volstructana, int sequence)
int VipComputeSSSingularitySimpleSpeedMinima(SSSingularity *s)
SSCascade * VipComputeScaleOrderedCascadeList(SSSingularity *list, int itermax, VipHisto *hcumul)
int VipFreeCascadeList(SSCascade *c)
SSObject * VipAllocSSObject()
int D2_scale_event
Definition histo_ss.h:87
struct SScascade * next
Definition histo_ss.h:90
int complet
Definition histo_ss.h:81
int D1_scale_event
Definition histo_ss.h:84
SSSingularity * D1Ms
Definition histo_ss.h:85
SSSingularity * D2ms
Definition histo_ss.h:89
SSSingularity * D1ms
Definition histo_ss.h:86
SSSingularity * D2Ms
Definition histo_ss.h:88
int scale_event
Definition histo_ss.h:83
int volume
Definition histo_ss.h:82
SSSingularity * D2Mls
Definition histo_ss.h:95
int left_sigma
Definition histo_ss.h:103
SSSingularity * D2ms
Definition histo_ss.h:97
SSSingularity * D1Ms
Definition histo_ss.h:96
int good_scale
Definition histo_ss.h:100
int right_sigma
Definition histo_ss.h:104
int scale_event
Definition histo_ss.h:94
SSSingularity * D1ms
Definition histo_ss.h:98
int sigma
Definition histo_ss.h:102
SSSingularity * D2Mrs
Definition histo_ss.h:99
int mean
Definition histo_ss.h:101
short loc
Definition histo_ss.h:35
double val
Definition histo_ss.h:32
double speed
Definition histo_ss.h:33
struct sssingularity * right
Definition histo_ss.h:72
int scale_event
Definition histo_ss.h:68
struct sssingularity * mate
Definition histo_ss.h:74
struct sssingularity * left
Definition histo_ss.h:73
int * scale_extrema
Definition histo_ss.h:77
int analysed_loc
Definition histo_ss.h:70
short * loc
Definition histo_ss.h:69
int n_scale_extrema
Definition histo_ss.h:76
struct SScascade * cascade
Definition histo_ss.h:75
SSObject * candidate[6]
Definition histo_ss.h:121
Singularity * ss_val
Definition histo_ss.h:48
Volume * ss
Definition histo_ss.h:46
float dscale
Definition histo_ss.h:43
Volume * d1
Definition histo_ss.h:51
Volume * d4
Definition histo_ss.h:63
VipHisto * hcumul
Definition histo_ss.h:45
Volume * d3
Definition histo_ss.h:61
Volume * d4_e
Definition histo_ss.h:64
Volume * d3_e
Definition histo_ss.h:62
VipHisto * histo
Definition histo_ss.h:44
Volume * ss_e
Definition histo_ss.h:47
Volume * d2
Definition histo_ss.h:56
Singularity * d2_val
Definition histo_ss.h:58
Volume * d2_e
Definition histo_ss.h:57
int undersampling_ratio
Definition histo_ss.h:42
Singularity * d1_val
Definition histo_ss.h:53
Volume * d1_e
Definition histo_ss.h:52
signed char Vip_S8BIT
Definition structure.h:91