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
23extern "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
260MFTYPE32 MIL_ID MFTYPE MblobAllocFeatureList(MIL_ID SystemId,MIL_ID MPTYPE *FeatureListPtr);
261MFTYPE32 MIL_ID MFTYPE MblobAllocResult(MIL_ID SystemId, MIL_ID MPTYPE *BlobResIdPtr);
262MFTYPE32 void MFTYPE MblobCalculate(MIL_ID BlobIdentImageId, MIL_ID GreyImageId,
263 MIL_ID FeatureListId, MIL_ID BlobResId);
264MFTYPE32 void MFTYPE MblobControl(MIL_ID BlobResId, long ProcMode, double Value);
265MFTYPE32 void MFTYPE MblobFill(MIL_ID BlobResId, MIL_ID TargetImageId, long Mode,
266 long Value);
267MFTYPE32 void MFTYPE MblobFree(MIL_ID BlobResId);
268MFTYPE32 long MFTYPE MblobGetLabel(MIL_ID BlobResId, long XPos, long YPos,
269 long MPTYPE *BlobLabelPtr);
270MFTYPE32 long MFTYPE MblobGetNumber(MIL_ID BlobResId, long MPTYPE *CountPtr);
271MFTYPE32 void MFTYPE MblobGetResult(MIL_ID BlobResId, long Feature,
272 void MPTYPE *TargetArrayPtr);
273MFTYPE32 void MFTYPE MblobGetResultSingle(MIL_ID BlobResId, long BlobLabel,
274 long Feature, void MPTYPE *ValuePtr);
275MFTYPE32 void MFTYPE MblobGetRuns(MIL_ID BlobResId, long BlobLabel, long ArrayType,
276 void MPTYPE *RunXPtr, void MPTYPE *RunYPtr, void MPTYPE *RunLengthPtr);
277MFTYPE32 long MFTYPE MblobInquire(MIL_ID BlobResId, long ProcMode, void MPTYPE *ValuePtr);
278MFTYPE32 void MFTYPE MblobLabel(MIL_ID BlobResId, MIL_ID TargetImageId, long Mode);
279MFTYPE32 void MFTYPE MblobSelect(MIL_ID BlobResId, long Operation, long Feature,
280 long Condition, double CondLow, double CondHigh);
281MFTYPE32 void MFTYPE MblobSelectFeature(MIL_ID FeatureListId, long Feature);
282MFTYPE32 void MFTYPE MblobSelectFeret(MIL_ID FeatureListId, double Angle);
283MFTYPE32 void MFTYPE MblobSelectMoment(MIL_ID FeatureListId, long MomType,
284 long XMomOrder, long YMomOrder);
285MFTYPE32 void MFTYPE MblobReconstruct(MIL_ID srce_image_id, MIL_ID seed_image_id,
286 MIL_ID dest_image_id, long operation, long mode);
287
288MFTYPE32 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)