FEDRA emulsion software from the OPERA Collaboration
milblob.h
Go to the documentation of this file.
1 /***************************************************************************/
2 /*
3 
4  Filename: MILBLOB.H
5  Owner : Matrox Imaging dept.
6  Rev : $Revision: 1.1 $
7  Content : This file contains the defines for the MIL blob
8  analysis module. (Mblob...).
9 
10  COPYRIGHT (c) 1993 Matrox Electronic Systems Ltd.
11  All Rights Reserved
12 
13 */
14 /***************************************************************************/
15 
16 #ifndef __MILBLOB_H__
17 #define __MILBLOB_H__
18 
19 #if (!M_MIL_LITE) // MIL FULL ONLY
20 
21 /* C++ directive if needed */
22 #ifdef __cplusplus
23 extern "C"
24 {
25 #endif
26 
27 
28 /* Binary only */
29 
30 #define M_LABEL_VALUE 1L
31 #define M_AREA 2L
32 #define M_PERIMETER 3L
33 #define M_FERET_X 72L
34 #define M_FERET_Y 5L
35 #define M_BOX_X_MIN 6L
36 #define M_BOX_Y_MIN 7L
37 #define M_BOX_X_MAX 8L
38 #define M_BOX_Y_MAX 9L
39 #define M_FIRST_POINT_X 75L
40 #define M_FIRST_POINT_Y 132L
41 #define M_AXIS_PRINCIPAL_LENGTH 12L
42 #define M_AXIS_SECONDARY_LENGTH 13L
43 #define M_FERET_MIN_DIAMETER 14L
44 #define M_FERET_MIN_ANGLE 15L
45 #define M_FERET_MAX_DIAMETER 16L
46 #define M_FERET_MAX_ANGLE 17L
47 #define M_FERET_MEAN_DIAMETER 18L
48 #define M_CONVEX_AREA 19L
49 #define M_CONVEX_PERIMETER 20L
50 #define M_X_MIN_AT_Y_MIN 21L
51 #define M_X_MAX_AT_Y_MAX 22L
52 #define M_Y_MIN_AT_X_MAX 23L
53 #define M_Y_MAX_AT_X_MIN 24L
54 #define M_COMPACTNESS 25L
55 #define M_NUMBER_OF_HOLES 26L
56 #define M_FERET_ELONGATION 27L
57 #define M_ROUGHNESS 28L
58 #define M_EULER_NUMBER 47L
59 #define M_LENGTH 0x00002000L
60 #define M_BREADTH 49L
61 #define M_ELONGATION 50L
62 #define M_INTERCEPT_0 51L
63 #define M_INTERCEPT_45 52L
64 #define M_INTERCEPT_90 53L
65 #define M_INTERCEPT_135 54L
66 #define M_NUMBER_OF_RUNS 55L
67 #define M_GENERAL_FERET 0x400L
68 
69 /* Greyscale only (ie, trivial for binary) */
70 
71 #define M_SUM_PIXEL 29L
72 #define M_MIN_PIXEL 30L
73 #define M_MAX_PIXEL 31L
74 #define M_MEAN_PIXEL 32L
75 #define M_SIGMA_PIXEL 33L
76 #define M_SUM_PIXEL_SQUARED 46L
77 
78 /* Binary or greyscale (might want both for a greyscale image) */
79 
80 #define M_CENTER_OF_GRAVITY_X 34L
81 #define M_CENTER_OF_GRAVITY_Y 35L
82 #define M_MOMENT_X0_Y1 36L
83 #define M_MOMENT_X1_Y0 37L
84 #define M_MOMENT_X1_Y1 38L
85 #define M_MOMENT_X0_Y2 39L
86 #define M_MOMENT_X2_Y0 40L
87 #define M_MOMENT_CENTRAL_X1_Y1 41L
88 #define M_MOMENT_CENTRAL_X0_Y2 42L
89 #define M_MOMENT_CENTRAL_X2_Y0 43L
90 #define M_AXIS_PRINCIPAL_ANGLE 44L
91 #define M_AXIS_SECONDARY_ANGLE 45L
92 #define M_GENERAL_MOMENT 0x800L
93 
94 /* General moment type */
95 
96 #define M_ORDINARY 0x400L
97 #define M_CENTRAL 0x800L
98 
99 /* the defines are used by the active mil BlobAnalysis.Results.Get method YV */
100 
101 #define M_RUN_LENGTHS 100L
102 #define M_RUN_X_COORDINATES 101L
103 #define M_RUN_Y_COORDINATES 102L
104 
105 /* Sorting options. */
106 #define M_NO_SORT 0L
107 #define M_SORT1_UP 0x02000000L
108 #define M_SORT2_UP 0x04000000L
109 #define M_SORT3_UP 0x06000000L
110 #define M_SORT1_DOWN 0x0A000000L
111 #define M_SORT2_DOWN 0x0C000000L
112 #define M_SORT3_DOWN 0x0E000000L
113 
114 /* Chain code specific features */
115 #define M_NUMBER_OF_CHAINED_PIXELS 56L
116 #define M_CHAIN_X 65L
117 #define M_CHAIN_Y 144L
118 #define M_CHAIN_INDEX 67L
119 
120 /* Short cuts for enabling multiple features */
121 
122 #define M_ALL_FEATURES 0x100L /* All except general Feret */
123 #define M_BOX 0x101L
124 #define M_CONTACT_POINTS 0x102L
125 #define M_CENTER_OF_GRAVITY 0x103L
126 #define M_NO_FEATURES 0x104L /* Still do label and area */
127 #define M_CHAINS 0x105L
128 
129 /* MblobControl() and/or MblobInquire() values */
130 
131 #define M_IMAGE_TYPE 1L
132 #define M_BLOB_IDENTIFICATION 2L
133 #define M_LATTICE 3L
134 #define M_FOREGROUND_VALUE 4L
135 #define M_PIXEL_ASPECT_RATIO 5L
136 #define M_NUMBER_OF_FERETS 63L
137 #define M_IMAGE_START_X 7L
138 #define M_IMAGE_START_Y 8L
139 #define M_RESET 9L
140 #define M_IDENTIFIER_IMAGE 10L
141 #define M_GREY_IMAGE 11L
142 #define M_IDENTIFIER_START_BIT 12L
143 #define M_GREY_START_BIT 13L
144 #define M_SAVE_RUNS 14L
145 #define M_IDENTIFIER_TYPE 15L
146 #define M_MAX_LABEL 16L
147 #define M_SELECT_FEATURE 17L
148 #define M_AUTO_RESET 0x00002000L // Already defined in mil.h
149 
150 
151 /* Blob identification values */
152 
153 #define M_WHOLE_IMAGE 1L
154 #define M_INDIVIDUAL 2L
155 #define M_LABELLED 4L
156 #define M_LABELED M_LABELLED // One "L" is american english while
157  // two "LL" is British (ref. Thalia tech writ.).
158 
159 /* Enabling value. */
160 
161 #define M_ENABLE -9997L
162 #define M_DISABLE -9999L
163 
164 /* Lattice values */
165 
166 #define M_4_CONNECTED 0x00000010L
167 #define M_8_CONNECTED 0x00000020L
168 
169 
170 /* Foreground values */
171 
172 #define M_NONZERO 0x80L
173 #define M_ZERO 0x100L
174 #define M_NON_ZERO M_NONZERO
175 #define M_FOREGROUND_WHITE 0x80L
176 #define M_FOREGROUND_BLACK 0x100L
177 
178 
179 /* Data types for results */
180 
181 #define M_TYPE_CHAR 0x00010000L
182 #define M_TYPE_SHORT 0x00020000L
183 #define M_TYPE_LONG 0x00040000L
184 #define M_TYPE_FLOAT 0x00080000L
185 #define M_TYPE_DOUBLE 0x00100000L
186 
187 
188 /* Conditional test */
189 
190 #define M_ALWAYS 0L
191 #define M_IN_RANGE 1L
192 #define M_OUT_RANGE 2L
193 #define M_EQUAL 3L
194 #define M_NOT_EQUAL 4L
195 #define M_GREATER 5L
196 #define M_LESS 6L
197 #define M_GREATER_OR_EQUAL 7L
198 #define M_LESS_OR_EQUAL 8L
199 
200 
201 /* Image type values (and flags for blob_enable_feature()) */
202 
203 #define M_BINARY 0x00001000L
204 #define M_GREYSCALE 0x0200L
205 #define M_GRAYSCALE M_GREYSCALE
206 
207 
208 /* MblobReconstruct() defines */
209 
210 #define M_RECONSTRUCT_FROM_SEED 1L
211 #define M_ERASE_BORDER_BLOBS 2L
212 #define M_FILL_HOLES 3L
213 #define M_EXTRACT_HOLES 4L
214 #define M_SEED_PIXELS_ALL_IN_BLOBS 1L
215 #define M_FOREGROUND_ZERO 2L
216 
217 /* MblobDraw() defines */
218 #define M_DRAW_BLOBS 0x400
219 #define M_DRAW_BLOBS_CONTOUR 0x100
220 #define M_DRAW_HOLES 0x2000
221 #define M_DRAW_HOLES_CONTOUR 0x4000
222 #define M_DRAW_BOX 32L // also used in m*draw
223 #define M_DRAW_POSITION 64L // also used in m*draw
224 #define M_DRAW_CENTER_OF_GRAVITY 0x080L
225 #define M_DRAW_FERET_MIN 0x1000L
226 #define M_DRAW_FERET_MAX 0x008L
227 #define M_DRAW_FERET_BOX 16L
228 #define M_DRAW_AXIS 0x200L // also used in mmoddraw
229 #define M_DRAW_BOX_CENTER 1L // also define in milmeas
230 
231 
232 
233 /* Miscellaneous */
234 #define M_ALL_BLOBS 0x40000000L
235 #define M_INCLUDED_BLOBS 0x80000000L
236 #define M_EXCLUDED_BLOBS 0x20000000L
237 #define M_ALL_BLOBS_OLD 0x105L
238 #define M_INCLUDED_BLOBS_OLD 0x106L
239 #define M_EXCLUDED_BLOBS_OLD 0x107L
240 
241 #define M_INCLUDE 1L
242 #define M_EXCLUDE 2L
243 #define M_DELETE 3L
244 #define M_MIN_FERETS 2L
245 #define M_MAX_FERETS 64L
246 #define M_INCLUDE_ONLY 0x101L
247 #define M_EXCLUDE_ONLY 0x102L
248 #define M_CONTOUR 0x800L
249 #define M_DUMMY 0x4000L
250 #define M_CLEAR 0x00000001L
251 #define M_NO_CLEAR 0x00000002L
252 
253 /* Other defines are in MIL.H */
254 
255 /********************************************************************
256  * Function prototypes
257  ********************************************************************/
258 #ifndef __midl
259 
260 MFTYPE32 MIL_ID MFTYPE MblobAllocFeatureList(MIL_ID SystemId,MIL_ID MPTYPE *FeatureListPtr);
261 MFTYPE32 MIL_ID MFTYPE MblobAllocResult(MIL_ID SystemId, MIL_ID MPTYPE *BlobResIdPtr);
262 MFTYPE32 void MFTYPE MblobCalculate(MIL_ID BlobIdentImageId, MIL_ID GreyImageId,
263  MIL_ID FeatureListId, MIL_ID BlobResId);
264 MFTYPE32 void MFTYPE MblobControl(MIL_ID BlobResId, long ProcMode, double Value);
265 MFTYPE32 void MFTYPE MblobFill(MIL_ID BlobResId, MIL_ID TargetImageId, long Mode,
266  long Value);
267 MFTYPE32 void MFTYPE MblobFree(MIL_ID BlobResId);
268 MFTYPE32 long MFTYPE MblobGetLabel(MIL_ID BlobResId, long XPos, long YPos,
269  long MPTYPE *BlobLabelPtr);
270 MFTYPE32 long MFTYPE MblobGetNumber(MIL_ID BlobResId, long MPTYPE *CountPtr);
271 MFTYPE32 void MFTYPE MblobGetResult(MIL_ID BlobResId, long Feature,
272  void MPTYPE *TargetArrayPtr);
273 MFTYPE32 void MFTYPE MblobGetResultSingle(MIL_ID BlobResId, long BlobLabel,
274  long Feature, void MPTYPE *ValuePtr);
275 MFTYPE32 void MFTYPE MblobGetRuns(MIL_ID BlobResId, long BlobLabel, long ArrayType,
276  void MPTYPE *RunXPtr, void MPTYPE *RunYPtr, void MPTYPE *RunLengthPtr);
277 MFTYPE32 long MFTYPE MblobInquire(MIL_ID BlobResId, long ProcMode, void MPTYPE *ValuePtr);
278 MFTYPE32 void MFTYPE MblobLabel(MIL_ID BlobResId, MIL_ID TargetImageId, long Mode);
279 MFTYPE32 void MFTYPE MblobSelect(MIL_ID BlobResId, long Operation, long Feature,
280  long Condition, double CondLow, double CondHigh);
281 MFTYPE32 void MFTYPE MblobSelectFeature(MIL_ID FeatureListId, long Feature);
282 MFTYPE32 void MFTYPE MblobSelectFeret(MIL_ID FeatureListId, double Angle);
283 MFTYPE32 void MFTYPE MblobSelectMoment(MIL_ID FeatureListId, long MomType,
284  long XMomOrder, long YMomOrder);
285 MFTYPE32 void MFTYPE MblobReconstruct(MIL_ID srce_image_id, MIL_ID seed_image_id,
286  MIL_ID dest_image_id, long operation, long mode);
287 
288 MFTYPE32 void MFTYPE MblobDraw(MIL_ID GraphContId, MIL_ID ResultId, MIL_ID DestImageId,
289  long Operation, long Label, long ControlFlag);
290 
291 #endif
292 
293 
294 /* C++ directive if needed */
295 #ifdef __cplusplus
296 }
297 #endif
298 
299 #endif // !M_MIL_LITE
300 
301 #endif /* __MILBLOB_H__ */
long MIL_ID
Definition: AcqOdyssey.h:45
MFTYPE32 long MFTYPE MblobInquire(MIL_ID BlobResId, long ProcMode, void MPTYPE *ValuePtr)
MFTYPE32 MIL_ID MFTYPE MblobAllocFeatureList(MIL_ID SystemId, MIL_ID MPTYPE *FeatureListPtr)
MFTYPE32 void MFTYPE MblobSelect(MIL_ID BlobResId, long Operation, long Feature, long Condition, double CondLow, double CondHigh)
MFTYPE32 long MFTYPE MblobGetNumber(MIL_ID BlobResId, long MPTYPE *CountPtr)
MFTYPE32 MIL_ID MFTYPE MblobAllocResult(MIL_ID SystemId, MIL_ID MPTYPE *BlobResIdPtr)
MFTYPE32 void MFTYPE MblobSelectFeret(MIL_ID FeatureListId, double Angle)
MFTYPE32 void MFTYPE MblobGetResultSingle(MIL_ID BlobResId, long BlobLabel, long Feature, void MPTYPE *ValuePtr)
MFTYPE32 void MFTYPE MblobGetRuns(MIL_ID BlobResId, long BlobLabel, long ArrayType, void MPTYPE *RunXPtr, void MPTYPE *RunYPtr, void MPTYPE *RunLengthPtr)
MFTYPE32 void MFTYPE MblobReconstruct(MIL_ID srce_image_id, MIL_ID seed_image_id, MIL_ID dest_image_id, long operation, long mode)
MFTYPE32 void MFTYPE MblobFree(MIL_ID BlobResId)
MFTYPE32 long MFTYPE MblobGetLabel(MIL_ID BlobResId, long XPos, long YPos, long MPTYPE *BlobLabelPtr)
MFTYPE32 void MFTYPE MblobSelectMoment(MIL_ID FeatureListId, long MomType, long XMomOrder, long YMomOrder)
MFTYPE32 void MFTYPE MblobDraw(MIL_ID GraphContId, MIL_ID ResultId, MIL_ID DestImageId, long Operation, long Label, long ControlFlag)
MFTYPE32 void MFTYPE MblobSelectFeature(MIL_ID FeatureListId, long Feature)
MFTYPE32 void MFTYPE MblobFill(MIL_ID BlobResId, MIL_ID TargetImageId, long Mode, long Value)
MFTYPE32 void MFTYPE MblobLabel(MIL_ID BlobResId, MIL_ID TargetImageId, long Mode)
MFTYPE32 void MFTYPE MblobControl(MIL_ID BlobResId, long ProcMode, double Value)
MFTYPE32 void MFTYPE MblobCalculate(MIL_ID BlobIdentImageId, MIL_ID GreyImageId, MIL_ID FeatureListId, MIL_ID BlobResId)
MFTYPE32 void MFTYPE MblobGetResult(MIL_ID BlobResId, long Feature, void MPTYPE *TargetArrayPtr)