2857 lines
143 KiB
C++
2857 lines
143 KiB
C++
/////////////////////////////////////////////////////////////////
|
|
//
|
|
// Filename : MILIM.H
|
|
// Revision : 10.60.0776
|
|
//
|
|
// Copyright © Matrox Electronic Systems Ltd., 1992-2023.
|
|
// All Rights Reserved
|
|
//
|
|
/////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __MILIM_H__
|
|
#define __MILIM_H__
|
|
|
|
/************************************************************************/
|
|
/* MimAlloc() */
|
|
/************************************************************************/
|
|
#define M_DEINTERLACE_CONTEXT 1L
|
|
|
|
#define M_FLAT_FIELD_CONTEXT 3L
|
|
#define M_DEAD_PIXEL_CONTEXT 4L
|
|
#define M_REARRANGE_CONTEXT 5L
|
|
#define M_STAT_MULTIPLE_CONTEXT 6L
|
|
#define M_MATCH_CONTEXT 7L
|
|
|
|
#define M_WAVELET_TRANSFORM_CONTEXT 9L
|
|
#define M_WAVELET_TRANSFORM_CUSTOM_CONTEXT 10L
|
|
#define M_FIND_ORIENTATION_CONTEXT 11L
|
|
#define M_LOCATE_PEAK_1D_CONTEXT 12L
|
|
#define M_HISTOGRAM_EQUALIZE_ADAPTIVE_CONTEXT 13L
|
|
#define M_BINARIZE_ADAPTIVE_CONTEXT 14L
|
|
#define M_BINARIZE_ADAPTIVE_FROM_SEED_CONTEXT 15L
|
|
#define M_STATISTICS_CONTEXT 16L
|
|
#define M_STATISTICS_CUMULATIVE_CONTEXT 17L
|
|
#define M_AUGMENTATION_CONTEXT 18L
|
|
#define M_LINEAR_FILTER_IIR_CONTEXT 19L
|
|
#define M_FILTER_MAJORITY_CONTEXT 20L
|
|
|
|
|
|
/************************************************************************/
|
|
/* MimGetResult() */
|
|
/************************************************************************/
|
|
#define M_VALUE 0L
|
|
#define M_POSITION_X 0x00003400L
|
|
#define M_POSITION_Y 0x00004400L
|
|
#define M_NB_EVENT 5L
|
|
#define M_NUMBER 1009L // Already defined elsewhere
|
|
#define M_TOTAL_NUMBER 1010L // Already defined elsewhere
|
|
#define M_NUMBER_OF_LEVELS 1797L
|
|
#define M_WAVELET_TYPE 1802L // Already defined elsewhere
|
|
#define M_TRANSFORMATION_MODE 1824L // Already defined elsewhere
|
|
#define M_WAVELET_SIZE 1856L
|
|
#define M_WAVELET_DRAW_SIZE_X_WITH_PADDING 1857L
|
|
#define M_WAVELET_DRAW_SIZE_Y_WITH_PADDING 1858L
|
|
#define M_REAL_PART 0x1000L
|
|
#define M_IMAGINARY_PART 0x2000L
|
|
#define M_TRANSFORMATION_DOMAIN 1864L
|
|
#define M_ORIGINAL_IMAGE_SIZE_X 1869L
|
|
#define M_ORIGINAL_IMAGE_SIZE_Y 1870L
|
|
#define M_WAVELET_DRAW_SIZE_X 1871L
|
|
#define M_WAVELET_DRAW_SIZE_Y 1872L
|
|
#define M_ALLOCATED_TYPE 2183L
|
|
|
|
/************************************************************************/
|
|
/* MimGetResult/MimHistogram() */
|
|
/************************************************************************/
|
|
#define M_CUMULATIVE_VALUE 1L
|
|
#define M_PERCENTAGE 2L // to be used as a complement to M_VALUE and M_CUMULATIVE_VALUE
|
|
#define M_PERCENTILE_VALUE 0x10L // can also be used as a complement to M_GREATER/... with MimBinarize
|
|
#define M_PERCENTILE_VALUE_RESULT_SIZE 101L // 0 to 100%
|
|
#define M_HIST_REAL_SIZE 102L // Real size of histogram obtain from automatic bin size.
|
|
#define M_HIST_VALUE_OFFSET 103L // Source value of the first bin.
|
|
#define M_HIST_VALUE_RANGE 104L // Source value range.
|
|
|
|
/************************************************************************/
|
|
/* MimGetResult/MimAugment() */
|
|
/************************************************************************/
|
|
#define M_AUG_ROTATION_ANGLE 3265L
|
|
#define M_AUG_TRANSLATION_X 3266L
|
|
#define M_AUG_TRANSLATION_Y 3267L
|
|
#define M_AUG_SCALE_FACTOR 3268L
|
|
#define M_AUG_ASPECT_RATIO 3269L
|
|
#define M_AUG_ASPECT_RATIO_MODE 3373L
|
|
#define M_AUG_FLIP_DIRECTION 3374L
|
|
#define M_AUG_SHEAR_X 3270L
|
|
#define M_AUG_SHEAR_Y 3271L
|
|
#define M_AUG_DILATION_NB_ITERATIONS 3272L
|
|
#define M_AUG_EROSION_NB_ITERATIONS 3273L
|
|
#define M_AUG_DILATION_ASYM_NB_ITERATIONS 3274L
|
|
#define M_AUG_DILATION_ASYM_SUBAREA 3275L
|
|
#define M_AUG_EROSION_ASYM_NB_ITERATIONS 3276L
|
|
#define M_AUG_EROSION_ASYM_SUBAREA 3277L
|
|
#define M_AUG_LIGHTING_DIRECTIONAL_ANGLE 3278L
|
|
#define M_AUG_SATURATION_GAIN 3279L
|
|
#define M_AUG_HSV_VALUE_GAIN 3280L
|
|
#define M_AUG_HUE_OFFSET 3281L
|
|
#define M_AUG_SMOOTH_DERICHE_VALUE 3282L
|
|
#define M_AUG_BLUR_MOTION_SIZE 3283L
|
|
#define M_AUG_BLUR_MOTION_ANGLE 3284L
|
|
#define M_AUG_SHARPEN_DERICHE_VALUE 3285L
|
|
#define M_AUG_SMOOTH_GAUSSIAN_STDDEV 3286L
|
|
#define M_AUG_CROP_TOP_LEFT_X 3287L
|
|
#define M_AUG_CROP_TOP_LEFT_Y 3288L
|
|
#define M_AUG_CROP_BOTTOM_RIGHT_X 3289L
|
|
#define M_AUG_CROP_BOTTOM_RIGHT_Y 3290L
|
|
#define M_AUG_NOISE_SALT_PEPPER_DENSITY 3375L
|
|
#define M_AUG_NOISE_MULTIPLICATIVE_STDDEV 3376L
|
|
#define M_AUG_NOISE_GAUSSIAN_ADDITIVE_STDDEV 3377L
|
|
#define M_AUG_INTENSITY_MULTIPLY_VALUE 3365L
|
|
#define M_AUG_INTENSITY_ADD_VALUE 3366L
|
|
#define M_AUG_GAMMA_VALUE_BAND_0 3367L
|
|
#define M_AUG_GAMMA_VALUE_BAND_1 3369L
|
|
#define M_AUG_GAMMA_VALUE_BAND_2 3371L
|
|
#define M_AUG_REDUCE_FACTOR 5736L
|
|
#define M_AUG_REDUCE_OFFSET_X 5744L
|
|
#define M_AUG_REDUCE_OFFSET_Y 5745L
|
|
|
|
#define M_AUG_SEED_USED 3423L
|
|
|
|
|
|
/* Result vectors */
|
|
#define M_AUG_OPERATIONS_ENABLED 3291L
|
|
#define M_AUG_OPERATIONS_APPLIED 3292L
|
|
#define M_AUG_OPERATION_RESULT_TYPES 3293L
|
|
#define M_AUG_OPERATION_RESULT_VALUES 3294L
|
|
#define M_AUG_OPERATION_ASSOCIATED_WITH_RESULT_TYPES 3295L
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
/* MimGetResultSingle() */
|
|
/************************************************************************/
|
|
#define M_WAVELET_COEFFICIENTS_IMAGE_ID 1850L
|
|
#define M_WAVELET_LEVEL_SIZE_X 1798L
|
|
#define M_WAVELET_LEVEL_SIZE_Y 1799L
|
|
#define M_WAVELET_LEVEL_PADDING_OFFSET_X 1866L
|
|
#define M_WAVELET_LEVEL_PADDING_OFFSET_Y 1867L
|
|
#define M_PREDEFINED 1967L
|
|
#define M_COMPLEX 1968L
|
|
|
|
#define M_HORIZONTAL_LEVEL_TAG 0x01000000L
|
|
#define M_HORIZONTAL_LEVEL(a) (M_HORIZONTAL_LEVEL_TAG + (a))
|
|
#define M_VERTICAL_LEVEL_TAG 0x02000000L
|
|
#define M_VERTICAL_LEVEL(a) (M_VERTICAL_LEVEL_TAG + (a))
|
|
#define M_DIAGONAL_LEVEL_TAG 0x04000000L
|
|
#define M_DIAGONAL_LEVEL(a) (M_DIAGONAL_LEVEL_TAG + (a))
|
|
#define M_APPROXIMATION 0x08000000L
|
|
|
|
/************************************************************************/
|
|
/* MimGetResult2d()/MimStatMultiple */
|
|
/************************************************************************/
|
|
#define M_MAX 0x04000000L //Already defined elsewhere
|
|
#define M_MAX_ABS 0x00800000L //Already defined elsewhere
|
|
#define M_MEAN 0x08000000L //Already defined elsewhere
|
|
#define M_MIN 0x02000000L //Already defined elsewhere
|
|
#define M_MIN_ABS 0x00200000L //Already defined elsewhere
|
|
#define M_STANDARD_DEVIATION 0x10000000L //Already defined elsewhere
|
|
#define M_SUM 0x00004000L //Already defined elsewhere
|
|
#define M_SUM_ABS 0x00000008L //Already defined elsewhere
|
|
#define M_SUM_OF_SQUARES 0x00000400L //Already defined elsewhere
|
|
|
|
/************************************************************************/
|
|
/* MimControl()/MimInquire() */
|
|
/************************************************************************/
|
|
#define M_IN_IM_CONTROL_MIL_ID_RANGE(X) ((X) == M_DARK_IMAGE || \
|
|
(X) == M_OFFSET_IMAGE || \
|
|
(X) == M_FLAT_IMAGE || \
|
|
(X) == M_DEAD_PIXELS || \
|
|
(X) == M_MODEL_IMAGE || \
|
|
(X) == M_MASK_IMAGE || \
|
|
(X) == M_WEIGHT_IMAGE)
|
|
|
|
|
|
// To avoid eventual clashes with M_TYPE_XXX, we must use the mask before checking the value itself.
|
|
#define M_MASK_MIM_INQUIRE_TYPE 0x0001FFFF
|
|
#define M_RESULT_SIZE 0L
|
|
#define M_RESULT_TYPE 1L
|
|
#define M_DEINTERLACE_TYPE 2L
|
|
#define M_DISCARD_FIELD 3L
|
|
#define M_FIRST_FIELD 4L
|
|
#define M_MOTION_DETECT_NUM_FRAMES 5L
|
|
#define M_MOTION_DETECT_THRESHOLD 6L
|
|
#define M_MOTION_DETECT_REFERENCE_FRAME 7L
|
|
#define M_MOTION_DETECT_OUTPUT 8L
|
|
#define M_SOURCE_FIRST_IMAGE 9L
|
|
#define M_SOURCE_START_IMAGE M_SOURCE_FIRST_IMAGE
|
|
#if OldDefinesSupport
|
|
#define M_EXTENDED_CONTEXT_TYPE 10L
|
|
MIL_DEPRECATED(M_EXTENDED_CONTEXT_TYPE, 1010)
|
|
#endif
|
|
#define M_EXTENDED_RESULT_TYPE 11L
|
|
#define M_ASSOCIATED_CONTEXT_TYPE 2968L
|
|
|
|
// Inquire and control types for M_FLAT_FIELD_CONTEXT.
|
|
#define M_DARK_IMAGE 200L
|
|
#define M_OFFSET_IMAGE 201L
|
|
#define M_FLAT_IMAGE 202L
|
|
|
|
#define M_DARK_CONST 203L
|
|
#define M_OFFSET_CONST 204L
|
|
#define M_FLAT_CONST 205L
|
|
#define M_GAIN_CONST 206L
|
|
|
|
#define M_DARK_IMAGE_NB_BANDS 207L
|
|
#define M_DARK_IMAGE_WIDTH 208L
|
|
#define M_DARK_IMAGE_HEIGHT 209L
|
|
#define M_DARK_IMAGE_TYPE 210L
|
|
|
|
#define M_OFFSET_IMAGE_NB_BANDS 212L
|
|
#define M_OFFSET_IMAGE_WIDTH 213L
|
|
#define M_OFFSET_IMAGE_HEIGHT 214L
|
|
#define M_OFFSET_IMAGE_TYPE 215L
|
|
|
|
#define M_FLAT_IMAGE_NB_BANDS 217L
|
|
#define M_FLAT_IMAGE_WIDTH 218L
|
|
#define M_FLAT_IMAGE_HEIGHT 219L
|
|
#define M_FLAT_IMAGE_TYPE 220L
|
|
|
|
#define M_EFFECTIVE_GAIN_CONST 221L
|
|
|
|
#define M_INVALID_CONST 0x40000000L
|
|
|
|
// Inquire and control types for M_REARRANGE_CONTEXT.
|
|
#define M_X_SOURCE 300L
|
|
#define M_Y_SOURCE 301L
|
|
#define M_XY_SOURCE 302L
|
|
#define M_X_DESTINATION 303L
|
|
#define M_Y_DESTINATION 304L
|
|
#define M_XY_DESTINATION 305L
|
|
#define M_X_SIZE 306L
|
|
#define M_Y_SIZE 307L
|
|
#define M_XY_SIZE 308L
|
|
|
|
#define M_X_SOURCE_ARRAY_SIZE 309L
|
|
#define M_Y_SOURCE_ARRAY_SIZE 310L
|
|
#define M_XY_SOURCE_ARRAY_SIZE 311L
|
|
#define M_X_DESTINATION_ARRAY_SIZE 312L
|
|
#define M_Y_DESTINATION_ARRAY_SIZE 313L
|
|
#define M_XY_DESTINATION_ARRAY_SIZE 314L
|
|
#define M_X_SIZE_ARRAY_SIZE 315L
|
|
#define M_Y_SIZE_ARRAY_SIZE 316L
|
|
#define M_XY_SIZE_ARRAY_SIZE 317L
|
|
|
|
// Inquire and control types for M_DEAD_PIXEL_CONTEXT.
|
|
#define M_DEAD_PIXELS 80L
|
|
#define M_X_DEAD_PIXELS 81L
|
|
#define M_Y_DEAD_PIXELS 82L
|
|
#define M_XY_DEAD_PIXELS 83L
|
|
|
|
#define M_X_DEAD_PIXELS_ARRAY_SIZE 84L
|
|
#define M_Y_DEAD_PIXELS_ARRAY_SIZE 85L
|
|
#define M_XY_DEAD_PIXELS_ARRAY_SIZE 86L
|
|
#define M_DEAD_PIXELS_IMAGE_NB_BANDS 87L //Inquire only
|
|
#define M_DEAD_PIXELS_IMAGE_WIDTH 88L //Inquire only
|
|
#define M_DEAD_PIXELS_IMAGE_HEIGHT 89L //Inquire only
|
|
#define M_DEAD_PIXELS_IMAGE_TYPE 91L //Inquire only
|
|
#define M_DEAD_PIXELS_IMAGE_ATTRIBUTE 92L //Inquire only
|
|
|
|
|
|
// Inquire and control types for M_STAT_MULTIPLE_CONTEXT.
|
|
#define M_TYPE 1008L //Already defined elsewhere
|
|
#define M_SIZE_X 1536L //Already defined elsewhere
|
|
#define M_SIZE_Y 1537L //Already defined elsewhere
|
|
#define M_2D 90L
|
|
//See MimStat for M_TYPE possible values.
|
|
|
|
// Inquire and control types for M_MATCH_CONTEXT.
|
|
#define M_MODEL_IMAGE 1019L
|
|
#define M_MASK_IMAGE 1020L //Already defined in milreg.h
|
|
#define M_MAX_SCORE 100L
|
|
#define M_SCORE_TYPE 37L //Already defined elsewhere
|
|
#define M_MODEL_STEP 33L //Already defined elsewhere
|
|
#define M_MODE 103L //Already defined elsewhere
|
|
#define M_CORRELATE_NORMALIZED 1L //Mode value.
|
|
#define M_CORRELATE 2L //Mode value.
|
|
#define M_ABS_SUM_OF_DIFFERENCES 3L //Mode value.
|
|
#define M_MAX_DEPTH MIL_MAKE_CONST(0xFFFFFFFF, 0x00000000FFFFFFFF) //M_MAX_SCORE value.
|
|
#define M_NORM 4000L //Already defined elsewhere, ScoreType value.
|
|
#define M_SQR_NORM 4001L //Already defined elsewhere, ScoreType value.
|
|
#define M_NORM_CLIP 4002L //ScoreType value.
|
|
#define M_NORM_CLIP_SQR 4003L //ScoreType value.
|
|
|
|
#define M_MODEL_IMAGE_NB_BANDS 105L //Inquire only
|
|
#define M_MODEL_IMAGE_WIDTH 106L //Inquire only
|
|
#define M_MODEL_IMAGE_HEIGHT 107L //Inquire only
|
|
#define M_MODEL_IMAGE_TYPE 108L //Inquire only
|
|
#define M_MODEL_IMAGE_ATTRIBUTE 109L //Inquire only
|
|
|
|
#define M_MASK_IMAGE_NB_BANDS 110L //Inquire only
|
|
#define M_MASK_IMAGE_WIDTH 111L //Inquire only
|
|
#define M_MASK_IMAGE_HEIGHT 112L //Inquire only
|
|
#define M_MASK_IMAGE_TYPE 113L //Inquire only
|
|
#define M_MASK_IMAGE_ATTRIBUTE 114L //Inquire only
|
|
|
|
|
|
// Inquire and control types for M_WAVELET_TRANSFORM_CONTEXT.
|
|
#define M_WAVELET_TYPE 1802L
|
|
#define M_CUSTOM 2 //WaveletType value
|
|
#define M_DAUBECHIES_1 3L //WaveletType value
|
|
#define M_DAUBECHIES_2 4L //WaveletType value
|
|
#define M_DAUBECHIES_3 5L //WaveletType value
|
|
#define M_DAUBECHIES_4 6L //WaveletType value
|
|
#define M_DAUBECHIES_5 7L //WaveletType value
|
|
#define M_DAUBECHIES_6 8L //WaveletType value
|
|
#define M_DAUBECHIES_7 9L //WaveletType value
|
|
#define M_DAUBECHIES_8 10L //WaveletType value
|
|
#define M_DAUBECHIES_3_COMPLEX 11L //WaveletType value
|
|
#define M_DAUBECHIES_5_COMPLEX 12L //WaveletType value
|
|
#define M_DAUBECHIES_7_COMPLEX 13L //WaveletType value
|
|
#define M_SYMLET_1 14L //WaveletType value
|
|
#define M_SYMLET_2 15L //WaveletType value
|
|
#define M_SYMLET_3 16L //WaveletType value
|
|
#define M_SYMLET_4 17L //WaveletType value
|
|
#define M_SYMLET_5 18L //WaveletType value
|
|
#define M_SYMLET_6 19L //WaveletType value
|
|
#define M_SYMLET_7 20L //WaveletType value
|
|
#define M_SYMLET_8 21L //WaveletType value
|
|
#define M_HAAR 1L //WaveletType value
|
|
#define M_TRANSFORMATION_MODE 1824L
|
|
#define M_DYADIC 1825L //DecompositionMode value
|
|
#define M_UNDECIMATED 1826L //DecompositionMode value
|
|
#define M_FILTER_FORWARD_LOW_PASS_ID 1820L // MimWaveletSetFilter
|
|
#define M_FILTER_REVERSE_LOW_PASS_ID 1821L // MimWaveletSetFilter
|
|
#define M_FILTER_FORWARD_HIGH_PASS_ID 1822L // MimWaveletSetFilter
|
|
#define M_FILTER_REVERSE_HIGH_PASS_ID 1823L // MimWaveletSetFilter
|
|
#define M_WAVELET_VALIDITY 1827L // MimInquire
|
|
#define M_WAVELET_CONTEXT_TYPE 1828L // MimInquire
|
|
#define M_REAL_PART 0x1000L // MimInquire
|
|
#define M_IMAGINARY_PART 0x2000L // MimInquire
|
|
|
|
// Inquire and control types for M_FIND_ORIENTATION_CONTEXT.
|
|
#define M_INTERPOLATION_MODE 3018L //Defined in mildisplay.h
|
|
#define M_FREQUENCY_CUTOFF_RATIO_LOW 1830L //Low frequency cut off
|
|
#define M_FREQUENCY_CUTOFF_RATIO_HIGH 1831L //High frequency cut off
|
|
#define M_CLIP_CENTER 106L //Mode value
|
|
#define M_RESIZE_DOWN 107L //Mode value
|
|
#define M_RESIZE_UP 108L //Mode value
|
|
#define M_CENTERED_WINDOW (M_PSEUDO_ID | 0x40)
|
|
#define M_SCORE 0x00001400L //Defined in milgab.h
|
|
#define M_BORDER_ATTENUATION 109L
|
|
|
|
// Inquire and control types for M_HISTOGRAM_EQUALIZE_ADAPTIVE_CONTEXT.
|
|
#define M_NUMBER_OF_TILES_X 250L // Number of tiles in X
|
|
#define M_NUMBER_OF_TILES_Y 251L // Number of tiles in Y
|
|
#define M_CLIP_LIMIT 252L // Mormalized clip limit.
|
|
#define M_HIST_SIZE 253L // Number of histogram bins.
|
|
#define M_ACCORDING_TO_SOURCE -1L // Number of bin determine from source range.
|
|
#define M_OPERATION M_METHOD // Already defined elsewhere. Histogram equalization distrition.
|
|
#define M_UNIFORM 1 // Already defined elsewhere
|
|
#define M_EXPONENTIAL 2 // Already defined elsewhere
|
|
#define M_RAYLEIGH 3 // Already defined elsewhere
|
|
#define M_HYPER_CUBE_ROOT 4 // Already defined elsewhere
|
|
#define M_HYPER_LOG 5 // Already defined elsewhere
|
|
#define M_ALPHA_VALUE 5278L // Already defined elsewhere
|
|
|
|
|
|
// Inquire and control types for M_LOCATE_PEAK_1D_CONTEXT/M_LOCATE_PEAK_1D_RESULT.
|
|
#define M_SCAN_LANE_DIRECTION 1
|
|
#define M_PEAK_VALUE_MODE 2
|
|
#define M_PEAK_INTENSITY_MODE 3
|
|
#define M_NUMBER_OF_PEAKS 4
|
|
#define M_SORT_CRITERION 5
|
|
#define M_PEAK_INTENSITY_INVALID_VALUE 5605L
|
|
#define M_PEAK_WIDTH_NOMINAL 6
|
|
#define M_PEAK_WIDTH_DELTA 7
|
|
#define M_FRAME_SIZE 8
|
|
#define M_FULL_SIZE 0L // Already defined in mildisplay.h
|
|
#define M_SELECT_PEAK(a,b) ((MIL_INT64)((MIL_UINT64)(a) << 32 | (MIL_UINT64)(b)))
|
|
|
|
//Common to many objects.
|
|
#define M_MODE 103L
|
|
|
|
// Already defined in another header file.
|
|
#define M_LINES 0x00000080L
|
|
|
|
#define M_RECTS 0x00000100L
|
|
|
|
#define M_AVERAGE 0x00000020L
|
|
#define M_DISCARD 0x00000021L
|
|
#define M_BOB 0x00000022L
|
|
#define M_ADAPTIVE_AVERAGE 0x00000023L
|
|
#define M_ADAPTIVE_DISCARD 0x00000024L
|
|
#define M_ADAPTIVE_BOB 0x00000025L
|
|
#define M_ADAPTATIVE_AVERAGE M_ADAPTIVE_AVERAGE
|
|
#define M_ADAPTATIVE_DISCARD M_ADAPTIVE_DISCARD
|
|
#define M_ADAPTATIVE_BOB M_ADAPTIVE_BOB
|
|
#define M_ODD_FIELD 1L
|
|
#define M_EVEN_FIELD 2L
|
|
#define M_FIRST_FRAME 0x40000001L
|
|
#define M_CENTER_FRAME 0x40000002L
|
|
#define M_LAST_FRAME 0x40000003L
|
|
#define M_RESULT_OUTPUT_UNITS 1300L
|
|
#define M_NUMBER_OF_FRAMES 1080L
|
|
|
|
// Control values for M_RESULT_OUTPUT_UNITS
|
|
#define M_PIXEL 0x1000L
|
|
#define M_WORLD 0x2000L
|
|
#define M_ACCORDING_TO_CALIBRATION 1301L
|
|
|
|
// Control for M_HIST_LIST
|
|
#define M_HIST_BIN_SIZE_MODE 400L // ControlType to specify binning mode.
|
|
#define M_REGULAR 0x00020000L // Define elsewhere. Default mode used before, with no binning and
|
|
// just ignore values that don't fit in the size of the result.
|
|
#define M_FIT_SRC_RANGE 0x01 // Use the size as the number of bin and a simple algo for indexing.
|
|
#define M_FIT_SRC_DATA 0x02 // Use the size as the number of bin and a simple algo for indexing.
|
|
#define M_FREEDMAN 0x03 // MIL automaticly determine optimal bin size/number of bin using Freedman algorithm.
|
|
#define M_HIST_SMOOTHING_ITERATIONS 401L // Number of smoothing pass to do as post processing.
|
|
|
|
// Inquire and control types for M_LINEAR_FILTER_IIR_CONTEXT.
|
|
#define M_FILTER_TYPE 1046L // Already defined in miledge.h, milmeas.h
|
|
#define M_SHEN 0x802L // FilterType value.
|
|
#define M_DERICHE M_ID_OFFSET_OF_DEFAULT_KERNEL + 10L // FilterType value. Already defined in miledge.h
|
|
#define M_VLIET 0x803L // FilterType value.
|
|
|
|
#define M_SMOOTHNESS 108L // Already defined in milmod.h, milmeas.h
|
|
#define M_FILTER_SMOOTHNESS M_SMOOTHNESS // Already defined in milmeas.h
|
|
|
|
#define M_FILTER_SMOOTHNESS_TYPE 2842L
|
|
#define M_NORMALIZED 0x00000002L // Smoothness type value.
|
|
#define M_NATIVE 0x00000003L // Smoothness type value.
|
|
|
|
#define M_FILTER_RESPONSE_TYPE 2843L
|
|
#define M_SLOPE 2844L // Response type value.
|
|
#define M_STEP 2845L // Response type value.
|
|
|
|
#define M_FILTER_STEP_RESPONSE_MAPPING 5783L
|
|
#define M_ACCORDING_TO_SOURCE -1L // Already defined elsewhere.
|
|
#define M_ACCORDING_TO_DEST -2L //
|
|
|
|
#define M_FILTER_ASPECT_RATIO 2846L
|
|
|
|
#define M_FILTER_DEFAULT_SHARPEN_PARAM 4056L
|
|
|
|
// Inquire and control type for M_FILTER_MAJORITY_CONTEXT.
|
|
#define M_USE_IGNORED_VALUE 5625L
|
|
#define M_IGNORED_VALUE 5626L
|
|
#define M_TIE_BREAKER_MODE 5627L
|
|
#define M_USE_FREQUENCY_TIE_BREAKER 5628L
|
|
#define M_WEIGHT_IMAGE 5629L
|
|
|
|
#define M_WEIGHT_IMAGE_NB_BANDS 5631L //Inquire only
|
|
#define M_WEIGHT_IMAGE_WIDTH 5636L //Inquire only
|
|
#define M_WEIGHT_IMAGE_HEIGHT 5637L //Inquire only
|
|
#define M_WEIGHT_IMAGE_TYPE 5638L //Inquire only
|
|
#define M_WEIGHT_IMAGE_ATTRIBUTE 5639L //Inquire only
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
/* MimFindExtreme() */
|
|
/************************************************************************/
|
|
#define M_MIN_VALUE MAKE_INT64(0x0000010000000000)
|
|
#define M_MAX_VALUE MAKE_INT64(0x0000020000000000)
|
|
#define M_MIN_ABS_VALUE 4L
|
|
#define M_MAX_ABS_VALUE 8L
|
|
|
|
/************************************************************************/
|
|
/* MimStat() */
|
|
/************************************************************************/
|
|
#define M_MIN_ABS 0x00200000L //Already defined elsewhere
|
|
#define M_MAX_ABS 0x00800000L //Already defined elsewhere
|
|
#define M_SUM_ABS 0x00000008L //Already defined elsewhere
|
|
#define M_SUM_OF_SQUARES 0x00000400L //Already defined elsewhere
|
|
#define M_SUM 0x00004000L //Already defined in milocr.h
|
|
#define M_MEAN 0x08000000L //Already defined in milmeas.h
|
|
#define M_STANDARD_DEVIATION 0x10000000L //Already defined in milmeas.h
|
|
#define M_NUMBER 1009L // Already defined elsewhere 0x000003F1
|
|
#define M_ANGULAR_DATA_MEAN 0x00000004L
|
|
#define M_ANGULAR_DATA_COHERENCE 0x00000800L
|
|
#define M_ORIENTATION_DATA_MEAN 0x00001000L
|
|
#define M_ORIENTATION_DATA_COHERENCE 0x00002000L
|
|
|
|
/************************************************************************/
|
|
/* MimStatCalculate() */
|
|
/************************************************************************/
|
|
#define M_STAT_TYPE 2149
|
|
#define M_GLCM_STAT_TYPE 2150
|
|
#define M_GLCM_PAIR_OFFSET_X 2151
|
|
#define M_GLCM_PAIR_OFFSET_Y 2152
|
|
#define M_STEP_SIZE_X 2153
|
|
#define M_STEP_SIZE_Y 2160
|
|
#define M_GLCM_QUANTIFICATION 2161
|
|
#define M_STAT_GLCM_DISSIMILARITY 2162
|
|
#define M_STAT_GLCM_ENERGY 2163
|
|
#define M_STAT_GLCM_ENTROPY 2164
|
|
#define M_STAT_GLCM_HOMOGENEITY 2165
|
|
#define M_CONDITION 2167
|
|
#define M_COND_LOW 2168
|
|
#define M_COND_HIGH 2172
|
|
#define M_STAT_GLCM_CORRELATION 2173
|
|
#define M_STAT_GLCM_CONTRAST 2174
|
|
|
|
/* These defines preserve the values of their non-prefixed counterpart where possible. */
|
|
#define M_STAT_MIN 2502
|
|
#define M_STAT_MAX 2503
|
|
#define M_STAT_MIN_ABS 2504
|
|
#define M_STAT_MAX_ABS 2505
|
|
#define M_STAT_SUM_ABS 2506
|
|
#define M_STAT_SUM_OF_SQUARES 2507
|
|
#define M_STAT_SUM 2508
|
|
#define M_STAT_MEAN 2509
|
|
#define M_STAT_STANDARD_DEVIATION 2510
|
|
#define M_STAT_NUMBER 1009L // Same as M_NUMBER
|
|
#define M_STAT_ANGULAR_DATA_MEAN 2511
|
|
#define M_STAT_ANGULAR_DATA_COHERENCE 2512
|
|
#define M_STAT_ORIENTATION_DATA_MEAN 2513
|
|
#define M_STAT_ORIENTATION_DATA_COHERENCE 2514
|
|
|
|
/* These defines had been initially created for M3dmetStat and they are reused here with the same values. */
|
|
#define M_STAT_CONTEXT_MIN (M_STAT_MIN | M_PSEUDO_ID)
|
|
#define M_STAT_CONTEXT_MAX (M_STAT_MAX | M_PSEUDO_ID)
|
|
#define M_STAT_CONTEXT_MIN_ABS (M_STAT_MIN_ABS | M_PSEUDO_ID)
|
|
#define M_STAT_CONTEXT_MAX_ABS (M_STAT_MAX_ABS | M_PSEUDO_ID)
|
|
#define M_STAT_CONTEXT_SUM_ABS (M_STAT_SUM_ABS | M_PSEUDO_ID)
|
|
#define M_STAT_CONTEXT_SUM_OF_SQUARES (M_STAT_SUM_OF_SQUARES | M_PSEUDO_ID)
|
|
#define M_STAT_CONTEXT_SUM (M_STAT_SUM | M_PSEUDO_ID)
|
|
#define M_STAT_CONTEXT_MEAN (M_STAT_MEAN | M_PSEUDO_ID)
|
|
#define M_STAT_CONTEXT_STANDARD_DEVIATION (M_STAT_STANDARD_DEVIATION | M_PSEUDO_ID)
|
|
#define M_STAT_CONTEXT_NUMBER (M_STAT_NUMBER | M_PSEUDO_ID)
|
|
|
|
/************************************************************************/
|
|
/* MimArith() */
|
|
/************************************************************************/
|
|
#define M_CONSTANT 0x8000L
|
|
#define M_FIXED_POINT 0x00004000L
|
|
#define M_FLOAT_PROC 0x40000000L
|
|
#define M_LOGICAL 0x08000000L
|
|
#define M_SOURCE_VALUE 0x00010000L
|
|
#define M_ADD 0x0000L
|
|
#define M_ADD_CONST (M_ADD | M_CONSTANT)
|
|
#define M_SUB 0x0001L
|
|
#define M_SUB_CONST (M_SUB | M_CONSTANT)
|
|
#define M_NEG_SUB 0x000AL
|
|
#define M_CONST_SUB (M_NEG_SUB | M_CONSTANT)
|
|
#define M_SUB_ABS 0x0011L
|
|
#define M_SUB_CONST_ABS (M_SUB_ABS | M_CONSTANT)
|
|
#define M_MIN 0x02000000L
|
|
#define M_MIN_CONST (M_MIN | M_CONSTANT)
|
|
#define M_MAX 0x04000000L
|
|
#define M_MAX_CONST (M_MAX | M_CONSTANT)
|
|
#define M_OR 0x0016L
|
|
#define M_OR_CONST (M_OR | M_CONSTANT)
|
|
#define M_AND 0x0017L
|
|
#define M_AND_CONST (M_AND | M_CONSTANT)
|
|
#define M_XOR 0x0018L
|
|
#define M_XOR_CONST (M_XOR | M_CONSTANT)
|
|
#define M_NOR 0x0019L
|
|
#define M_NOR_CONST (M_NOR | M_CONSTANT)
|
|
#define M_NAND 0x001AL
|
|
#define M_NAND_CONST (M_NAND | M_CONSTANT)
|
|
#define M_XNOR 0x001BL
|
|
#define M_XNOR_CONST (M_XNOR | M_CONSTANT)
|
|
#define M_NOT 0x0014L
|
|
#define M_NEG 0x0023L
|
|
#define M_ABS 0x000CL
|
|
#define M_PASS 0x0002L
|
|
#define M_CONST_PASS (M_PASS | M_CONSTANT)
|
|
#define M_MULT 0x0100L
|
|
#define M_MULT_CONST (M_MULT | M_CONSTANT)
|
|
#define M_DIV 0x0101L
|
|
#define M_DIV_CONST (M_DIV | M_CONSTANT)
|
|
#define M_INV_DIV 0x0102L
|
|
#define M_CONST_DIV (M_INV_DIV | M_CONSTANT)
|
|
#define M_SQRT 0x0103L
|
|
#define M_SQUARE_ROOT M_SQRT
|
|
#define M_SQUARE 0x00000020L // Already defined in milmod.h
|
|
#define M_CUBE 0x0104L
|
|
#define M_LN 0x0105L
|
|
#define M_LOG10 0x0106L
|
|
#define M_LOG2 0x0107L
|
|
#define M_EXP_CONST 0x0108L
|
|
#define M_CONST_EXP 0x0109L
|
|
#define M_EXP 0x010AL // Also defined in mil.h for MgenLutFunction
|
|
#define M_LOG_CONST 0x010BL
|
|
#define M_CONST_LOG 0x010CL
|
|
#define M_LOG 0x010DL // Also defined in mil.h for MgenLutFunction
|
|
#define M_ATAN2 0x010EL
|
|
#define M_INTEGRAL 0x010FL
|
|
#define M_AVG 0x0110L
|
|
#define M_ABS_SUB 0x0111L
|
|
#define M_MIN_ABS 0x00200000L // Already defined elsewhere
|
|
#define M_MAX_ABS 0x00800000L // Already defined elsewhere
|
|
#define M_TRUNC 4863L // 0x12FF
|
|
#define M_ROUND 4865L // 0x1301
|
|
#define M_CEIL 4866L // 0x1302
|
|
#define M_FLOOR 4867L // 0x1303
|
|
#define M_ROUND_HALF_UP 4868L // 0x1304
|
|
|
|
// Note that those are valid only with M_LOGICAL, avoiding conflict with other flags.
|
|
#define M_EQUAL 3L
|
|
#define M_NOT_EQUAL 4L
|
|
#define M_GREATER 5L
|
|
#define M_LESS 6L
|
|
#define M_GREATER_OR_EQUAL 7L
|
|
#define M_LESS_OR_EQUAL 8L
|
|
|
|
#define M_EQUAL_CONST (M_EQUAL | M_CONSTANT)
|
|
#define M_NOT_EQUAL_CONST (M_NOT_EQUAL | M_CONSTANT)
|
|
#define M_GREATER_CONST (M_GREATER | M_CONSTANT)
|
|
#define M_LESS_CONST (M_LESS | M_CONSTANT)
|
|
#define M_GREATER_OR_EQUAL_CONST (M_GREATER_OR_EQUAL | M_CONSTANT)
|
|
#define M_LESS_OR_EQUAL_CONST (M_LESS_OR_EQUAL | M_CONSTANT)
|
|
|
|
/************************************************************************/
|
|
/* MimArithMultiple() */
|
|
/************************************************************************/
|
|
#define M_OFFSET_GAIN 0x0000L
|
|
#define M_WEIGHTED_AVERAGE 0x0001L
|
|
#define M_MULTIPLY_ACCUMULATE_1 0x0002L
|
|
#define M_MULTIPLY_ACCUMULATE_2 0x0004L
|
|
|
|
/************************************************************************/
|
|
/* MimFlip() */
|
|
/************************************************************************/
|
|
#define M_FLIP_VERTICAL 1L
|
|
#define M_FLIP_HORIZONTAL 2L
|
|
|
|
/************************************************************************/
|
|
/* MimBinarize(), MimClip(), MimLocateEvent(), MimStat() */
|
|
/* Some of these defines are also define in milutil.h */
|
|
/************************************************************************/
|
|
#define M_IN_RANGE 1L
|
|
#define M_OUT_RANGE 2L
|
|
#define M_EQUAL 3L
|
|
#define M_NOT_EQUAL 4L
|
|
#define M_GREATER 5L
|
|
#define M_LESS 6L
|
|
#define M_GREATER_OR_EQUAL 7L
|
|
#define M_LESS_OR_EQUAL 8L
|
|
#define M_MASK 0x00001000L
|
|
#define M_ALL 0x40000000L
|
|
|
|
/************************************************************************/
|
|
/* These flags are specific to MimLocateEvent() */
|
|
/************************************************************************/
|
|
|
|
//The encoding for extremum mode is done on 11 bits, with the 8 lower bits
|
|
//indicating we use > or >= (0 or 1) for a specific neighbor, the bit 8 is used
|
|
//to select minimum or maximum (0 or 1) and bit 9 for the special case strickly
|
|
//greater than any one and greater or equal to all others. Bit 10 is indicating
|
|
//that one mode is selected. Note that for the neighbor position, we use the
|
|
//same convention than MimConnectMap.
|
|
// n3 n2 n1
|
|
// n4 X n0
|
|
// n5 n6 n7
|
|
#define M_LOCATE_EVENT_EXTREMUM_MODE_SHIFT 17L // =utilities=
|
|
#define M_LOCAL_MAX_NOT_STRICT (0x05FFL << M_LOCATE_EVENT_EXTREMUM_MODE_SHIFT) //Greater or equal to all
|
|
#define M_LOCAL_MAX_STRICT_MEDIUM (0x0587L << M_LOCATE_EVENT_EXTREMUM_MODE_SHIFT) //Greater right
|
|
#define M_LOCAL_MIN_NOT_STRICT (0x04FFL << M_LOCATE_EVENT_EXTREMUM_MODE_SHIFT) //Less or equal to all
|
|
#define M_LOCAL_MIN_STRICT_MEDIUM (0x0487L << M_LOCATE_EVENT_EXTREMUM_MODE_SHIFT) //Less right
|
|
|
|
/************************************************************************/
|
|
/* MimBinarize() */
|
|
/************************************************************************/
|
|
// reserve bits 4-7 to the binarization method
|
|
#define M_BINARIZATION_METHOD_MASK 0x0F0L
|
|
//#define M_PERCENTILE_VALUE 0x10L // already defined at the beginning of the file
|
|
#define M_TRIANGLE_BISECTION_DARK 0x20L
|
|
#define M_TRIANGLE_BISECTION_BRIGHT 0x30L
|
|
#define M_BIMODAL 0x40L
|
|
#define M_FIXED 0x50L
|
|
#define M_DOMINANT 0x60L
|
|
#define M_DISCRETE_RANGE 0x1000L
|
|
#define M_RETURN_VALUE_AS_FLOAT_IN_INT 0x2000L
|
|
|
|
/************************************************************************/
|
|
/* MimConvolve() */
|
|
/************************************************************************/
|
|
#define M_ID_OFFSET_OF_DEFAULT_KERNEL (0x00100000L|M_PSEUDO_ID)
|
|
#define M_ID_OFFSET_OF_EDGE_DETECTVAR (0x00100100L|M_PSEUDO_ID)
|
|
|
|
#define M_SMOOTH (M_ID_OFFSET_OF_DEFAULT_KERNEL + 0L)
|
|
#define M_LAPLACIAN_EDGE (M_ID_OFFSET_OF_DEFAULT_KERNEL + 1L)
|
|
#define M_LAPLACIAN_EDGE2 (M_ID_OFFSET_OF_DEFAULT_KERNEL + 2L)
|
|
#define M_SHARPEN (M_ID_OFFSET_OF_DEFAULT_KERNEL + 3L)
|
|
#define M_SHARPEN2 (M_ID_OFFSET_OF_DEFAULT_KERNEL + 4L)
|
|
#define M_HORIZ_EDGE (M_ID_OFFSET_OF_DEFAULT_KERNEL + 5L)
|
|
#define M_VERT_EDGE (M_ID_OFFSET_OF_DEFAULT_KERNEL + 6L)
|
|
#define M_EDGE_DETECT (M_ID_OFFSET_OF_DEFAULT_KERNEL + 7L)
|
|
#define M_EDGE_DETECT2 (M_ID_OFFSET_OF_DEFAULT_KERNEL + 8L)
|
|
#define M_EDGE_DETECT_SQR (M_ID_OFFSET_OF_DEFAULT_KERNEL + 9L)
|
|
#define M_FIRST_DERIVATIVE_X (M_ID_OFFSET_OF_DEFAULT_KERNEL + 10L)
|
|
#define M_FIRST_DERIVATIVE_Y (M_ID_OFFSET_OF_DEFAULT_KERNEL + 11L)
|
|
#define M_SECOND_DERIVATIVE_X (M_ID_OFFSET_OF_DEFAULT_KERNEL + 12L)
|
|
#define M_SECOND_DERIVATIVE_Y (M_ID_OFFSET_OF_DEFAULT_KERNEL + 13L)
|
|
#define M_SECOND_DERIVATIVE_XY (M_ID_OFFSET_OF_DEFAULT_KERNEL + 14L)
|
|
#define M_HORIZONTAL_EDGE_SOBEL (M_ID_OFFSET_OF_DEFAULT_KERNEL + 15L)
|
|
#define M_VERTICAL_EDGE_SOBEL (M_ID_OFFSET_OF_DEFAULT_KERNEL + 16L)
|
|
#define M_HORIZONTAL_EDGE_PREWITT (M_ID_OFFSET_OF_DEFAULT_KERNEL + 17L)
|
|
#define M_VERTICAL_EDGE_PREWITT (M_ID_OFFSET_OF_DEFAULT_KERNEL + 18L)
|
|
#define M_SOBEL_X (M_ID_OFFSET_OF_DEFAULT_KERNEL + 19L)
|
|
#define M_SOBEL_Y (M_ID_OFFSET_OF_DEFAULT_KERNEL + 20L)
|
|
#define M_PREWITT_X (M_ID_OFFSET_OF_DEFAULT_KERNEL + 21L)
|
|
#define M_PREWITT_Y (M_ID_OFFSET_OF_DEFAULT_KERNEL + 22L)
|
|
#define M_LAPLACIAN_ISO_8 (M_ID_OFFSET_OF_DEFAULT_KERNEL + 23L)
|
|
#define M_EDGE_DETECTVAR(Val) (M_ID_OFFSET_OF_EDGE_DETECTVAR + Val)
|
|
|
|
#define M_EDGE_DETECT_SOBEL_FAST M_EDGE_DETECT
|
|
#define M_EDGE_DETECT_PREWITT_FAST M_EDGE_DETECT2
|
|
#define M_LAPLACIAN_4 M_LAPLACIAN_EDGE
|
|
#define M_LAPLACIAN_8 M_LAPLACIAN_EDGE2
|
|
#define M_SHARPEN_4 M_SHARPEN2
|
|
#define M_SHARPEN_8 M_SHARPEN
|
|
|
|
#define M_OVERSCAN_ENABLE 0x00008000L
|
|
#define M_OVERSCAN_DISABLE 0x00080000L
|
|
#define M_OVERSCAN_FAST 0x00040000L
|
|
|
|
#if OldDefinesSupport
|
|
|
|
#define M_SHEN_PREDEFINED_KERNEL (0x10000000L|M_ID_OFFSET_OF_DEFAULT_KERNEL)
|
|
#define M_DERICHE_PREDEFINED_KERNEL (0x20000000L|M_ID_OFFSET_OF_DEFAULT_KERNEL)
|
|
#define M_SHEN_PREDEFINED_KERNEL_INVALID_TYPE (0x01000000L|M_SHEN_PREDEFINED_KERNEL)
|
|
#define M_SHEN_PREDEFINED_KERNEL_INVALID_FACTOR (0x02000000L|M_SHEN_PREDEFINED_KERNEL)
|
|
#define M_DERICHE_PREDEFINED_KERNEL_INVALID_TYPE (0x01000000L|M_DERICHE_PREDEFINED_KERNEL)
|
|
#define M_DERICHE_PREDEFINED_KERNEL_INVALID_FACTOR (0x02000000L|M_DERICHE_PREDEFINED_KERNEL)
|
|
#define M_IS_SHEN_PREDEFINED_KERNEL(KernelId) (((KernelId) & M_SHEN_PREDEFINED_KERNEL) == M_SHEN_PREDEFINED_KERNEL)
|
|
#define M_IS_DERICHE_PREDEFINED_KERNEL(KernelId) (((KernelId) & M_DERICHE_PREDEFINED_KERNEL) == M_DERICHE_PREDEFINED_KERNEL)
|
|
|
|
#define M_SHEN_FILTER(FilterOperation, FilterSmoothness) (((((FilterOperation) & M_ID_OFFSET_OF_DEFAULT_KERNEL) != M_ID_OFFSET_OF_DEFAULT_KERNEL) && (FilterOperation!=M_DEFAULT)) ? M_SHEN_PREDEFINED_KERNEL_INVALID_TYPE : \
|
|
((((FilterOperation) & (~(M_ID_OFFSET_OF_DEFAULT_KERNEL | 0xFF))) != 0) && (FilterOperation!=M_DEFAULT)) ? M_SHEN_PREDEFINED_KERNEL_INVALID_TYPE : \
|
|
(((((FilterSmoothness) < 0) || ((FilterSmoothness) > 100))) && (FilterSmoothness!=M_DEFAULT)) ? M_SHEN_PREDEFINED_KERNEL_INVALID_FACTOR : \
|
|
M_SHEN_PREDEFINED_KERNEL | ((FilterOperation==M_DEFAULT) ? 0x80 : FilterOperation) | ((FilterSmoothness==M_DEFAULT)?(0xFF00):(((long) FilterSmoothness) << 8)) )
|
|
MIL_DEPRECATED(M_SHEN_FILTER, 1040) // Use new M_LINEAR_FILTER_IIR_CONTEXT with MimConvolve or MimDerivative instead.
|
|
|
|
#define M_DERICHE_FILTER(FilterOperation, FilterSmoothness) (((((FilterOperation) & M_ID_OFFSET_OF_DEFAULT_KERNEL) != M_ID_OFFSET_OF_DEFAULT_KERNEL) && (FilterOperation!=M_DEFAULT)) ? M_DERICHE_PREDEFINED_KERNEL_INVALID_TYPE : \
|
|
((((FilterOperation) & (~(M_ID_OFFSET_OF_DEFAULT_KERNEL | 0xFF))) != 0) && (FilterOperation!=M_DEFAULT)) ? M_DERICHE_PREDEFINED_KERNEL_INVALID_TYPE : \
|
|
(((((FilterSmoothness) < 0) || ((FilterSmoothness) > 100))) && (FilterSmoothness!=M_DEFAULT)) ? M_DERICHE_PREDEFINED_KERNEL_INVALID_FACTOR : \
|
|
M_DERICHE_PREDEFINED_KERNEL | ((FilterOperation==M_DEFAULT) ? 0x80 : FilterOperation) | ((FilterSmoothness==M_DEFAULT)?(0xFF00):(((long) FilterSmoothness) << 8)) )
|
|
MIL_DEPRECATED(M_DERICHE_FILTER, 1040) // Use new M_LINEAR_FILTER_IIR_CONTEXT with MimConvolve or MimDerivative instead.
|
|
#endif
|
|
|
|
/************************************************************************/
|
|
/* MimDifferential() */
|
|
/************************************************************************/
|
|
#define M_GAUSSIAN_CURVATURE 2691L // Already defined.
|
|
#define M_GRADIENT 3306L
|
|
#define M_GRADIENT_SQR 3307L
|
|
#define M_HESSIAN 3308L
|
|
#define M_JACOBIAN 3309L
|
|
#define M_LAPLACIAN 3310L
|
|
#define M_MEAN_CURVATURE 2692L // Already defined.
|
|
#define M_SHARPEN (M_ID_OFFSET_OF_DEFAULT_KERNEL + 3L) // Already defined for MimConvolve.
|
|
|
|
|
|
/************************************************************************/
|
|
/* MimEdgeDetect() */
|
|
/************************************************************************/
|
|
#if M_MIL_LITE || MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION
|
|
#define M_SOBEL M_EDGE_DETECT_SOBEL_FAST
|
|
#endif
|
|
#define M_NOT_WRITE_ANGLE 1L
|
|
#define M_NOT_WRITE_INT 2L
|
|
#define M_FAST_ANGLE 4L
|
|
#define M_FAST_GRADIENT 8L
|
|
#define M_FAST_EDGE_DETECT (M_FAST_ANGLE + M_FAST_GRADIENT)
|
|
#define M_REGULAR_ANGLE 16L
|
|
#define M_REGULAR_GRADIENT 64L
|
|
#define M_REGULAR_EDGE_DETECT (M_REGULAR_ANGLE + M_REGULAR_GRADIENT)
|
|
#define M_USE_RESERVED_ANGLE_VALUE 128L
|
|
|
|
/************************************************************************/
|
|
/* MimRank() */
|
|
/************************************************************************/
|
|
#define M_MEDIAN 0x10000L
|
|
#define M_3X3_RECT (M_ID_OFFSET_OF_DEFAULT_KERNEL + 20L)
|
|
#define M_3X3_CROSS (M_ID_OFFSET_OF_DEFAULT_KERNEL + 21L)
|
|
#define M_5X5_RECT (M_ID_OFFSET_OF_DEFAULT_KERNEL + 30L)
|
|
|
|
/************************************************************************/
|
|
/* MimMorphic(), ... */
|
|
/************************************************************************/
|
|
#define M_ERODE 1L
|
|
#define M_DILATE 2L
|
|
#define M_THIN 3L
|
|
#define M_THICK 4L
|
|
#define M_HIT_OR_MISS 5L
|
|
#define M_MATCH 6L
|
|
#define M_AREA_OPEN 7L
|
|
#define M_AREA_CLOSE 8L
|
|
#define M_TOP_HAT 9L
|
|
#define M_BOTTOM_HAT 10L
|
|
#define M_LEVEL 11L
|
|
|
|
// These flags are already defined elsewhere. We use the same values here.
|
|
#define M_OPEN 0x00000010L
|
|
#define M_CLOSE 0x00000020L
|
|
|
|
/************************************************************************/
|
|
/* MimErode() */
|
|
/************************************************************************/
|
|
#define M_BINARY_ULTIMATE 1L
|
|
#define M_BINARY_ULTIMATE_ACCUMULATE 2460L
|
|
|
|
/************************************************************************/
|
|
/* MimThin() */
|
|
/************************************************************************/
|
|
#define M_TO_SKELETON -1L
|
|
#define M_BINARY2 1L
|
|
#define M_BINARY3 2L
|
|
#define M_OVERSCAN_REPLACE_MAX 0x10
|
|
#define M_OVERSCAN_REPLACE_MIN 0x20
|
|
|
|
/************************************************************************/
|
|
/* MimThick() */
|
|
/************************************************************************/
|
|
#define M_TO_IDEMPOTENCE M_TO_SKELETON
|
|
|
|
/************************************************************************/
|
|
/* MimDistance() */
|
|
/************************************************************************/
|
|
#define M_CHAMFER_3_4 0x01
|
|
#define M_CITY_BLOCK 0x02
|
|
#define M_CHESSBOARD 0x04
|
|
#define M_FORWARD 0x01
|
|
#define M_BACKWARD 0x02
|
|
#define M_OVERSCAN_TO_DO 0x04
|
|
#define M_BOTH 0x07
|
|
|
|
/************************************************************************/
|
|
/* MimWatershed() */
|
|
/************************************************************************/
|
|
#define M_WATERSHED 0x0001
|
|
#define M_BASIN 0x0002
|
|
#define M_MINIMA_FILL 0x0004
|
|
#define M_MAXIMA_FILL 0x0008
|
|
|
|
#define M_4_CONNECTED 0x00000010L
|
|
#define M_8_CONNECTED 0x00000020L
|
|
#define M_REGULAR 0x00020000L
|
|
#define M_STRAIGHT_WATERSHED 0x0080
|
|
#define M_SKIP_LAST_LEVEL 0x0100
|
|
#define M_FILL_SOURCE 0x0200
|
|
#define M_LABELLED_MARKER 0x0400
|
|
#define M_LABELED_MARKER M_LABELLED_MARKER
|
|
|
|
#define M_METHOD_1 0x1000
|
|
#define M_METHOD_2 0x2000
|
|
|
|
#define M_BASIN_4_CONNECTED 0x4000
|
|
#define M_BASIN_8_CONNECTED 0x8000
|
|
|
|
/************************************************************************/
|
|
/* MimProject(), MimProjection */
|
|
/************************************************************************/
|
|
#define M_0_DEGREE 0.0
|
|
#define M_90_DEGREE 90.0
|
|
#define M_180_DEGREE 180.0
|
|
#define M_270_DEGREE 270.0
|
|
#define M_RANK 4889
|
|
#define M_RANK_PERCENTILE 4890
|
|
|
|
/************************************************************************/
|
|
/* MimResize(), MimTranslate() and MimRotate() */
|
|
/************************************************************************/
|
|
#define M_OVERSCAN_DISABLE 0x00080000L
|
|
#define M_OVERSCAN_ENABLE 0x00008000L
|
|
#define M_OVERSCAN_FAST 0x00040000L
|
|
#define M_INTERPOLATE 0x00000004L
|
|
#define M_BILINEAR 0x00000008L
|
|
#define M_BICUBIC 0x00000010L
|
|
#define M_AVERAGE 0x00000020L
|
|
#define M_NEAREST_NEIGHBOR 0x00000040L
|
|
#define M_OVERSCAN_CLEAR 0x00000080L
|
|
#define M_FIT_ALL_ANGLE 0x00000100L
|
|
#define M_BINARY 0x00001000L
|
|
#define M_FAST 0x00002000L
|
|
#define M_REGULAR 0x00020000L
|
|
|
|
/************************************************************************/
|
|
/* MimResize */
|
|
/************************************************************************/
|
|
#define M_FILL_DESTINATION -1 // DO NOT MODIFY, WITHOUT CODE MODIFICATION
|
|
|
|
/************************************************************************/
|
|
/* MimHistogramEqualize() */
|
|
/************************************************************************/
|
|
#define M_UNIFORM 1
|
|
#define M_EXPONENTIAL 2
|
|
#define M_RAYLEIGH 3
|
|
#define M_HYPER_CUBE_ROOT 4
|
|
#define M_HYPER_LOG 5
|
|
|
|
/************************************************************************/
|
|
/* MimConvert() */
|
|
/************************************************************************/
|
|
#define M_REGULAR 0x00020000L
|
|
#define M_FAST 0x00002000L
|
|
#define M_MASK 0x00001000L
|
|
|
|
#define M_ID_OFFSET_OF_DEFAULT_CONVERT (0x00200000L|M_PSEUDO_ID)
|
|
|
|
#define M_RGB_TO_HSL (M_ID_OFFSET_OF_DEFAULT_CONVERT + 1L) // Same as Mil.h
|
|
#define M_RGB_TO_HLS M_RGB_TO_HSL // Obsolete
|
|
#define M_RGB_TO_L (M_ID_OFFSET_OF_DEFAULT_CONVERT + 2L) // Same as Mil.h
|
|
#define M_HSL_TO_RGB (M_ID_OFFSET_OF_DEFAULT_CONVERT + 3L) // Same as Mil.h
|
|
#define M_HLS_TO_RGB M_HSL_TO_RGB // Obsolete
|
|
#define M_L_TO_RGB (M_ID_OFFSET_OF_DEFAULT_CONVERT + 4L) // Same as Mil.h
|
|
#define M_RGB_TO_Y (M_ID_OFFSET_OF_DEFAULT_CONVERT + 5L) // Same as Mil.h
|
|
#define M_RGB_TO_H (M_ID_OFFSET_OF_DEFAULT_CONVERT + 6L) // Same as Mil.h
|
|
|
|
#define M_RGB_TO_YUV16 (M_ID_OFFSET_OF_DEFAULT_CONVERT + 101L) // Same as Mil.h
|
|
#define M_YUV16_TO_RGB (M_ID_OFFSET_OF_DEFAULT_CONVERT + 301L) // Same as Mil.h
|
|
#define M_RGB_NORMALIZE (M_ID_OFFSET_OF_DEFAULT_CONVERT + 10L)
|
|
#define M_RGB_TO_HSV (M_ID_OFFSET_OF_DEFAULT_CONVERT + 11L) // Same as Mildev.h
|
|
#define M_HSV_TO_RGB (M_ID_OFFSET_OF_DEFAULT_CONVERT + 12L) // Same as Mildev.h
|
|
|
|
#define M_SRGB_LINEAR_TO_LAB (M_ID_OFFSET_OF_DEFAULT_CONVERT + 500L)
|
|
#define M_SRGB_TO_LAB (M_ID_OFFSET_OF_DEFAULT_CONVERT + 501L)
|
|
#define M_LAB_TO_SRGB_LINEAR (M_ID_OFFSET_OF_DEFAULT_CONVERT + 502L)
|
|
#define M_LAB_TO_SRGB (M_ID_OFFSET_OF_DEFAULT_CONVERT + 503L)
|
|
#define M_SRGB_LINEAR_TO_LCH (M_ID_OFFSET_OF_DEFAULT_CONVERT + 504L)
|
|
#define M_SRGB_TO_LCH (M_ID_OFFSET_OF_DEFAULT_CONVERT + 505L)
|
|
#define M_LCH_TO_SRGB_LINEAR (M_ID_OFFSET_OF_DEFAULT_CONVERT + 506L)
|
|
#define M_LCH_TO_SRGB (M_ID_OFFSET_OF_DEFAULT_CONVERT + 507L)
|
|
|
|
#define M_MATRIX_ID(x) (x) // Obsolete from MIL 9
|
|
|
|
// If the conversion type is set to M_DEFAULT, the conversion will be
|
|
// choosen according to the type of buffers passed to the function.
|
|
#define M_DEFAULT 0x10000000L
|
|
|
|
// These can be added to the conversion type to speed-up the
|
|
// process ( M_FAST ) or have a better precision ( M_REGULAR ).
|
|
// Not all conversion are affected by this flag.
|
|
#define M_REGULAR 0x00020000L
|
|
#define M_FAST 0x00002000L
|
|
|
|
/************************************************************************/
|
|
/* MimWarp() */
|
|
/************************************************************************/
|
|
/* 8 bits reserved for number of fractional bits */
|
|
#define M_WARP_MATRIX 0x00100000L
|
|
#define M_WARP_POLYNOMIAL 0x00200000L
|
|
#define M_WARP_LUT 0x00400000L
|
|
#define M_OVERSCAN_ENABLE 0x00008000L
|
|
#define M_OVERSCAN_DISABLE 0x00080000L
|
|
#define M_OVERSCAN_FAST 0x00040000L
|
|
#define M_OVERSCAN_CLEAR 0x00000080L
|
|
#define M_FIXED_POINT 0x00004000L
|
|
|
|
/************************************************************************/
|
|
/* MimTransform() */
|
|
/************************************************************************/
|
|
#define M_FFT 1L
|
|
#define M_DCT8X8 2L
|
|
#define M_DCT 3L
|
|
#define M_POLAR 5L
|
|
|
|
#define M_FORWARD 0x01
|
|
#define M_REVERSE 4L
|
|
#define M_NORMALIZED 0x00000002L
|
|
#define M_NORMALIZE M_NORMALIZED
|
|
#define M_1D_ROWS 0x00000010L
|
|
#define M_1D_COLUMNS 0x00000020L
|
|
#define M_REAL 0x00000040L
|
|
#define M_CENTER 0x00000080L
|
|
#define M_MAGNITUDE 0x00000100L
|
|
#define M_PHASE 0x00000200L
|
|
#define M_LOG_SCALE 0x00000400L
|
|
#define M_FAST_PHASE 0x00000800L
|
|
#define M_SQUARE_MAGNITUDE 0x00001000L
|
|
#define M_NORMALIZE_PHASE 0x00002000L
|
|
#define M_NORMALIZE_PHASE_255 0x00008000L
|
|
#define M_CLOCKWISE_PHASE 0x00010000L
|
|
#define M_USE_CORDIC 0x00020000L
|
|
#define M_INTERNAL_FFT_NEW 0x00000008L
|
|
|
|
|
|
/************************************************************************/
|
|
/* MimWaveletTransform() */
|
|
/************************************************************************/
|
|
#define M_FORWARD 0x01 // Already defined elsewhere
|
|
#define M_REVERSE 4L // Already defined elsewhere
|
|
#define M_COPY 0x00020000L // Already defined elsewhere
|
|
|
|
/************************************************************************/
|
|
/* MimWaveletDenoise () */
|
|
/************************************************************************/
|
|
#define M_DENOISE_PSEUDO_ID (0x00100100L|M_PSEUDO_ID) // =utilities
|
|
#define M_BAYES_SHRINK (M_DENOISE_PSEUDO_ID + 2L)
|
|
#define M_SURE_SHRINK (M_DENOISE_PSEUDO_ID + 3L)
|
|
#define M_NEIGH_SHRINK (M_DENOISE_PSEUDO_ID + 4L)
|
|
|
|
/************************************************************************/
|
|
/* MimPolarTransform() */
|
|
/************************************************************************/
|
|
#define M_RECTANGULAR_TO_POLAR 0x00000001L
|
|
#define M_POLAR_TO_RECTANGULAR 0x00000002L
|
|
#define M_FIXED_POINT 0x00004000L
|
|
#define M_RECTANGULAR_TO_POLAR_LUT 0x00008000L
|
|
#define M_POLAR_TO_RECTANGULAR_LUT 0x00010000L
|
|
|
|
/************************************************************************/
|
|
/* MimDraw() */
|
|
/************************************************************************/
|
|
#define M_DRAW_PEAKS 0x01000000L
|
|
#define M_DRAW_DARK_IMAGE 0x02000000L
|
|
#define M_DRAW_OFFSET_IMAGE 0x04000000L
|
|
#define M_DRAW_FLAT_IMAGE 0x08000000L
|
|
#define M_DOTS 0x00000040L
|
|
#define M_LINES 0x00000080L
|
|
#define M_CROSS 0x00002000L
|
|
#define M_FROM_LINE_THICKNESS 0x40000000L
|
|
#define M_DRAW_STAT_RESULT 0x00000100L
|
|
#define M_DRAW_WAVELET 0x00010000L
|
|
#define M_DRAW_WAVELET_WITH_PADDING 0x00000800L
|
|
#define M_DRAW_MODEL 0x00001000L
|
|
#define M_DRAW_MASK 0x200000L // Already defined elsewhere
|
|
#define M_DRAW_DEAD_PIXELS 0x00000400L
|
|
#define M_DRAW_IMAGE_ORIENTATION 0x00002000L
|
|
#define M_DRAW_DEPTH_MAP_ROW 0x00004000L
|
|
#define M_DRAW_INTENSITY_MAP_ROW 0x00008000L
|
|
#define M_DRAW_GLCM_MATRIX 0x00100000L
|
|
#define M_AUTO_SCALE 2L // Already defined in mil.h
|
|
#define M_SATURATION 0x2000L // Already defined in mil.h
|
|
|
|
#define M_DRAW_AUG_IMAGE 0x00020000L // TOMODIFY: review this value
|
|
#define M_DRAW_WEIGHT_IMAGE 5648L
|
|
|
|
/************************************************************************/
|
|
/* MimStatMultiple() */
|
|
/************************************************************************/
|
|
#define M_CALCULATE 1L // Already defined elsewhere
|
|
#define M_PREPROCESS 0x00000002L // Already defined elsewhere
|
|
#define M_REMOVE 0x00000004L
|
|
#define M_RESET_EXTREMES 0x00000008L
|
|
|
|
/************************************************************************/
|
|
/* MimFlatField(), MimDeadPixelCorrection(), MimRearrange() and */
|
|
/* MimStatMultiple() */
|
|
/************************************************************************/
|
|
#define M_PREPROCESS 0x00000002L
|
|
|
|
/************************************************************************/
|
|
/* MimLocatepeak1d() */
|
|
/************************************************************************/
|
|
#define M_SCAN_LANE_INDEX 0x000100000L
|
|
#define M_RANK_INDEX 0x000200000L
|
|
|
|
#define M_PEAK_POSITION 0x000400000L
|
|
#define M_PEAK_POSITION_X 0x000800000L
|
|
#define M_PEAK_POSITION_Y 0x001000000L
|
|
|
|
#define M_NUMBER 1009L // defined in milmeas.h
|
|
#define M_PEAK_INTENSITY_RANGE 0x000008000L
|
|
#define M_PEAK_INTENSITY 0x000010000L
|
|
#define M_FRAME_INDEX 0x002000000L
|
|
|
|
#define M_PEAK_WIDTH 11L
|
|
#define M_NUMBER_OF_SCAN_LANES 0x000020000L
|
|
#define M_INCLUDE_MISSING_DATA 0x000040000L
|
|
#define M_ONLY_MISSING_DATA 0x000080000L
|
|
|
|
#define M_STATUS 0x00008002L // Already defined elsewhere
|
|
|
|
/************************************************************************/
|
|
/* MimBinarizeAdaptive() */
|
|
/************************************************************************/
|
|
#define M_THRESHOLD_MODE 33L // Already defined in miledge.h
|
|
#define M_NIBLACK 1880L
|
|
#define M_BERNSEN 1881L
|
|
#define M_LOCAL_MEAN 1882L
|
|
#define M_PSEUDOMEDIAN 1883L
|
|
#define M_LOCAL_DIMENSION 1884L
|
|
#define M_MINIMUM_CONTRAST 600L // Also defined in milstr.h
|
|
#define M_GLOBAL_MAX 1885L
|
|
#define M_GLOBAL_MIN 1886L
|
|
#define M_NIBLACK_BIAS 1887L
|
|
#define M_GLOBAL_OFFSET 1888L
|
|
//#define M_HYSTERESIS 31L
|
|
#define M_NIBLACK_BIAS_SECOND_PASS 1889L
|
|
#define M_GLOBAL_OFFSET_SECOND_PASS 1890L
|
|
#define M_AVERAGE_MODE 1891L
|
|
//#define M_UNIFORM 1L
|
|
#define M_GAUSSIAN 0x805L //also defined in miledge.h
|
|
#define M_RECONSTRUCT 1892L
|
|
#define M_NB_ITERATIONS 1893L
|
|
#define M_NB_SEED_ITERATIONS 1894L
|
|
#define M_TOGGLE 1895L
|
|
#define M_THRESHOLD_TYPE 3000L
|
|
|
|
/************************************************************************/
|
|
/* MimAugment() */
|
|
/************************************************************************/
|
|
|
|
#define M_SAVE_REPORT 0x200L // already defined in milcode.h
|
|
|
|
#define M_PRIORITY 0x00004000L
|
|
#define M_PROBABILITY 0x00008000L
|
|
|
|
// STRUCTURE
|
|
#define M_AUG_DILATION_OP 3098L
|
|
#define M_AUG_EROSION_OP 3099L
|
|
#define M_AUG_DILATION_ASYM_OP 3100L
|
|
#define M_AUG_EROSION_ASYM_OP 3101L
|
|
|
|
// GEOMETRIQUE
|
|
#define M_AUG_FLIP_OP 2870L
|
|
#define M_AUG_CROP_OP 3102L
|
|
#define M_AUG_REDUCE_OP 5724L
|
|
|
|
// AFFINE
|
|
#define M_AUG_ROTATION_OP 3103L
|
|
#define M_AUG_SCALE_OP 3104L
|
|
#define M_AUG_TRANSLATION_X_OP 3105L
|
|
#define M_AUG_TRANSLATION_Y_OP 3106L
|
|
#define M_AUG_ASPECT_RATIO_OP 3107L
|
|
#define M_AUG_SHEAR_X_OP 2892L
|
|
#define M_AUG_SHEAR_Y_OP 2893L
|
|
|
|
// INTENSITY
|
|
#define M_AUG_INTENSITY_MULTIPLY_OP 2940L
|
|
#define M_AUG_INTENSITY_ADD_OP 2887L
|
|
#define M_AUG_GAMMA_OP 2962L
|
|
#define M_AUG_LIGHTING_DIRECTIONAL_OP 3108L
|
|
#define M_AUG_SATURATION_GAIN_OP 2910L
|
|
#define M_AUG_HUE_OFFSET_OP 2917L
|
|
#define M_AUG_HSV_VALUE_GAIN_OP 2914L
|
|
|
|
// FILTER
|
|
#define M_AUG_SMOOTH_DERICHE_OP 2920L
|
|
#define M_AUG_SMOOTH_GAUSSIAN_OP 2932L
|
|
#define M_AUG_BLUR_MOTION_OP 2923L
|
|
#define M_AUG_SHARPEN_DERICHE_OP 2928L
|
|
|
|
// NOISE
|
|
#define M_AUG_NOISE_GAUSSIAN_ADDITIVE_OP 2955L
|
|
#define M_AUG_NOISE_MULTIPLICATIVE_OP 2950L
|
|
#define M_AUG_NOISE_SALT_PEPPER_OP 2947L
|
|
|
|
|
|
// Augmentation Control parameters
|
|
#define M_AUG_DILATION_OP_NB_ITERATIONS_MAX 2873L
|
|
#define M_AUG_EROSION_OP_NB_ITERATIONS_MAX 2875L
|
|
#define M_AUG_DILATION_ASYM_OP_NB_ITERATIONS_MAX 2881L
|
|
#define M_AUG_EROSION_ASYM_OP_NB_ITERATIONS_MAX 2882L
|
|
|
|
#define M_AUG_FLIP_OP_DIRECTION 3120L
|
|
#define M_AUG_CROP_OP_FACTOR_X 2884L
|
|
#define M_AUG_CROP_OP_FACTOR_Y 2885L
|
|
#define M_AUG_CROP_OP_RESIZE 2886L
|
|
#define M_AUG_REDUCE_OP_FACTOR_MIN 5725L
|
|
#define M_AUG_REDUCE_OP_FACTOR_MAX 5726L
|
|
#define M_AUG_REDUCE_OP_BACKGROUND_COLOR 5743L
|
|
|
|
#define M_AUG_SCALE_OP_FACTOR_MAX 2876L
|
|
#define M_AUG_SCALE_OP_FACTOR_MIN 2877L
|
|
#define M_AUG_ROTATION_OP_ANGLE_MAX 2805L
|
|
#define M_AUG_ROTATION_OP_ANGLE_REF 3348L
|
|
#define M_AUG_ROTATION_OP_ANGLE_DELTA 3349L
|
|
#define M_AUG_ROTATION_OP_ANGLE_STEP 3350L
|
|
#define M_AUG_ROTATION_OP_ANGLE_MIN 3351L
|
|
#define M_AUG_TRANSLATION_X_OP_MAX 2868L
|
|
#define M_AUG_TRANSLATION_Y_OP_MAX 2869L
|
|
#define M_AUG_ASPECT_RATIO_OP_MIN 2878L
|
|
#define M_AUG_ASPECT_RATIO_OP_MAX 2879L
|
|
#define M_AUG_ASPECT_RATIO_OP_MODE 2880L
|
|
#define M_AUG_SHEAR_X_OP_MIN 2888L
|
|
#define M_AUG_SHEAR_X_OP_MAX 2889L
|
|
#define M_AUG_SHEAR_Y_OP_MIN 2890L
|
|
#define M_AUG_SHEAR_Y_OP_MAX 2891L
|
|
|
|
#define M_AUG_LIGHTING_DIRECTIONAL_OP_ANGLE_MAX 2894L
|
|
#define M_AUG_LIGHTING_DIRECTIONAL_OP_INTENSITY_MIN 2895L
|
|
#define M_AUG_LIGHTING_DIRECTIONAL_OP_INTENSITY_MAX 2896L
|
|
#define M_AUG_SATURATION_GAIN_OP_MIN 2911L
|
|
#define M_AUG_SATURATION_GAIN_OP_MAX 2912L
|
|
#define M_AUG_HUE_OFFSET_OP_MIN 2915L
|
|
#define M_AUG_HUE_OFFSET_OP_MAX 2916L
|
|
#define M_AUG_HSV_VALUE_GAIN_OP_MIN 2918L
|
|
#define M_AUG_HSV_VALUE_GAIN_OP_MAX 2919L
|
|
|
|
#define M_GAIN_CONST 206L // Already defined for M_FLAT_FIELD_CONTEXT
|
|
#define M_AUG_INTENSITY_MULTIPLY_OP_VALUE M_GAIN_CONST
|
|
#define M_AUG_INTENSITY_MULTIPLY_OP_DELTA 2941L
|
|
#define M_AUG_INTENSITY_MULTIPLY_OP_MODE 2959L
|
|
#define M_OFFSET_CONST 204L // Already defined for M_FLAT_FIELD_CONTEXT
|
|
#define M_AUG_INTENSITY_ADD_OP_VALUE M_OFFSET_CONST
|
|
#define M_AUG_INTENSITY_ADD_OP_DELTA 2958L
|
|
#define M_AUG_INTENSITY_ADD_OP_MODE 2883L
|
|
#define M_GAMMA 6672L // Already defined mil.h
|
|
#define M_AUG_GAMMA_OP_VALUE M_GAMMA
|
|
#define M_AUG_GAMMA_OP_DELTA 2963L
|
|
#define M_AUG_GAMMA_OP_MODE 2942L
|
|
|
|
#define M_AUG_SMOOTH_DERICHE_OP_FACTOR_MIN 2921L
|
|
#define M_AUG_SMOOTH_DERICHE_OP_FACTOR_MAX 2922L
|
|
#define M_AUG_SMOOTH_GAUSSIAN_OP_STDDEV_MIN 2933L
|
|
#define M_AUG_SMOOTH_GAUSSIAN_OP_STDDEV_MAX 2934L
|
|
#define M_AUG_BLUR_MOTION_OP_SIZE_MIN 2924L
|
|
#define M_AUG_BLUR_MOTION_OP_SIZE_MAX 2925L
|
|
#define M_AUG_BLUR_MOTION_OP_ANGLE_MIN 2926L
|
|
#define M_AUG_BLUR_MOTION_OP_ANGLE_MAX 2927L
|
|
#define M_AUG_SHARPEN_DERICHE_OP_FACTOR_MIN 2929L
|
|
#define M_AUG_SHARPEN_DERICHE_OP_FACTOR_MAX 2930L
|
|
|
|
#define M_AUG_NOISE_SALT_PEPPER_OP_DENSITY 2948L
|
|
#define M_AUG_NOISE_SALT_PEPPER_OP_DENSITY_DELTA 2949L
|
|
#define M_AUG_NOISE_MULTIPLICATIVE_OP_STDDEV 2951L
|
|
#define M_AUG_NOISE_MULTIPLICATIVE_OP_STDDEV_DELTA 2952L
|
|
#define M_AUG_NOISE_MULTIPLICATIVE_OP_INTENSITY_MIN 2953L
|
|
#define M_AUG_NOISE_MULTIPLICATIVE_OP_DISTRIBUTION 2954L
|
|
#define M_AUG_NOISE_GAUSSIAN_ADDITIVE_OP_STDDEV 2956L
|
|
#define M_AUG_NOISE_GAUSSIAN_ADDITIVE_OP_STDDEV_DELTA 2957L
|
|
|
|
#define M_AUG_RNG_INIT_VALUE 2867L
|
|
#define M_AUG_SEED_MODE 3421L
|
|
#define M_AUG_OPTIMAL_SIZE_X 3419L
|
|
#define M_AUG_OPTIMAL_SIZE_Y 3420L
|
|
|
|
/* Parameter value */
|
|
#define M_ALL_BANDS M_ALL_BAND // Already defined mil.h
|
|
#define M_PER_BAND 2966L
|
|
#define M_UNIFORM 1 // Already defined MimHistogramEqualize()
|
|
#define M_GAUSSIAN 0x805L // Already defined in miledge.h
|
|
#define M_RGB 8L // Already defined in mil.h
|
|
#define M_LEFT_HALF M_LEFT
|
|
#define M_RIGHT_HALF M_RIGHT
|
|
#define M_UPPER_HALF M_TOP
|
|
#define M_LOWER_HALF M_BOTTOM
|
|
#define M_NORMAL 8L // Already defined in mil.h
|
|
#define M_INVERT 2L // Arleady defined in milocr.h
|
|
|
|
#define M_RNG_AUTO 3422L
|
|
#define M_RNG_INIT_VALUE 3464L
|
|
#define M_USER_DEFINED_SEED 3465L
|
|
|
|
#define M_AUTO_VALUE MAKE_INT64(0x0000000100000000)
|
|
/************************************************************************/
|
|
/* MimStatCalculate() */
|
|
/************************************************************************/
|
|
|
|
/************************************************************************/
|
|
/* MimFilterAdaptive() */
|
|
/************************************************************************/
|
|
#define M_BILATERAL (M_PSEUDO_ID | 0x400)
|
|
|
|
#if OldDefinesSupport
|
|
#define M_NOPEL (M_PSEUDO_ID | 0x401)
|
|
MIL_DEPRECATED(M_NOPEL, 1040) // Use M_NOISE_PEAK_REMOVAL instead.
|
|
#endif
|
|
#define M_NOISE_PEAK_REMOVAL (M_PSEUDO_ID | 0x402)
|
|
#define M_MEDIAN 0x10000L // Already defined elsewhere.
|
|
#define M_MEAN 0x08000000L // Already defined elsewhere.
|
|
#define M_EXTREME 3393L
|
|
|
|
/************************************************************************/
|
|
/* MimFilterMajority() */
|
|
/************************************************************************/
|
|
#define M_MOST_REPEATED_PIXEL (M_PSEUDO_ID | 0x403)
|
|
|
|
/************************************************************************/
|
|
/* MimRemap() */
|
|
/************************************************************************/
|
|
|
|
// Control for M_HIST_LIST
|
|
#define M_FIT_SRC_RANGE 0x01 // Already defined as control for M_HIST_LIST.
|
|
#define M_FIT_SRC_DATA 0x02 // Already defined as control for M_HIST_LIST.
|
|
#define M_CENTERED 0x00010000
|
|
|
|
#ifdef __cplusplus
|
|
|
|
inline MIL_INT64 ExtractTypeFromValue(MIL_INT64 Value,
|
|
MIL_INT64 Type1,
|
|
MIL_INT64 Type2 = 0,
|
|
MIL_INT64 Type3 = 0,
|
|
MIL_INT64 Type4 = 0,
|
|
MIL_INT64 Type5 = 0,
|
|
MIL_INT64 Type6 = 0,
|
|
MIL_INT64 Type7 = 0,
|
|
MIL_INT64 Type8 = 0)
|
|
{
|
|
MIL_INT64 Type = (Value & M_HLVLDATATYPE_MASK);
|
|
if (Type) // type specified.
|
|
{
|
|
// If the extracted type doesn't match one of the allowed types, set it to 0.
|
|
if (Type != Type1 &&
|
|
Type != Type2 &&
|
|
Type != Type3 &&
|
|
Type != Type4 &&
|
|
Type != Type5 &&
|
|
Type != Type6 &&
|
|
Type != Type7 &&
|
|
Type != Type8)
|
|
{
|
|
Type = 0;
|
|
}
|
|
}
|
|
|
|
return Type;
|
|
}
|
|
|
|
#endif
|
|
|
|
/* C++ directive if needed */
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* POINT TO POINT : */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
#if M_MIL_USE_64BIT
|
|
#define MimArith(Src1, Src2, Dest, Op) MimArithDouble(M_MILID_TO_DOUBLE(Src1), M_MILID_TO_DOUBLE(Src2), Dest, Op)
|
|
#else
|
|
#define MimArithDouble MimArith
|
|
#endif
|
|
void MFTYPE MimArithDouble (MIL_DOUBLE Src1ImageBufIdOrConst,
|
|
MIL_DOUBLE Src2ImageBufIdOrConst,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 Operation);
|
|
|
|
#if M_MIL_USE_64BIT
|
|
#define MimArithMultiple(Src1, Src2, Src3, Src4, Src5, Dest, Op, OpFlag) MimArithMultipleDouble(M_MILID_TO_DOUBLE(Src1), M_MILID_TO_DOUBLE(Src2), M_MILID_TO_DOUBLE(Src3), Src4, Src5, Dest, Op, OpFlag)
|
|
#else
|
|
#define MimArithMultipleDouble MimArithMultiple
|
|
#endif
|
|
void MFTYPE MimArithMultipleDouble(MIL_DOUBLE Src1ImageBufId,
|
|
MIL_DOUBLE Src2ImageBufIdOrConst,
|
|
MIL_DOUBLE Src3ImageBufIdOrConst,
|
|
MIL_DOUBLE Src4Const,
|
|
MIL_DOUBLE Src5Const,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 OperationFlag);
|
|
|
|
void MFTYPE MimLutMap (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_ID LutBufId);
|
|
|
|
void MFTYPE MimShift (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT NbBitsToShift);
|
|
|
|
MIL_INT MFTYPE MimBinarizeDouble (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 ConditionAndThreshMode,
|
|
MIL_DOUBLE LowParam,
|
|
MIL_DOUBLE HighParam);
|
|
|
|
void MFTYPE MimClipDouble (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 Condition,
|
|
MIL_DOUBLE CondLow,
|
|
MIL_DOUBLE CondHigh,
|
|
MIL_DOUBLE WriteLow,
|
|
MIL_DOUBLE WriteHigh);
|
|
|
|
void MFTYPE MimFlatField (MIL_ID FlatFieldContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* NEIGHBOURHOOD : */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimDeinterlace (MIL_ID DeinterlaceContextImId,
|
|
const MIL_ID *SrcImageArrayPtr,
|
|
const MIL_ID *DstImageArrayPtr,
|
|
MIL_INT SrcImageCount,
|
|
MIL_INT DstImageCount,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* GEOMETRICAL: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimResize (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageOrArrayBufId,
|
|
MIL_DOUBLE ScaleFactorX,
|
|
MIL_DOUBLE ScaleFactorY,
|
|
MIL_INT64 InterpolationMode);
|
|
|
|
void MFTYPE MimRotate (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageOrArrayBufId,
|
|
MIL_DOUBLE Angle,
|
|
MIL_DOUBLE SrcCenX,
|
|
MIL_DOUBLE SrcCenY,
|
|
MIL_DOUBLE DstCenX,
|
|
MIL_DOUBLE DstCenY,
|
|
MIL_INT64 InterpolationMode);
|
|
|
|
void MFTYPE MimFlip (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 OpFlag);
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* STATISTICAL: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimHistogram (MIL_ID SrcImageBufId,
|
|
MIL_ID HistResultImId);
|
|
|
|
void MFTYPE MimHistogramEqualizeDouble(MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 Operation,
|
|
MIL_DOUBLE Alpha,
|
|
MIL_DOUBLE Min,
|
|
MIL_DOUBLE Max);
|
|
|
|
void MFTYPE MimFindExtreme (MIL_ID SrcImageBufId,
|
|
MIL_ID ExtremeResultImId,
|
|
MIL_INT64 ExtremeType);
|
|
|
|
MIL_ID MFTYPE MimAllocResult (MIL_ID SysId,
|
|
MIL_INT NbEntries,
|
|
MIL_INT64 ResultType,
|
|
MIL_ID* ResultImIdPtr);
|
|
|
|
void MFTYPE MimFree (MIL_ID ContextOrResultImId);
|
|
|
|
MIL_INT MFTYPE MimInquire (MIL_ID ContextOrResultImId,
|
|
MIL_INT64 InquireType,
|
|
void* UserVarPtr);
|
|
|
|
void MFTYPE MimGetResult2d (MIL_ID ResultImId,
|
|
MIL_INT OffsetX,
|
|
MIL_INT OffsetY,
|
|
MIL_INT SizeX,
|
|
MIL_INT SizeY,
|
|
MIL_INT64 ResultType,
|
|
MIL_INT64 ControlFlag,
|
|
void* UserArrayPtr);
|
|
|
|
void MFTYPE MimGetResult1d (MIL_ID ResultImId,
|
|
MIL_INT OffEntry,
|
|
MIL_INT NbEntries,
|
|
MIL_INT64 ResultType,
|
|
void* UserArrayPtr);
|
|
|
|
void MFTYPE MimGetResult (MIL_ID ResultImId,
|
|
MIL_INT64 ResultType,
|
|
void* UserArrayPtr);
|
|
|
|
void MFTYPE MimGetResultSingleInt64 (MIL_ID ResultImId,
|
|
MIL_INT64 Index1,
|
|
MIL_INT64 Index2,
|
|
MIL_INT64 ResultType,
|
|
void* UserArrayPtr);
|
|
|
|
MIL_ID MFTYPE MimAlloc (MIL_ID SysId,
|
|
MIL_INT64 ContextType,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID* ContextImIdPtr);
|
|
|
|
#if M_MIL_USE_64BIT
|
|
// Prototypes for 64 bits OSs
|
|
|
|
void MFTYPE MimControlInt64 (MIL_ID ContextOrResultImId,
|
|
MIL_INT64 ControlType,
|
|
MIL_INT64 ControlValue);
|
|
|
|
void MFTYPE MimControlDouble (MIL_ID ContextOrResultImId,
|
|
MIL_INT64 ControlType,
|
|
MIL_DOUBLE ControlValue);
|
|
#else
|
|
// Prototypes for 32 bits OSs
|
|
|
|
#define MimControlDouble MimControl
|
|
#define MimControlInt64 MimControl
|
|
void MFTYPE MimControl (MIL_ID ContextOrResultImId,
|
|
MIL_INT64 ControlType,
|
|
MIL_DOUBLE ControlValue);
|
|
#endif
|
|
|
|
MIL_INT MFTYPE MimGet (MIL_ID ContextImId,
|
|
MIL_INT64 GetType,
|
|
MIL_INT ArraySize,
|
|
void * Param1Ptr,
|
|
void * Param2Ptr,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MimPut (MIL_ID ContextImId,
|
|
MIL_INT64 PutType,
|
|
MIL_INT ArraySize,
|
|
const void *Param1Ptr,
|
|
const void *Param2Ptr,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* CONVERSION: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimConvert (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_ID ArrayBufIdOrConversionType);
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* BUF: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimRearrange (MIL_ID RearrangeContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
#if M_MIL_USE_UNICODE
|
|
|
|
MIL_ID MFTYPE MimRestoreA (MIL_CONST_TEXTA_PTR FileName,
|
|
MIL_ID SysId,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID* ContextImIdPtr);
|
|
void MFTYPE MimSaveA (MIL_CONST_TEXTA_PTR FileName,
|
|
MIL_ID ContextImId,
|
|
MIL_INT64 ControlFlag);
|
|
void MFTYPE MimStreamA (MIL_TEXTA_PTR MemPtrOrFileName,
|
|
MIL_ID SysId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 StreamType,
|
|
MIL_DOUBLE Version,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID* ContextImIdPtr,
|
|
MIL_INT* SizeByteVarPtr);
|
|
|
|
MIL_ID MFTYPE MimRestoreW (MIL_CONST_TEXTW_PTR FileName,
|
|
MIL_ID SysId,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID *ContextImIdPtr);
|
|
void MFTYPE MimSaveW (MIL_CONST_TEXTW_PTR FileName,
|
|
MIL_ID ContextImId,
|
|
MIL_INT64 ControlFlag);
|
|
void MFTYPE MimStreamW (MIL_TEXTW_PTR MemPtrOrFileName,
|
|
MIL_ID SysId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 StreamType,
|
|
MIL_DOUBLE Version,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID* ContextImIdPtr,
|
|
MIL_INT* SizeByteVarPtr);
|
|
|
|
#if M_MIL_UNICODE_API
|
|
#define MimRestore MimRestoreW
|
|
#define MimSave MimSaveW
|
|
#define MimStream MimStreamW
|
|
#else
|
|
#define MimRestore MimRestoreA
|
|
#define MimSave MimSaveA
|
|
#define MimStream MimStreamA
|
|
#endif
|
|
|
|
#else
|
|
|
|
MIL_ID MFTYPE MimRestore (MIL_CONST_TEXT_PTR FileName,
|
|
MIL_ID SysId,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID *ContextImIdPtr);
|
|
|
|
void MFTYPE MimSave (MIL_CONST_TEXT_PTR FileName,
|
|
MIL_ID ContextImId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MimStream (MIL_TEXT_PTR MemPtrOrFileName,
|
|
MIL_ID SysId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 StreamType,
|
|
MIL_DOUBLE Version,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID* ContextImIdPtr,
|
|
MIL_INT* SizeByteVarPtr);
|
|
#endif //#if M_MIL_USE_UNICODE
|
|
|
|
#if (!M_MIL_LITE)
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* NEIGHBOURHOOD : */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimConvolve (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_ID FilterContextImOrKernelBufId);
|
|
|
|
|
|
void MFTYPE MimRank (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_ID StructElemBufId,
|
|
MIL_INT Rank,
|
|
MIL_INT64 ProcMode);
|
|
|
|
void MFTYPE MimEdgeDetectMIL_INT (MIL_ID SrcImageBufId,
|
|
MIL_ID DstIntensityImageBufId,
|
|
MIL_ID DstAngleImageBufId,
|
|
MIL_ID KernelId,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_INT Threshold);
|
|
|
|
void MFTYPE MimMatch (MIL_ID MatchContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MimBinarizeAdaptive ( MIL_ID AdaptiveBinarizeContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID SeedImage1BufId,
|
|
MIL_ID SeedImage2BufId,
|
|
MIL_ID BinarizedImageBufId,
|
|
MIL_ID ThresholdImageBufId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MimAugment(MIL_ID AugmentationContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufOrAugmentationResultImId,
|
|
MIL_INT64 SeedValue,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MimFilterAdaptive(MIL_ID AdaptiveFilterContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_DOUBLE Param1,
|
|
MIL_DOUBLE Param2,
|
|
MIL_DOUBLE Param3,
|
|
MIL_INT64 ControlFlag
|
|
);
|
|
|
|
|
|
|
|
void MFTYPE MimDifferential(MIL_ID Drv1ImageBufIdOrFilterContextImId,
|
|
MIL_ID SrcOrDrv2ImageBufId,
|
|
MIL_ID SrcOrDrv3ImageBufId,
|
|
MIL_ID Drv4ImageBufId,
|
|
MIL_ID Drv5ImageBufId,
|
|
MIL_ID Dst1ImageBufId,
|
|
MIL_ID Dst2ImageBufId,
|
|
MIL_DOUBLE Param,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MimFilterMajority (MIL_ID MajorityFilterContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_ID StructElemBufId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* MORPHOLOGICAL: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimLabel (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 ProcMode);
|
|
|
|
void MFTYPE MimConnectMap (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_ID LutBufId);
|
|
|
|
void MFTYPE MimDilate (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT NbIteration,
|
|
MIL_INT64 ProcMode);
|
|
|
|
void MFTYPE MimErode (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT NbIteration,
|
|
MIL_INT64 ProcMode);
|
|
|
|
void MFTYPE MimClose (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT NbIteration,
|
|
MIL_INT64 ProcMode);
|
|
|
|
void MFTYPE MimOpen (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT NbIteration,
|
|
MIL_INT64 ProcMode);
|
|
|
|
void MFTYPE MimMorphic (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_ID StructElemBufId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT NbIterationOrArea,
|
|
MIL_INT64 ProcMode);
|
|
|
|
void MFTYPE MimThin (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT NbIteration,
|
|
MIL_INT64 ProcMode);
|
|
|
|
void MFTYPE MimThick (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT NbIteration,
|
|
MIL_INT64 ProcMode);
|
|
|
|
void MFTYPE MimDistance (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 DistanceTransform);
|
|
|
|
void MFTYPE MimWatershed (MIL_ID SrcImageBufId,
|
|
MIL_ID MarkerImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT MinVariation,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MimZoneOfInfluence (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 OperationFlag);
|
|
|
|
void MFTYPE MimDeadPixelCorrection(MIL_ID DeadPixelContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* GEOMETRICAL: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimTranslate (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageOrArrayBufId,
|
|
MIL_DOUBLE DisplacementX,
|
|
MIL_DOUBLE DisplacementY,
|
|
MIL_INT64 InterpolationMode);
|
|
|
|
void MFTYPE MimWarp (MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_ID WarpParam1BufId,
|
|
MIL_ID WarpParam2BufId,
|
|
MIL_INT64 OperationMode,
|
|
MIL_INT64 InterpolationMode);
|
|
|
|
void MFTYPE MimWarpList(MIL_ID WarpParamBufId,
|
|
MIL_INT64 TransformType,
|
|
MIL_INT NumPoints,
|
|
const MIL_DOUBLE* SrcCoordXArrayPtr,
|
|
const MIL_DOUBLE* SrcCoordYArrayPtr,
|
|
MIL_DOUBLE* DstCoordXArrayPtr,
|
|
MIL_DOUBLE* DstCoordYArrayPtr,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MimPolarTransform (MIL_ID SrcImageOrDstXLutBufId,
|
|
MIL_ID DstImageOrYLutBufId,
|
|
MIL_DOUBLE CenterPosX,
|
|
MIL_DOUBLE CenterPosY,
|
|
MIL_DOUBLE StartRadius,
|
|
MIL_DOUBLE EndRadius,
|
|
MIL_DOUBLE StartAngle,
|
|
MIL_DOUBLE EndAngle,
|
|
MIL_INT64 OperationMode,
|
|
MIL_INT64 InterpolationMode,
|
|
MIL_DOUBLE *DstSizeXPtr,
|
|
MIL_DOUBLE *DstSizeYPtr);
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* STATISTICAL: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimBoundingBox(MIL_ID SrcImageBufId,
|
|
MIL_INT64 Condition,
|
|
MIL_DOUBLE CondLow,
|
|
MIL_DOUBLE CondHigh,
|
|
MIL_INT64 BoxDefinitionType,
|
|
MIL_INT* TopLeftXPtr,
|
|
MIL_INT* TopLeftYPtr,
|
|
MIL_INT* BottomRightXOrLengthPtr,
|
|
MIL_INT* BottomRightYOrLengthPtr,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MimProject (MIL_ID SrcImageBufId,
|
|
MIL_ID ProjResultImId,
|
|
MIL_DOUBLE ProjectionAngle);
|
|
|
|
#if M_MILIM_FUNCTION_DEPRECATION_WARNING
|
|
MIL_DEPRECATED(MimProject, 1095) // Use MimProjection instead.
|
|
#endif
|
|
|
|
void MFTYPE MimProjection(MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufOrResultImId,
|
|
MIL_DOUBLE ProjectionAxisAngle,
|
|
MIL_INT64 Operation,
|
|
MIL_DOUBLE OperationValue);
|
|
|
|
#if M_MIL_USE_64BIT
|
|
#define MimStat(Src, Result, Type, Condition, CondLow, CondHigh) MimStatDouble(Src, Result, Type, Condition, M_MILID_TO_DOUBLE(CondLow), CondHigh)
|
|
#else
|
|
#define MimStatDouble MimStat
|
|
#endif
|
|
void MFTYPE MimStatDouble (MIL_ID SrcImageBufId,
|
|
MIL_ID StatResultImId,
|
|
MIL_INT64 StatType,
|
|
MIL_INT64 Condition,
|
|
MIL_DOUBLE CondLow,
|
|
MIL_DOUBLE CondHigh);
|
|
|
|
#if M_MILIM_FUNCTION_DEPRECATION_WARNING
|
|
MIL_DEPRECATED(MimStat, 1095) // Use MimStatCalculate instead.
|
|
#endif
|
|
|
|
void MFTYPE MimStatMultiple (MIL_ID StatMultipleContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID StatMultipleResultImId,
|
|
MIL_INT64 ControlFlag);
|
|
#if M_MILIM_FUNCTION_DEPRECATION_WARNING
|
|
MIL_DEPRECATED(MimStatMultiple, 1095) // Use MimStatCalculate instead.
|
|
#endif
|
|
|
|
MIL_INT MFTYPE MimDetectEventDouble (MIL_ID SrcImageBufId,
|
|
MIL_INT64 Condition,
|
|
MIL_DOUBLE CondLow,
|
|
MIL_DOUBLE CondHigh);
|
|
|
|
MIL_INT MFTYPE MimLocateEventDouble (MIL_ID SrcImageBufId,
|
|
MIL_ID EventResultImId,
|
|
MIL_INT64 Condition,
|
|
MIL_DOUBLE CondLow,
|
|
MIL_DOUBLE CondHigh);
|
|
|
|
void MFTYPE MimLocatePeak1dDouble(MIL_ID ContextId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID ResultId,
|
|
MIL_INT PeakWidthNominal,
|
|
MIL_INT PeakWidthDelta,
|
|
MIL_DOUBLE MinContrast,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_DOUBLE ControlValue);
|
|
|
|
MIL_INT MFTYPE MimCountDifference (MIL_ID Src1ImageBufId,
|
|
MIL_ID Src2ImageBufId,
|
|
MIL_ID CountResultImId);
|
|
|
|
void MFTYPE MimHistogramEqualizeAdaptive(MIL_ID AdaptiveEqualizeContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
|
|
void MFTYPE MimFindOrientation(MIL_ID OrientationContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID OrientationResultImId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
void MFTYPE MimStatCalculate(MIL_ID StatContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID StatResultImId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* REMAPPING: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimRemap(MIL_ID RemapContextImId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* TRANSFORM: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimTransform (MIL_ID SrcImageRBufId,
|
|
MIL_ID SrcImageIBufId,
|
|
MIL_ID DstImageRBufId,
|
|
MIL_ID DstImageIBufId,
|
|
MIL_INT64 TransformType,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* WAVELET TRANSFORM: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimWaveletTransform (MIL_ID WaveletContextImId,
|
|
MIL_ID SrcImageBufOrWaveletResultImId,
|
|
MIL_ID DstImageBufOrWaveletResultImId,
|
|
MIL_INT64 TransformType,
|
|
MIL_INT Level,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* WAVELET DENOISE: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimWaveletDenoise (MIL_ID WaveletContextImId,
|
|
MIL_ID SrcImageBufOrWaveletResultImId,
|
|
MIL_ID DstImageBufOrWaveletResultImId,
|
|
MIL_INT Level,
|
|
MIL_ID DenoisingType,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* SET FILTER FOR WAVELET TRANSFORM: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimWaveletSetFilter (MIL_ID WaveletContextImId,
|
|
MIL_ID LowForwardRealFilterId,
|
|
MIL_ID HighForwardRealFilterId,
|
|
MIL_ID LowReverseRealFilterId,
|
|
MIL_ID HighReverseRealFilterId,
|
|
MIL_ID LowForwardImaginaryFilterId,
|
|
MIL_ID HighForwardImaginaryFilterId,
|
|
MIL_ID LowReverseImaginaryFilterId,
|
|
MIL_ID HighReverseImaginaryFilterId,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
|
|
/* -------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------- */
|
|
|
|
/* DRAW: */
|
|
|
|
/* -------------------------------------------------------------- */
|
|
|
|
void MFTYPE MimDrawDouble (MIL_ID ContextGraId,
|
|
MIL_ID Src1MilId,
|
|
MIL_ID Src2MilId,
|
|
MIL_ID DstImageBufOrListGraId,
|
|
MIL_INT64 Operation,
|
|
MIL_DOUBLE Param1,
|
|
MIL_DOUBLE Param2,
|
|
MIL_INT64 ControlFlag);
|
|
|
|
#endif // (!MIL_LITE)
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
|
|
inline void MFTYPE MimStreamCpp(MilStreamParam MemPtrOrFileName,
|
|
MIL_ID SysId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 StreamType,
|
|
MIL_DOUBLE Version,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID* ContextImIdPtr,
|
|
MIL_INT* SizeByteVarPtr)
|
|
{
|
|
MimStream(MemPtrOrFileName.m_Param, SysId, Operation, StreamType, Version, ControlFlag, ContextImIdPtr, SizeByteVarPtr);
|
|
}
|
|
|
|
#undef MimStream
|
|
#define MimStream MimStreamCpp
|
|
|
|
#endif // __cplusplus
|
|
|
|
#if M_MIL_USE_64BIT
|
|
#ifdef __cplusplus
|
|
//////////////////////////////////////////////////////////////
|
|
// MbufControl function definition when compiling c++ files
|
|
//////////////////////////////////////////////////////////////
|
|
#if !M_MIL_USE_LINUX
|
|
inline void MimControl(MIL_ID ContextOrResultImId,
|
|
MIL_INT64 ControlType,
|
|
int ControlValue)
|
|
{
|
|
MimControlInt64(ContextOrResultImId, ControlType, ControlValue);
|
|
};
|
|
#endif
|
|
|
|
inline void MimControl(MIL_ID ContextOrResultImId,
|
|
MIL_INT64 ControlType,
|
|
MIL_INT32 ControlValue)
|
|
{
|
|
MimControlInt64(ContextOrResultImId, ControlType, ControlValue);
|
|
}
|
|
|
|
inline void MimControl(MIL_ID ContextOrResultImId,
|
|
MIL_INT64 ControlType,
|
|
MIL_INT64 ControlValue)
|
|
{
|
|
MimControlInt64(ContextOrResultImId, ControlType, ControlValue);
|
|
}
|
|
|
|
inline void MimControl(MIL_ID ContextOrResultImId,
|
|
MIL_INT64 ControlType,
|
|
MIL_DOUBLE ControlValue)
|
|
{
|
|
MimControlDouble(ContextOrResultImId, ControlType, ControlValue);
|
|
}
|
|
|
|
#else
|
|
//////////////////////////////////////////////////////////////
|
|
// For C file, call the default function, i.e. Int64 one
|
|
//////////////////////////////////////////////////////////////
|
|
#define MimControl MimControlInt64
|
|
|
|
#endif // __cplusplus
|
|
#endif // M_MIL_USE_64BIT
|
|
|
|
#if(defined(__cplusplus))
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// MbufBinarize function definition when compiling c++ files
|
|
//////////////////////////////////////////////////////////////
|
|
inline MIL_INT MFTYPE MimBinarize(MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 ConditionAndThreshMode,
|
|
MIL_DOUBLE LowParam,
|
|
MIL_DOUBLE HighParam)
|
|
{
|
|
return MimBinarizeDouble(SrcImageBufId, DstImageBufId, ConditionAndThreshMode, LowParam, HighParam);
|
|
}
|
|
|
|
inline void MFTYPE MimClip(MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 Condition,
|
|
MIL_DOUBLE CondLow,
|
|
MIL_DOUBLE CondHigh,
|
|
MIL_DOUBLE WriteLow,
|
|
MIL_DOUBLE WriteHigh)
|
|
{
|
|
MimClipDouble(SrcImageBufId, DstImageBufId, Condition, CondLow, CondHigh, WriteLow, WriteHigh);
|
|
}
|
|
|
|
inline void MFTYPE MimHistogramEqualize(MIL_ID SrcImageBufId,
|
|
MIL_ID DstImageBufId,
|
|
MIL_INT64 EqualizationType,
|
|
MIL_DOUBLE Alpha,
|
|
MIL_DOUBLE Min,
|
|
MIL_DOUBLE Max)
|
|
{
|
|
MimHistogramEqualizeDouble(SrcImageBufId, DstImageBufId, EqualizationType, Alpha, Min, Max);
|
|
}
|
|
|
|
#if (!M_MIL_LITE)
|
|
|
|
inline void MFTYPE MimDraw(MIL_ID ContextGraId,
|
|
MIL_ID Src1MilId,
|
|
MIL_ID Src2MilId,
|
|
MIL_ID DstImageBufOrListGraId,
|
|
MIL_INT64 Operation,
|
|
MIL_DOUBLE Param1,
|
|
MIL_DOUBLE Param2,
|
|
MIL_INT64 ControlFlag)
|
|
{
|
|
MimDrawDouble(ContextGraId, Src1MilId, Src2MilId, DstImageBufOrListGraId, Operation, Param1, Param2, ControlFlag);
|
|
}
|
|
|
|
inline void MFTYPE MimEdgeDetect(MIL_ID SrcImageBufId,
|
|
MIL_ID DstIntensityImageBufId,
|
|
MIL_ID DstAngleImageBufId,
|
|
MIL_ID KernelId,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_INT Threshold)
|
|
{
|
|
MimEdgeDetectMIL_INT(SrcImageBufId, DstIntensityImageBufId, DstAngleImageBufId, KernelId, ControlFlag, Threshold);
|
|
}
|
|
|
|
inline MIL_INT MFTYPE MimDetectEvent(MIL_ID SrcImageBufId,
|
|
MIL_INT64 Condition,
|
|
MIL_DOUBLE CondLow,
|
|
MIL_DOUBLE CondHigh)
|
|
{
|
|
return MimDetectEventDouble(SrcImageBufId, Condition, CondLow, CondHigh);
|
|
}
|
|
|
|
inline MIL_INT MFTYPE MimLocateEvent(MIL_ID SrcImageBufId,
|
|
MIL_ID EventResultImId,
|
|
MIL_INT64 Condition,
|
|
MIL_DOUBLE CondLow,
|
|
MIL_DOUBLE CondHigh)
|
|
{
|
|
return MimLocateEventDouble(SrcImageBufId, EventResultImId, Condition, CondLow, CondHigh);
|
|
}
|
|
|
|
inline void MFTYPE MimLocatePeak1d(MIL_ID ContextId,
|
|
MIL_ID SrcImageBufId,
|
|
MIL_ID ResultId,
|
|
MIL_INT PeakWidthNominal,
|
|
MIL_INT PeakWidthDelta,
|
|
MIL_DOUBLE MinContrast,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_DOUBLE ControlValue)
|
|
{
|
|
MimLocatePeak1dDouble(ContextId, SrcImageBufId, ResultId, PeakWidthNominal, PeakWidthDelta, MinContrast, ControlFlag, ControlValue);
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|
#else //#if(!defined(__cplusplus))
|
|
|
|
#define MimBinarize MimBinarizeDouble
|
|
#define MimClip MimClipDouble
|
|
#define MimHistogramEqualize MimHistogramEqualizeDouble
|
|
|
|
#if (!M_MIL_LITE)
|
|
|
|
#define MimDraw MimDrawDouble
|
|
#define MimEdgeDetect MimEdgeDetectMIL_INT
|
|
#define MimDetectEvent MimDetectEventDouble
|
|
#define MimLocateEvent MimLocateEventDouble
|
|
#define MimLocatePeak1d MimLocatePeak1dDouble
|
|
#endif
|
|
|
|
#endif //#if(defined(__cplusplus))
|
|
|
|
#define MimGetResultSingle MimGetResultSingleInt64
|
|
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
// See milos.h for explanation about these functions.
|
|
//////////////////////////////////////////////////////////////
|
|
|
|
// -------------------------------------------------------------------------
|
|
// MimGetResult
|
|
|
|
inline void MFTYPE MimGetResultSafeType(MIL_ID ResultImId, MIL_INT64 ResultType, MilVoidPtr UserArrayPtr)
|
|
{
|
|
MIL_INT64 RequiredParamType = 0;
|
|
|
|
if (M_DEFAULT_DATA_TYPE_BIT_SET(ResultType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(ResultType))
|
|
{
|
|
RequiredParamType = M_PARAM_TYPE_MIL_INT64;
|
|
}
|
|
else
|
|
{
|
|
MimGetResult(ResultImId, ResultType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
|
|
}
|
|
|
|
if (!MfuncPointerIsCompatible(RequiredParamType, UserArrayPtr.Type, ResultType))
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimGetResult"));
|
|
}
|
|
|
|
MimGetResult(ResultImId, ResultType, UserArrayPtr.Ptr);
|
|
}
|
|
|
|
inline void MFTYPE MimGetResultUnsafe(MIL_ID ResultImId, MIL_INT64 ResultType, void *UserArrayPtr)
|
|
{
|
|
MimGetResult(ResultImId, ResultType, UserArrayPtr);
|
|
}
|
|
|
|
// -------------------------------------------------------------------------
|
|
// MimGetResult1d
|
|
|
|
inline void MFTYPE MimGetResult1dSafeType(MIL_ID ResultImId, MIL_INT OffEntry, MIL_INT NbEntries, MIL_INT64 ResultType, MilVoidPtr UserArrayPtr)
|
|
{
|
|
MIL_INT64 RequiredParamType = 0;
|
|
|
|
if (M_DEFAULT_DATA_TYPE_BIT_SET(ResultType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(ResultType))
|
|
{
|
|
RequiredParamType = M_PARAM_TYPE_MIL_INT64;
|
|
}
|
|
else
|
|
{
|
|
MimGetResult1d(ResultImId, OffEntry, NbEntries, ResultType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
|
|
}
|
|
|
|
if (!MfuncPointerIsCompatible(RequiredParamType, UserArrayPtr.Type, ResultType))
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimGetResult1d"));
|
|
}
|
|
|
|
MimGetResult1d(ResultImId, OffEntry, NbEntries, ResultType, UserArrayPtr.Ptr);
|
|
}
|
|
|
|
inline void MFTYPE MimGetResult1dUnsafe(MIL_ID ResultImId, MIL_INT OffEntry, MIL_INT NbEntries, MIL_INT64 ResultType, void *UserArrayPtr)
|
|
{
|
|
MimGetResult1d(ResultImId, OffEntry, NbEntries, ResultType, UserArrayPtr);
|
|
}
|
|
|
|
// -------------------------------------------------------------------------
|
|
// MimGetResult2d
|
|
|
|
inline void MFTYPE MimGetResult2dSafeType(MIL_ID ResultImId, MIL_INT OffsetX, MIL_INT OffsetY, MIL_INT SizeX, MIL_INT SizeY, MIL_INT64 ResultType, MIL_INT64 ControlFlag, MilVoidPtr UserArrayPtr)
|
|
{
|
|
MIL_INT64 RequiredParamType = 0;
|
|
|
|
if (M_DEFAULT_DATA_TYPE_BIT_SET(ResultType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(ResultType))
|
|
{
|
|
RequiredParamType = M_PARAM_TYPE_MIL_INT64;
|
|
}
|
|
else
|
|
{
|
|
MimGetResult2d(ResultImId, OffsetX, OffsetY, SizeX, SizeY, ResultType | M_DEFAULT_DATA_TYPE, ControlFlag, &RequiredParamType);
|
|
}
|
|
|
|
if (!MfuncPointerIsCompatible(RequiredParamType, UserArrayPtr.Type, ResultType))
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimGetResult2d"));
|
|
}
|
|
|
|
MimGetResult2d(ResultImId, OffsetX, OffsetY, SizeX, SizeY, ResultType, ControlFlag, UserArrayPtr.Ptr);
|
|
}
|
|
|
|
inline void MFTYPE MimGetResult2dUnsafe(MIL_ID ResultImId, MIL_INT OffsetX, MIL_INT OffsetY, MIL_INT SizeX, MIL_INT SizeY, MIL_INT64 ResultType, MIL_INT64 ControlFlag, void *UserArrayPtr)
|
|
{
|
|
MimGetResult2d(ResultImId, OffsetX, OffsetY, SizeX, SizeY, ResultType, ControlFlag, UserArrayPtr);
|
|
}
|
|
|
|
// -------------------------------------------------------------------------
|
|
// MimGetResultSingle
|
|
|
|
inline void MFTYPE MimGetResultSingleSafeType(MIL_ID ResultImId, MIL_INT64 Index1, MIL_INT64 Index2, MIL_INT64 ResultType, MilVoidPtr UserArrayPtr)
|
|
{
|
|
MIL_INT64 RequiredParamType = 0;
|
|
|
|
if (M_DEFAULT_DATA_TYPE_BIT_SET(ResultType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(ResultType))
|
|
{
|
|
RequiredParamType = M_PARAM_TYPE_MIL_INT64;
|
|
}
|
|
else
|
|
{
|
|
MimGetResultSingleInt64(ResultImId, Index1, Index2, ResultType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
|
|
}
|
|
|
|
if (!MfuncPointerIsCompatible(RequiredParamType, UserArrayPtr.Type, ResultType))
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimGetResultSingle"));
|
|
}
|
|
|
|
MimGetResultSingleInt64(ResultImId, Index1, Index2, ResultType, UserArrayPtr.Ptr);
|
|
}
|
|
|
|
inline void MFTYPE MimGetResultSingleUnsafe(MIL_ID ResultImId, MIL_INT64 Index1, MIL_INT64 Index2, MIL_INT64 ResultType, void *UserArrayPtr)
|
|
{
|
|
MimGetResultSingleInt64(ResultImId, Index1, Index2, ResultType, UserArrayPtr);
|
|
}
|
|
|
|
// -------------------------------------------------------------------------
|
|
// MimGet
|
|
|
|
inline MIL_INT MFTYPE MimGetSafeType(MIL_ID ContextImId, MIL_INT64 GetType, MIL_INT ArraySize, MilVoidPtr Param1Ptr, MilVoidPtr Param2Ptr, MIL_INT64 ControlFlag)
|
|
{
|
|
MIL_INT64 FirstRequiredParamType = 0, SecondRequiredParamType = 0;
|
|
|
|
if (M_DEFAULT_DATA_TYPE_BIT_SET(GetType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(GetType))
|
|
{
|
|
FirstRequiredParamType = SecondRequiredParamType = M_PARAM_TYPE_MIL_INT64;
|
|
}
|
|
else
|
|
{
|
|
MimGet(ContextImId, GetType | M_DEFAULT_DATA_TYPE, 1, &FirstRequiredParamType, &SecondRequiredParamType, ControlFlag);
|
|
}
|
|
|
|
bool PointersAreCompatible = true;
|
|
|
|
if (FirstRequiredParamType != M_PARAM_TYPE_VOID && !MfuncPointerIsCompatible(FirstRequiredParamType, Param1Ptr.Type, GetType))
|
|
{
|
|
PointersAreCompatible = false;
|
|
}
|
|
|
|
if (SecondRequiredParamType != M_PARAM_TYPE_VOID && !MfuncPointerIsCompatible(SecondRequiredParamType, Param2Ptr.Type, GetType))
|
|
{
|
|
PointersAreCompatible = false;
|
|
}
|
|
|
|
if (!PointersAreCompatible)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimGet"));
|
|
}
|
|
|
|
return MimGet(ContextImId, GetType, ArraySize, Param1Ptr.Ptr, Param2Ptr.Ptr, ControlFlag);
|
|
}
|
|
|
|
inline MIL_INT MFTYPE MimGetUnsafe(MIL_ID ContextImId, MIL_INT64 GetType, MIL_INT ArraySize, void *Param1Ptr, void *Param2Ptr, MIL_INT64 ControlFlag)
|
|
{
|
|
return MimGet(ContextImId, GetType, ArraySize, Param1Ptr, Param2Ptr, ControlFlag);
|
|
}
|
|
|
|
// ----------------------------------------------------------
|
|
// MimInquire
|
|
|
|
inline MIL_INT MFTYPE MimInquireSafeType(MIL_ID ContextOrResultImId, MIL_INT64 InquireType, MilVoidPtr UserVarPtr)
|
|
{
|
|
MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64;
|
|
|
|
if (!M_DEFAULT_DATA_TYPE_BIT_SET(InquireType) && !M_RECOMMENDED_DATA_TYPE_BIT_SET(InquireType))
|
|
{
|
|
MimInquire(ContextOrResultImId, InquireType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
|
|
}
|
|
|
|
if (!MfuncPointerIsCompatible(RequiredParamType, UserVarPtr.Type, InquireType))
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimInquire"));
|
|
}
|
|
|
|
return MimInquire(ContextOrResultImId, InquireType, UserVarPtr.Ptr);
|
|
}
|
|
|
|
inline MIL_INT MFTYPE MimInquireUnsafe(MIL_ID ContextOrResultImId, MIL_INT64 InquireType, void *UserVarPtr)
|
|
{
|
|
return MimInquire(ContextOrResultImId, InquireType, UserVarPtr);
|
|
}
|
|
|
|
#define MimGet MimGetSafeType
|
|
#define MimGetResult MimGetResultSafeType
|
|
#define MimGetResult1d MimGetResult1dSafeType
|
|
#define MimGetResult2d MimGetResult2dSafeType
|
|
#if (defined(MimGetResultSingle))
|
|
#undef MimGetResultSingle
|
|
#endif
|
|
#define MimGetResultSingle MimGetResultSingleSafeType
|
|
#define MimInquire MimInquireSafeType
|
|
|
|
#else // #if M_MIL_USE_SAFE_TYPE
|
|
|
|
#define MimGetUnsafe MimGet
|
|
#define MimGetResultUnsafe MimGetResult
|
|
#define MimGetResult1dUnsafe MimGetResult1d
|
|
#define MimGetResult2dUnsafe MimGetResult2d
|
|
#define MimGetResultSingleUnsafe MimGetResultSingle
|
|
#define MimInquireUnsafe MimInquire
|
|
|
|
#endif // #if M_MIL_USE_SAFE_TYPE
|
|
|
|
// ----------------------------------------------------------
|
|
// Overload for std::vector.
|
|
#if defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR
|
|
template <typename UserType>
|
|
inline void MFTYPE MimGetResult(MIL_ID ResultImId, MIL_INT64 ResultType, std::vector<UserType> &UserArrayPtr)
|
|
{
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
if(M_GET_HLVLDATATYPE(ResultType) != 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimGetResult"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
|
|
}
|
|
#endif
|
|
|
|
ResultType = M_STRIP_HLVLDATATYPE(ResultType) + MilTraits<UserType>::TypeFlag;
|
|
|
|
MIL_INT InternalNumberOfElementsForStdVector = 0;
|
|
MimGetResult(ResultImId, M_STRIP_HLVLDATATYPE(ResultType) + M_NB_ELEMENTS + M_TYPE_MIL_INT, &InternalNumberOfElementsForStdVector);
|
|
|
|
UserArrayPtr.resize(InternalNumberOfElementsForStdVector);
|
|
|
|
if(InternalNumberOfElementsForStdVector > 0)
|
|
{
|
|
MimGetResult(ResultImId, ResultType, &UserArrayPtr[0]);
|
|
}
|
|
}
|
|
template <typename UserType>
|
|
inline void MFTYPE MimGetResultSingle(MIL_ID ResultImId, MIL_INT64 Index1, MIL_INT64 Index2, MIL_INT64 ResultType, std::vector<UserType> &UserArrayPtr)
|
|
{
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
if(M_GET_HLVLDATATYPE(ResultType) != 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimGetResultSingle"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
|
|
}
|
|
#endif
|
|
|
|
ResultType = M_STRIP_HLVLDATATYPE(ResultType) + MilTraits<UserType>::TypeFlag;
|
|
|
|
MIL_INT InternalNumberOfElementsForStdVector = 0;
|
|
MimGetResultSingle(ResultImId, Index1, Index2, M_STRIP_HLVLDATATYPE(ResultType) + M_NB_ELEMENTS + M_TYPE_MIL_INT, &InternalNumberOfElementsForStdVector);
|
|
|
|
UserArrayPtr.resize(InternalNumberOfElementsForStdVector);
|
|
|
|
if(InternalNumberOfElementsForStdVector > 0)
|
|
{
|
|
MimGetResultSingle(ResultImId, Index1, Index2, ResultType, &UserArrayPtr[0]);
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------
|
|
// Overloads for std::vector in MimDeinterlace.
|
|
inline void MFTYPE MimDeinterlace(MIL_ID DeinterlaceContextImId,
|
|
const std::vector<MIL_ID>& SrcImageArrayPtr,
|
|
const std::vector<MIL_ID>& DstImageArrayPtr,
|
|
MIL_INT SrcImageCount,
|
|
MIL_INT DstImageCount,
|
|
MIL_INT64 ControlFlag)
|
|
{
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
if(SrcImageCount <= 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimDeinterlace"), MIL_TEXT("SrcImageCount parameter must be greater than zero."));
|
|
}
|
|
if(DstImageCount <= 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimDeinterlace"), MIL_TEXT("DstImageCount parameter must be greater than zero."));
|
|
}
|
|
if(SrcImageArrayPtr.empty() || DstImageArrayPtr.empty())
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimDeinterlace"), MIL_TEXT("The input vectors cannot be empty."));
|
|
}
|
|
if(SrcImageCount > (MIL_INT)SrcImageArrayPtr.size() && SrcImageCount != M_DEFAULT)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimDeinterlace"), MIL_TEXT("SrcImageCount parameter must be smaller or equal (M_DEFAULT) to the size of input vector."));
|
|
}
|
|
if(DstImageCount > (MIL_INT)DstImageArrayPtr.size() && DstImageCount != M_DEFAULT)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimDeinterlace"), MIL_TEXT("DstImageCount parameter must be smaller or equal (M_DEFAULT) to the size of input vector."));
|
|
}
|
|
#endif
|
|
|
|
if(SrcImageCount == M_DEFAULT || SrcImageCount > (MIL_INT)SrcImageArrayPtr.size())
|
|
{
|
|
SrcImageCount = (MIL_INT)SrcImageArrayPtr.size();
|
|
}
|
|
if(DstImageCount == M_DEFAULT || DstImageCount > (MIL_INT)DstImageArrayPtr.size())
|
|
{
|
|
DstImageCount = (MIL_INT)DstImageArrayPtr.size();
|
|
}
|
|
|
|
MimDeinterlace(DeinterlaceContextImId,
|
|
&SrcImageArrayPtr[0],
|
|
&DstImageArrayPtr[0],
|
|
SrcImageCount,
|
|
DstImageCount,
|
|
ControlFlag);
|
|
}
|
|
|
|
// ----------------------------------------------------------
|
|
// Overloads for std::vector in MimGet with two output parameters
|
|
template <typename UserType>
|
|
inline MIL_INT MFTYPE MimGet(MIL_ID ContextImId,
|
|
MIL_INT64 GetType,
|
|
MIL_INT ArraySize,
|
|
std::vector<UserType> &Param1Ptr,
|
|
std::vector<UserType> &Param2Ptr,
|
|
MIL_INT64 ControlFlag)
|
|
{
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
if(M_GET_HLVLDATATYPE(GetType) != 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimGet"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
|
|
}
|
|
#endif
|
|
|
|
GetType = M_STRIP_HLVLDATATYPE(GetType) + MilTraits<UserType>::TypeFlag;
|
|
|
|
bool InternalArraySizeSpecified = true;
|
|
|
|
if(ArraySize == M_DEFAULT)
|
|
{
|
|
InternalArraySizeSpecified = false;
|
|
ArraySize = 0;
|
|
ArraySize = MimGet(ContextImId, M_STRIP_HLVLDATATYPE(GetType), M_NULL, M_NULL, M_NULL, ControlFlag);
|
|
}
|
|
|
|
if(ArraySize >= 0)
|
|
{
|
|
Param1Ptr.resize(ArraySize);
|
|
Param2Ptr.resize(ArraySize);
|
|
}
|
|
|
|
// Call the original function in case the ArraySize parameter is specified.
|
|
// It is to allow the MIL function to pop an MIL error if the ArraySize is invalid.
|
|
// But, if the ArraySize is M_DEFAULT and that M3dmapGet outputs an MIL error,
|
|
// the following condition will ensure to not recall the same function.
|
|
if(ArraySize > 0 || InternalArraySizeSpecified)
|
|
{
|
|
MIL_INT InternalNbEntriesForStdVector = MimGet(ContextImId,
|
|
GetType,
|
|
ArraySize,
|
|
&Param1Ptr[0],
|
|
&Param2Ptr[0],
|
|
ControlFlag);
|
|
|
|
if(InternalNbEntriesForStdVector < ArraySize && ArraySize != M_DEFAULT)
|
|
{
|
|
Param1Ptr.resize(InternalNbEntriesForStdVector);
|
|
Param2Ptr.resize(InternalNbEntriesForStdVector);
|
|
}
|
|
return InternalNbEntriesForStdVector;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// ----------------------------------------------------------
|
|
// Overloads for std::vector in MimGet with only one output parameter.
|
|
template <typename UserType>
|
|
inline MIL_INT MFTYPE MimGet(MIL_ID ContextImId,
|
|
MIL_INT64 GetType,
|
|
MIL_INT ArraySize,
|
|
std::vector<UserType> &Param1Ptr,
|
|
void* Param2Ptr,
|
|
MIL_INT64 ControlFlag)
|
|
{
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
if(M_GET_HLVLDATATYPE(GetType) != 0)
|
|
SafeTypeError(MIL_TEXT("MimGet"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
|
|
#endif
|
|
|
|
GetType = M_STRIP_HLVLDATATYPE(GetType) + MilTraits<UserType>::TypeFlag;
|
|
|
|
if(ArraySize == M_DEFAULT)
|
|
{
|
|
ArraySize = 0;
|
|
ArraySize = MimGet(ContextImId, M_STRIP_HLVLDATATYPE(GetType), M_NULL, M_NULL, M_NULL, ControlFlag);
|
|
}
|
|
if(ArraySize >= 0)
|
|
Param1Ptr.resize(ArraySize);
|
|
if(ArraySize > 0)
|
|
{
|
|
MIL_INT InternalNbEntriesForStdVector = MimGet(ContextImId,
|
|
GetType,
|
|
ArraySize,
|
|
&Param1Ptr[0],
|
|
(UserType*)Param2Ptr,
|
|
ControlFlag);
|
|
if(InternalNbEntriesForStdVector < ArraySize && ArraySize != M_DEFAULT)
|
|
Param1Ptr.resize(InternalNbEntriesForStdVector);
|
|
|
|
return InternalNbEntriesForStdVector;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
// ----------------------------------------------------------
|
|
// Overloads for std::vector in MimGetResult1d.
|
|
template <typename UserType>
|
|
inline void MFTYPE MimGetResult1d(MIL_ID ResultImId,
|
|
MIL_INT OffEntry,
|
|
MIL_INT NbEntries,
|
|
MIL_INT64 ResultType,
|
|
std::vector<UserType> &UserArrayPtr)
|
|
{
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
if(M_GET_HLVLDATATYPE(ResultType) != 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimGetResult1d"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
|
|
}
|
|
#endif
|
|
|
|
ResultType = M_STRIP_HLVLDATATYPE(ResultType) + MilTraits<UserType>::TypeFlag;
|
|
|
|
MIL_INT InternalNumberOfElementsForStdVector = 0;
|
|
MimGetResult1d(ResultImId,
|
|
OffEntry,
|
|
NbEntries,
|
|
M_STRIP_HLVLDATATYPE(ResultType) + M_NB_ELEMENTS + M_TYPE_MIL_INT,
|
|
&InternalNumberOfElementsForStdVector);
|
|
|
|
UserArrayPtr.resize(InternalNumberOfElementsForStdVector);
|
|
|
|
if(InternalNumberOfElementsForStdVector > 0)
|
|
{
|
|
MimGetResult1d(ResultImId,
|
|
OffEntry,
|
|
NbEntries,
|
|
ResultType,
|
|
&UserArrayPtr[0]);
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------
|
|
// Overloads for std::vector in MimGetResult2d.
|
|
template <typename UserType>
|
|
inline void MimGetResult2d(MIL_ID ResultImId,
|
|
MIL_INT OffsetX,
|
|
MIL_INT OffsetY,
|
|
MIL_INT SizeX,
|
|
MIL_INT SizeY,
|
|
MIL_INT64 ResultType,
|
|
MIL_INT64 ControlFlag,
|
|
std::vector<UserType> &UserArrayPtr)
|
|
{
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
if(M_GET_HLVLDATATYPE(ResultType) != 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimGetResult2d"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
|
|
}
|
|
#endif
|
|
|
|
ResultType = M_STRIP_HLVLDATATYPE(ResultType) + MilTraits<UserType>::TypeFlag;
|
|
|
|
MIL_INT InternalNumberOfElementsForStdVector = 0;
|
|
MimGetResult2d(ResultImId,
|
|
OffsetX,
|
|
OffsetY,
|
|
SizeX,
|
|
SizeY,
|
|
M_STRIP_HLVLDATATYPE(ResultType) + M_NB_ELEMENTS + M_TYPE_MIL_INT,
|
|
ControlFlag,
|
|
&InternalNumberOfElementsForStdVector);
|
|
|
|
UserArrayPtr.resize(InternalNumberOfElementsForStdVector);
|
|
|
|
if(InternalNumberOfElementsForStdVector > 0)
|
|
{
|
|
MimGetResult2d(ResultImId,
|
|
OffsetX,
|
|
OffsetY,
|
|
SizeX,
|
|
SizeY,
|
|
ResultType,
|
|
ControlFlag,
|
|
&UserArrayPtr[0]);
|
|
}
|
|
}
|
|
|
|
// ----------------------------------------------------------
|
|
// Overloads for std::vector in MimPut.
|
|
template <typename UserType>
|
|
inline void MFTYPE MimPut(MIL_ID ContextImId,
|
|
MIL_INT64 PutType,
|
|
MIL_INT ArraySize,
|
|
const std::vector<UserType>& Param1Ptr,
|
|
const std::vector<UserType>& Param2Ptr,
|
|
MIL_INT64 ControlFlag)
|
|
{
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
if(M_GET_HLVLDATATYPE(PutType) != 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimPut"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
|
|
}
|
|
if(ArraySize <= 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimPut"), MIL_TEXT("ArraySize parameter must be greater than zero."));
|
|
}
|
|
if(Param1Ptr.empty())
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimPut"), MIL_TEXT("The input vectors cannot be empty."));
|
|
}
|
|
if(Param1Ptr.size() != Param2Ptr.size())
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimPut"), MIL_TEXT("The input vectors must have the same size."));
|
|
}
|
|
if(ArraySize > (MIL_INT)Param1Ptr.size() && ArraySize != M_DEFAULT)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimPut"), MIL_TEXT("ArraySize parameter must be smaller or equal (M_DEFAULT) to the size of input vectors."));
|
|
}
|
|
#endif
|
|
|
|
PutType = M_STRIP_HLVLDATATYPE(PutType) + MilTraits<UserType>::TypeFlag;
|
|
|
|
if(ArraySize == M_DEFAULT || ArraySize > (MIL_INT)Param1Ptr.size())
|
|
{
|
|
ArraySize = (MIL_INT)Param1Ptr.size();
|
|
}
|
|
|
|
MimPut(ContextImId,
|
|
PutType,
|
|
ArraySize,
|
|
&Param1Ptr[0],
|
|
&Param2Ptr[0],
|
|
ControlFlag);
|
|
}
|
|
|
|
#if (!M_MIL_LITE)
|
|
// ----------------------------------------------------------
|
|
// Overloads for std::vector in MimWarpList.
|
|
inline void MFTYPE MimWarpList(MIL_ID WarpParamBufId,
|
|
MIL_INT64 TransformType,
|
|
MIL_INT NumPoints,
|
|
const std::vector<MIL_DOUBLE>& SrcCoordXArrayPtr,
|
|
const std::vector<MIL_DOUBLE>& SrcCoordYArrayPtr,
|
|
std::vector<MIL_DOUBLE>& DstCoordXArrayPtr,
|
|
std::vector<MIL_DOUBLE>& DstCoordYArrayPtr,
|
|
MIL_INT64 ControlFlag)
|
|
{
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
if(NumPoints <= 0)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimWarpList"), MIL_TEXT("NumPoints parameter must be greater than zero."));
|
|
}
|
|
if(SrcCoordXArrayPtr.empty())
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimWarpList"), MIL_TEXT("The input vectors cannot be empty."));
|
|
}
|
|
if(SrcCoordXArrayPtr.size() != SrcCoordYArrayPtr.size())
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimWarpList"), MIL_TEXT("The input vectors must have the same size."));
|
|
}
|
|
if(NumPoints > (MIL_INT)SrcCoordXArrayPtr.size() && NumPoints != M_DEFAULT)
|
|
{
|
|
SafeTypeError(MIL_TEXT("MimWarpList"), MIL_TEXT("NumPoints parameter must be smaller or equal (M_DEFAULT) to the size of input vectors."));
|
|
}
|
|
#endif
|
|
|
|
if(NumPoints == M_DEFAULT || NumPoints > (MIL_INT)SrcCoordXArrayPtr.size())
|
|
{
|
|
NumPoints = (MIL_INT)SrcCoordXArrayPtr.size();
|
|
}
|
|
|
|
DstCoordXArrayPtr.resize(NumPoints);
|
|
DstCoordYArrayPtr.resize(NumPoints);
|
|
|
|
MimWarpList(WarpParamBufId,
|
|
TransformType,
|
|
NumPoints,
|
|
&SrcCoordXArrayPtr[0],
|
|
&SrcCoordYArrayPtr[0],
|
|
&DstCoordXArrayPtr[0],
|
|
&DstCoordYArrayPtr[0],
|
|
ControlFlag);
|
|
}
|
|
#endif // (!MIL_LITE)
|
|
|
|
// ----------------------------------------------------------
|
|
// Overloads for std::vector in MxxxStream.
|
|
inline void MFTYPE MimStream(std::vector<MIL_UINT8> &MemPtrOrFileName,
|
|
MIL_ID SysId,
|
|
MIL_INT64 Operation,
|
|
MIL_INT64 StreamType,
|
|
MIL_DOUBLE Version,
|
|
MIL_INT64 ControlFlag,
|
|
MIL_ID* McontextIdPtr,
|
|
MIL_INT* SizeByteVarPtr)
|
|
{
|
|
MxxxStreamForStdVector(MemPtrOrFileName,
|
|
SysId,
|
|
Operation,
|
|
StreamType,
|
|
Version,
|
|
ControlFlag,
|
|
McontextIdPtr,
|
|
SizeByteVarPtr,
|
|
MimStream);
|
|
}
|
|
#endif // defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR
|
|
|
|
#if M_MIL_USE_STRING
|
|
/***************************************************************************/
|
|
/* IM MODULE */
|
|
/***************************************************************************/
|
|
#if M_MIL_USE_UNICODE
|
|
#if M_MIL_UNICODE_API
|
|
inline void MFTYPE MimSaveW(const MIL_STRING& FileName, MIL_ID ContextImId, MIL_INT64 ControlFlag)
|
|
{
|
|
return MimSaveW(FileName.c_str(), ContextImId, ControlFlag);
|
|
}
|
|
|
|
inline MIL_ID MFTYPE MimRestoreW(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextImIdPtr)
|
|
{
|
|
return MimRestoreW(FileName.c_str(), SysId, ControlFlag, ContextImIdPtr);
|
|
}
|
|
#else
|
|
inline void MFTYPE MimSaveA(const MIL_STRING& FileName, MIL_ID ContextImId, MIL_INT64 ControlFlag)
|
|
{
|
|
return MimSaveA(FileName.c_str(), ContextImId, ControlFlag);
|
|
}
|
|
|
|
inline MIL_ID MFTYPE MimRestoreA(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextImIdPtr)
|
|
{
|
|
return MimRestoreA(FileName.c_str(), SysId, ControlFlag, ContextImIdPtr);
|
|
}
|
|
#endif /* M_MIL_UNICODE_API */
|
|
#else
|
|
inline void MFTYPE MimSave(const MIL_STRING& FileName, MIL_ID ContextImId, MIL_INT64 ControlFlag)
|
|
{
|
|
return MimSave(FileName.c_str(), ContextImId, ControlFlag);
|
|
}
|
|
|
|
inline MIL_ID MFTYPE MimRestore(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextImIdPtr)
|
|
{
|
|
return MimRestore(FileName.c_str(), SysId, ControlFlag, ContextImIdPtr);
|
|
}
|
|
#endif /* M_MIL_USE_UNICODE */
|
|
#endif /* M_MIL_USE_STRING */
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// MIL_UNIQUE_ID support
|
|
|
|
#if M_MIL_USE_MIL_UNIQUE_ID
|
|
|
|
#if M_MIL_USE_SAFE_TYPE
|
|
template <> inline bool MilIsCorrectObjectType<&MimFree>(MIL_INT64 ObjectType)
|
|
{
|
|
const MIL_INT64 AllImTypes = M_IM_ALLOC_RESULT_BUFFER_TYPES | M_IM_CONTEXT | M_IM_RESULT_OBJECT_TYPES;
|
|
return (ObjectType & M_USER_ATTRIBUTE) == 0 && (ObjectType & AllImTypes) != 0;
|
|
}
|
|
#endif
|
|
|
|
typedef MIL_UNIQUE_ID<&MimFree> MIL_UNIQUE_IM_ID;
|
|
|
|
#if M_MIL_USE_MOVE_SEMANTICS
|
|
|
|
inline MIL_UNIQUE_IM_ID MimAlloc(MIL_ID SysId, MIL_INT64 ContextType, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
|
|
{
|
|
return MIL_UNIQUE_IM_ID(MimAlloc(SysId, ContextType, ControlFlag, M_NULL));
|
|
}
|
|
inline MIL_UNIQUE_IM_ID MimAllocResult(MIL_ID SysId, MIL_INT NbEntries, MIL_INT64 ResultType, MIL_UNIQUE_ID_TAG)
|
|
{
|
|
return MIL_UNIQUE_IM_ID(MimAllocResult(SysId, NbEntries, ResultType, M_NULL));
|
|
}
|
|
inline MIL_UNIQUE_IM_ID MimRestore(MIL_CONST_TEXT_PTR FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
|
|
{
|
|
return MIL_UNIQUE_IM_ID(MimRestore(FileName, SysId, ControlFlag, M_NULL));
|
|
}
|
|
#if M_MIL_USE_STRING
|
|
inline MIL_UNIQUE_IM_ID MimRestore(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
|
|
{
|
|
return MIL_UNIQUE_IM_ID(MimRestore(FileName, SysId, ControlFlag, M_NULL));
|
|
}
|
|
#endif // M_MIL_USE_STRING
|
|
template <MilFreeFuncType FreeFunc> inline void MimFree(const MIL_UNIQUE_ID<FreeFunc>&) = delete;
|
|
|
|
inline void MimDeinterlace(
|
|
MIL_ID DeinterlaceContextImId,
|
|
MilConstArrayIdParam SrcImageArrayPtr ,
|
|
MilConstArrayIdParam DstImageArrayPtr ,
|
|
MIL_INT SrcImageCount ,
|
|
MIL_INT DstImageCount ,
|
|
MIL_INT64 ControlFlag )
|
|
{
|
|
MimDeinterlace(DeinterlaceContextImId, SrcImageArrayPtr.m_IdArrayPtr, DstImageArrayPtr.m_IdArrayPtr,
|
|
SrcImageCount, DstImageCount, ControlFlag);
|
|
}
|
|
|
|
inline void MimStream(MilStreamParam MemPtrOrFileName,
|
|
MIL_ID SysId ,
|
|
MIL_INT64 Operation ,
|
|
MIL_INT64 StreamType ,
|
|
MIL_DOUBLE Version ,
|
|
MIL_INT64 ControlFlag ,
|
|
MIL_UNIQUE_IM_ID* ContextImIdPtr ,
|
|
MIL_INT* SizeByteVarPtr )
|
|
{
|
|
MxxxStreamForMilUniqueId(MemPtrOrFileName, SysId, Operation, StreamType, Version, ControlFlag, ContextImIdPtr, SizeByteVarPtr, MimStream);
|
|
}
|
|
|
|
#endif // M_MIL_USE_MOVE_SEMANTICS
|
|
#endif // M_MIL_USE_MIL_UNIQUE_ID
|
|
|
|
// End of MIL_UNIQUE_ID support
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif //__MILIM_H__
|