VIA - Volumetric Image Analysis
via.h
1 #include "viadata.h"
2 
3 /* Utilities */
4 extern VFloat VReadPixel(VImage,int,int,int);
5 extern void VWritePixel(VImage,int,int,int,VFloat);
6 extern VFloat VGetPixelValue (VImage,int);
7 extern void VSetPixelValue (VImage,int,VFloat);
8 extern void VWriteNode(VGraph,VNode,float,float,float,float);
9 extern void VReadNode(VGraph,VNode,float *,float *,float *,float *);
10 extern void VQuaternionsRotation(float *,float **);
11 extern void VRotationMatrix(double,double,double,double [3][3]);
12 extern void VPoint_hpsort(unsigned long,VPoint[]);
13 
14 extern VImage VContrast(VImage,VImage,VRepnKind,VFloat,VFloat);
15 extern VImage VContrastUByte(VImage,VImage,VFloat,VFloat);
16 extern VImage VContrastShort(VImage,VImage,VFloat,VFloat);
17 extern VImage VContrastShortUByte(VImage, int, int, float, float);
18 extern VImage VMapImageRange(VImage,VImage,VRepnKind);
19 extern VImage VMaskRange(VImage,VImage,VFloat,VFloat);
20 extern VImage VMask(VImage,VImage,VImage);
21 
22 /* 3D binary morphology */
23 extern VImage VDilateImage3d (VImage, VImage,VoxelList,int);
24 extern VImage VErodeImage3d(VImage,VImage,VoxelList,int);
25 extern VImage VGenSphere3d(VShort);
26 extern VImage VGenSphere2d(VShort);
27 extern VoxelList VConvertSE3d(VImage,int *);
28 
29 /* 3D greylevel morphology */
30 extern VImage VGreyDilation3d(VImage,VImage,VImage);
31 extern VImage VGreyErosion3d(VImage,VImage,VImage);
32 
33 /* morphological operators by thresholding distance transform */
34 extern VImage VDTClose(VImage,VImage,VDouble);
35 extern VImage VDTOpen(VImage,VImage,VDouble);
36 extern VImage VDTErode(VImage,VImage,VDouble);
37 extern VImage VDTDilate(VImage,VImage,VDouble);
38 
39 /* distance transforms */
40 extern VImage VEuclideanDist3d(VImage,VImage,VRepnKind);
41 extern VImage VChamferDist3d(VImage,VImage,VRepnKind);
42 extern VImage VChamferDist2d(VImage,VImage,VBand);
43 extern VImage VCDT3d (VImage,VImage,VLong,VLong,VLong,VRepnKind);
44 
45 /* connected components */
46 extern VImage VLabelImage2d(VImage,VImage,int,VRepnKind,int *);
47 extern VImage VLabelImage3d(VImage,VImage,int,VRepnKind,int *);
48 extern VImage VSelectBig (VImage,VImage);
49 extern VImage VDeleteSmall(VImage,VImage,int);
50 
51 
52 /* topological operators */
53 extern VImage VBorderImage3d (VImage,VImage);
54 extern int VBorderPoint(VImage,int,int,int);
55 extern int VSimplePoint(VImage,int,int,int,int);
56 extern VImage VTopoclass(VImage,VImage);
57 extern int VGenusLee (VImage,VShort);
58 extern VImage VThin3d(VImage,VImage,int);
59 extern VImage VSkel3d(VImage,VImage);
60 extern VImage VSkel2d(VImage,VImage);
61 
62 
63 /* resampling, geometric transformations */
64 extern VImage VTriLinearSample3d(VImage,VImage,VImage,float,float,float,int,int,int);
65 extern VImage VNNSample3d(VImage,VImage,VImage,float,float,float,int,int,int);
66 extern VImage VCubicSplineSample3d(VImage,VImage,VImage,float,float,float,int,int,int);
67 extern VImage VTriLinearScale3d (VImage,VImage,int,int,int,float[3],float[3]);
68 extern VImage VNNScale3d (VImage,VImage,int,int,int,float[3],float[3]);
69 extern VImage VCubicSplineScale3d (VImage,VImage,int,int,int,float[3],float[3]);
70 extern VImage VBicubicScale2d(VImage,VImage,VFloat);
71 extern VImage VBiLinearScale2d(VImage,VImage,int,int,float[2],float[2]);
72 extern VImage VRotateImage2d(VImage,VImage,VBand,double);
73 extern VImage VRotateImage3d(VImage,VImage,VFloat,VShort);
74 extern VImage VShearImageX (VImage src, VImage dest, VBand band, double shear);
75 extern VImage VShearImageY (VImage src, VImage dest, VBand band, double shear);
76 
77 
78 /* filters */
79 extern VImage VAniso2d(VImage,VImage,VShort,VShort,VFloat,VFloat);
80 extern VImage VAniso3d(VImage,VImage,VShort,VShort,VFloat,VFloat);
81 extern VImage VConvolve3d(VImage,VImage,VImage);
82 extern VImage VConvolve2d(VImage,VImage,VImage);
83 extern VImage VConvolveCol(VImage,VImage,VImage);
84 extern VImage VConvolveRow(VImage,VImage,VImage);
85 extern VImage VConvolveBand(VImage,VImage,VImage);
86 extern VImage VLeeImage(VImage,VImage,VLong,VDouble,VLong,VLong);
87 extern VImage VSmoothImage3d(VImage,VImage,VLong,VLong);
88 extern VImage VFilterGauss2d(VImage,VImage,double);
89 extern VImage VFilterGauss3d(VImage,VImage,double);
90 extern VImage VFilterBox3d(VImage,VImage,int);
91 extern VImage VMedianImage3d (VImage,VImage,int,VBoolean);
92 extern VImage VMedianImage2d (VImage,VImage,int,VBoolean);
93 
94 
95 
96 /* segmentation, clustering, binarization */
97 extern VImage VBinarizeImage(VImage,VImage,VDouble,VDouble);
98 extern VImage VIsodataImage3d(VImage,VImage,VLong,VLong);
99 
100 /* edge detection and curvature */
101 extern void VCanny3d(VImage,int,VImage *,VImage *,VImage *);
102 extern void VCanny2d(VImage,int,VImage *,VImage *);
103 extern void VDeriche3d(VImage,VFloat,VImage *,VImage *,VImage *);
104 extern void VDeriche2d(VImage,VFloat,VImage *,VImage *);
105 extern VImage VMagnitude3d(VImage,VImage,VImage,VImage);
106 extern VImage VMagnitude2d(VImage,VImage,VImage);
107 extern VImage VNonmaxSuppression(VImage,VImage,VImage,VImage);
108 extern VImage VCurvature(VImage,VImage,VFloat,VLong,VBoolean);
109 
110 /* operations on volumes */
111 extern Volumes VImage2Volumes(VImage src);
112 extern VImage Volumes2Image(Volumes,VRepnKind repn);
113 extern VImage Volume2Bin(Volume);
114 extern Volume VBin2Volume(VImage);
115 extern double VolumeRadius(Volume,double *);
116 extern VBoolean VolumeInside(Volume,short,short,short);
117 extern VTrack VolumeGetTrack(Volume,short,short,short);
118 extern Volume VCopyVolume(Volume);
119 
120 
121 /* shape features: moments,center of gravity,size */
122 extern void VolumeCentroid (Volume,double *);
123 extern double VolumeMoment (Volume,double *,int,int,int);
124 extern void VBinCentroid (VImage, double *);
125 extern double VBinMoment (VImage,double *,int,int,int);
126 extern long VolumeSize(Volume);
127 extern long VBinSize(VImage);
128 
129 /* operations on graphs */
130 extern VGraph VImage2Graph (VImage,VGraph,VDouble,VDouble,VBoolean,VBoolean);
131 extern VGraph VGraphPrune(VGraph,int);
132 extern void VICP(VGraph,VGraph,int);