| Customize Help

MIL and MIL-Lite modules

MIL and MIL-Lite share core functionality, including application and system control, image acquisition and archiving, graphical annotations, and basic image processing operations that are typically useful to preprocess grabbed images.

In the command reference, each function has an availability note in the menu. If it is available in MIL-Lite, you can use it if you have a MIL-Lite license; typically, no extra license module is required. To establish at a glance which functions are supported in MIL-Lite, go to the Customize MIL help page of the MIL help file, and set your product setting to MIL-Lite. Then, from the MIL Reference tree structure of the table of contents, click on im (or any other module prefix); this displays the module's information page. The functions in blue are those available in MIL-Lite.

The following is a summary of the functionality common to both MIL and MIL-Lite.


Module name




Allows you to initialize and control the execution environment for a MIL application. The module provides, among other things, integrated debugging services, a high-performance timer for benchmarking, portable threads and event handling, and automatic system resource compensation for processing and memory operations.



Allows you to allocate and control data buffers (storage areas) that are operated on by functions of several MIL modules. These buffers include image buffers and lookup table (LUT) buffers. The Buffer module allows you to isolate regions of a buffer using child buffers or regions of interest. In addition, this module can copy required sequential or non-sequential regions or bit-planes of a buffer to another buffer. The module's copy functions are optimized to make the best possible use of available system resources to maximize transferring speed. The module can archive and retrieve buffer data in common storage formats (for example, TIFF and JPEG). It can also create, save, and load sequences in AVI format. The module allows you to compress and decompress images and sequences, supporting both lossy and lossless JPEG and JPEG2000 compression algorithms. Furthermore, the module allows you to convert images grabbed from a camera with a Bayer filter, into 3-band color images.


Industrial Communication

Allows you to communicate with a device or a robot controller using a specified industrial protocol.



Allows you to manipulate and control the acquisition section of an imaging board and configurable cameras (such as GenICam SFNC-compliant cameras and GigE Vision cameras). It allows you to grab images or transmit/receive auxiliary signals, such as trigger input, timer output, and user output signals. It also allows you to use the serial interface of the imaging board, if the user signals are dependent upon the acquisition path used.


2D Display

Allows you to display images and manipulate their display. The 2D Display module offers many display effects, such as overlay, LUTs, and panning and zooming.



Allows you to perform custom processing operations using an on-board Processing FPGA. Performing processing operations on-board frees up the Host for other tasks. The module allows you to create, set up, and dispatch the required command(s) to carry out a required operation using specific processing units (PU) on a target Processing FPGA. You can configure, link, and queue multiple commands, as well as store necessary information in PU user-specific registers. This module assumes that the appropriate FPGA configuration with the required PUs has been loaded into the Processing FPGA.


Function Development

Allows you to define functions to extend MIL's functionality. Using this module, you can implement functions/scripts and integrate them directly into the MIL library, where they behave like standard MIL functions (for example, respecting error handling and tracing). These are referred to as user-defined MIL functions. Supported languages include (but are not limited to) C, C++, C#, Visual Basic NET, Python 2.7, and Python 3.7.


Data Generation

Allows you to generate data based on predefined algorithms and store it in a data buffer (for example, generating ramp data in a LUT buffer).



Allows you to annotate an image with graphics or text either in raster-based (destructive) form or in vectorial form. Additionally, you can modify and create graphics interactively within a 2D display.


Imaging Processing

Allows you to perform point-to-point, statistical, spatial filtering, morphological, wavelet, color, and geometric transformation operations. These operations allow you to perform image enhancements, distortion corrections, and analysis.

Note that only a subset of the functions of the Imaging Processing module is available in MIL-Lite. Refer to the MIL Reference for details.



Allows you to create and control MIL objects for a Distributed MIL application.



Allows you to perform compression and decompression operations on sequences of images and save the result to a video stream.



Allows you to allocate and control a MIL system. When you allocate a system, MIL opens communication channels and initializes the system (or hardware resources). Once Host communication has been established with a system, you can allocate its memory resources, display, and input capabilities. When a remote computer is specified during system allocation, the resources of the specified computer are made available: its specified Matrox imaging board (or third-party board), its CPU, and its memory.


System I/O

Allows you to allocate and control an I/O command list. This module is a sub-module of the System module.



Allows you to allocate MIL selectable threads and synchronization events on a specified multi-threaded MIL system. MIL threads and events allow you to synchronize the execution of MIL calls on an on-board processor or a remote computer.


3D Display

Allows you to display 3D data (point cloud containers and fully corrected depth maps) and other 3D graphics. The 3D Display module also allows you to manipulate the point-of-view of the 3D display.


3D Geometry

Allows you to generate 3D geometries. The 3D Geometry module also allows you to define transformation matrices.


3D Graphics

Allows you to add graphic elements to a 3D graphics list. Graphic elements in a 3D graphics list allow you to annotate a 3D display.

The following modules require the full version of MIL.


Module name




Allows you to measure and verify beads (continuous strips of material) according to predefined specifications. You can verify that a bead occurs at a required position, that its width falls within a certain range, that it does not have any gaps, and that its gaps do not exceed a specified size.


Blob Analysis

Allows you to identify and measure connected regions of pixels (commonly known as blobs) within an image.


Camera Calibration

Allows you to map pixel coordinates to real-world coordinates despite the presence of optical, aspect ratio, rotation, and perspective distortions in images. This mapping can be used to specify settings, and calculate and get results, from other MIL modules in real-world units. In addition, the module allows you to fixture a coordinate system to instances of a target object; this allows you to specify settings and obtain results relative to a location at a fixed offset from an object.



Allows you to solve identification and categorization issues known as classification problems.



Allows you to read and write several types of 1D codes (bar codes) and 2D codes (for example, Data Matrix codes), as well as composite codes. In addition, the module supports error correction schemes that allow you to both detect errors and recover data from degraded images. The module also provides functionality to verify the quality of printed codes, verifying if the scanned code meets your quality standards.


Color Analysis

Allows you to perform color-based operations such as matching, projection, and distance. You can use these operations to identify colors, segment colors (supervised), detect defects, enhance color-to-grayscale conversion, separate superimposed colors, and measure the relative presence of a color in an image. You can also adjust color data according to a specific color reference, using relative color calibration.



Allows you to perform optical character recognition on dot-matrix text using feature-based technologies. You can quickly create fonts and string models and use them to perform robust read operations. SureDotOCR is invariant to changes in contrast, and offers considerable tolerance towards variations in angle. The module can also adapt to some variations in scale, aspect ratio, and perspective. SureDotOCR supports multiple grammar-like rules and font definitions in a single context, and provides its own font file format, allowing you to more easily manage your fonts. SureDotOCR refers to MIL functions prefixed with Mdmr.


Edge Finder

Allows you to extract different types of edges in images, such as edges of object contours or thin curvilinear shapes. It also provides edge analysis capabilities and can measure a wide assortment of edge features, such as edge length and Feret diameter.



Allows you to find sets of image characteristics or "markers" in an image, based on differences in pixel intensities. Upon finding a marker, the module returns the marker's spatial reference position and measures such features as its width and angle. The module can also take measurements between two markers.



Allows you to measure the shape, size, and location of objects relative to one another in a target image and validate that they meet certain tolerances. This is done using a virtual template built from features (either physically present in an image or geometrically constructed) and tolerances specified. The template itself can be positioned where such features have been found in the target image.


Geometric Model Finder

Also referred to as Model Finder. Allows you to find models using an algorithmic approach that uses edge-based geometric features instead of a pixel-to-pixel correlation. The module's capabilities include:

  • Finding models through a range of angles and scales.

  • Finding occluded models.

  • Greater tolerance of adverse lighting conditions.

  • Results that provide more detailed information about the nature of the occurrence.


Optical Character Recognition

Allows you to perform character recognition using template-based technology. The Optical Character Recognition module reads and verifies character strings in images, providing results such as quality scores and validity flags. The module is especially designed to operate on character strings in degraded images, with up to ± 180° of rotation in the target string. The OCR module supports multiple strings and non-uniform spacing between characters.


Pattern Matching

Allows you to perform normalized grayscale correlation (NGC) pattern matching. The module's capabilities include finding:

  • The number of occurrences of models in a target image.

  • Occurrences of models at any angle in the target image.



Allows you to perform correlation-stitching registration, extended depth of field registration, depth-from-focus registration, or photometric stereo registration. Correlation-stitching registration allows you to find the transformations that optimally position images in the same coordinate system; these results can also be used to perform a mosaicing operation. Extended depth of field registration allows you to fuse images of a scene taken at different focus distances to simulate an image taken with an extended depth of field. Depth-from-focus registration allows you to generate an index map of a scene whereby each index represents a different depth, based on images of the scene taken at different focus distances. Photometric stereo registration allows you to use multiple images of a scene, taken with different lighting orientations, to detect defects on a reflective or smooth surface.


String Reader

Allows you to perform character recognition using feature-based technology. Being feature-based, String Reader is invariant to changes in scale, aspect ratio, and contrast. It also offers considerable tolerance towards variations in perspective and angle. In addition, the String Reader module supports multiple user-defined grammar rules, multi-font definitions, and fontless string reading, making applications simple to write and maintain.


3D Image Processing

Allows you to perform arithmetic and statistical operations on point clouds, depth maps, and 3D geometries. The 3D Image Processing module can perform operations such as cropping, sampling, and point cloud manipulation.


3D Reconstruction

Allows you to use a 3D reconstruction setup to scan an object and acquire 3D (three-dimensional) information from 2D (two-dimensional) images.


3D Metrology

Allows you to calculate various distance measurements and statistics between a point cloud, depth map, or geometry object. The 3D Metrology module also allows you to fit a geometry object to a point cloud or depth map.


3D Registration

Allows you to calculate the optimal registration of the overlapping region shared between two (or more) point clouds, and defines the transformation needed to achieve this registration.