-------------------------------------------------------------------------------- Matrox Imaging Library (8.0) Whatsnew.txt Readme File April 06, 2005 Copyright (c) 2005 by Matrox Electronic Systems Ltd. All rights reserved. -------------------------------------------------------------------------------- This document is divided in three sections. The first section details the differences between MIL 8.0 and MIL 7.5. The second section details the differences between MIL 7.5 and MIL 7.1. The third section details the differences between MIL 7.1 and MIL 7.0. -------------------------------------------------------------------------------- Section 1: Differences between MIL 8.0 and 7.5 Table of Contents for Section 1 1. Overview. 2. Support for new Matrox hardware. 3. Operating system information. 4. Board-specific details. 5. New processing functionality. 6. API changes. 7. Commands common to both MIL and MIL-Lite. 7.1 Control/Inquire types added. 7.2 Control/Inquire types moved. 7.3 Control/Inquire constant name changes. 7.4 Obsolete Control/Inquire types. 7.5 Others modifications. 8. Directory structure. 9. MilConfig and the Control Center. 1. Overview. -MIL 8.0 uses a new installation program, includes new display code and new processing functions. -This release contains a partial listing of our DCFs. For a complete and up-to-date listing, please check our website (http://www.matrox.com/imaging). 2. Support for new Matrox hardware. - Support for Matrox Helios family has been added. This includes: - Matrox Helios XA - Matrox Helios XCL dual-Base - Matrox Helios XCL single-Full - Support for Matrox Iris family has been added. This includes: - Matrox Iris P300 - Matrox Iris P700 - Matrox Iris P1200 - Support for Matrox Morphis family has been added. This includes: - Matrox Morphis Dual (PCI and PC/104-Plus) - Matrox Morphis Quad - Support for Matrox Odyssey family has been added. This includes: - Matrox Odyssey Xpro - Matrox Odyssey Xpro+ - Matrox Odyssey XA - Matrox Odyssey XCL dual-Base - Matrox Odyssey XCL single-Full - Matrox Odyssey XD - Support for Matrox Solios family has been added. This includes: - Matrox Solios XA (single and quad) - Matrox Solios XCL dual-Base - Matrox Solios XCL single-Full - This is the last release to support the Matrox Genesis family. 3. Operating system information. - MIL 8.0 supports Windows 2000 and XP (Windows 98, ME and NT 4.0 are no longer supported). 4. Board-specific details. - MdigProcess() is now available on all boards. 5. New processing functionality. - Pattern Matching (NGC-based) + Speed increase for multiple models and rotation mode search (regular and circular overscan) + MpatFindOrientation() and M_ORIENTATION models are no longer supported. Note that searching with angle (with or without M_CIRCULAR_OVERSCAN) is still fully supported. + Added two new inquires M_PROC_FIRST_LEVEL and M_PROC_LAST_LEVEL, which return the resolution levels for the first and last stages of the search. - Geometric Model Finder + Support for subpixel drawing with MmodDraw() using subpixel. + Support for filtering with recursive kernel (actual method) or with conventional convolution kernel (useful for platform with hardware accelerator). + New control to enable or disable position-range search (using M_SEARCH_POSITION_RANGE set to M_ENABLE or M_DISABLE). This control is useful, for example, to register a model from a seeded position (also disabling the search scale and angular ranges). + The search region (M_SEARCH_OFFSET_X, M_SEARCH_OFFSET_Y, M_SEARCH_SIZE_X and M_SEARCH_SIZE_Y) is replaced by a position range with nominal position and deltas (M_POSITION_X, M_POSITION_Y, M_POSITION_DELTA_NEG_X, M_POSITION_DELTA_NEG_Y, M_POSITION_DELTA_POS_X, M_POSITION_DELTA_POS_Y). The search region is still supported for compatibility but is no longer documented. + Timeout status can be checked using MmodGetResult() with M_TIMEOUT_END. + Support for a new mask type (Weighted Regions). Weighted Regions are used to apply specific weights to a model's edges. Weights can be negative. Weighted regions can be drawn like the other masks. + Support for two new types of synthetic models (Triangle and Diamond). + Support in MmodDefine() for a M_MOD_RESULT model type. This allows the user to define new model(s) from a previous match occurrence(s). + Support in MmodDefine() for M_MERGE_MODEL model type. This allows the user to define a new model by merging to previously existing models. + Added MmodInquire() M_ALLOC_SIZE_BAND, M_ALLOC_TYPE, M_ALLOC_SIGN and M_ALLOC_SIZE_BIT to enable clone model image allocation. + Context M_GEOMETRIC_CONTROL now supports synthetic models. + M_CHAIN_ANGLE can now be inquired or obtained as result. + Added MmodStream(), which allows you to save, restore, and load both to and from file and memory. - Code Reader + Added support for the RSS code family (RSS-14, RSS-14 Truncated, RSS-14 Stacked, RSS-14 Staked Omnidirectionnal, RSS Limited, RSS Expanded, and RSS Expanded Stacked). + Added support for EAN. UCC composite code types. + Added support for Ean8 code type. + Added support for MicroPDF417 code type. + Official support of Pharmacode code type. + Added support for barcode print quality estimation (McodeVerify). + Added timeout allowing the user to set a maximum read time. + Added McodeStream(), which allows you to save, restore, and load both to and from file and memory. - OCR + General speed improvement. + Improvements to reading/verifying at an angle and support for full range angular search (0 to 360 degrees). + OCR GUI: Improved font definition/interactivity. - Calibration + McalAlloc() and McalRestore() prototypes have changed to accept a SystemId. + Added McalStream(), which allows you to save, restore, and load both to and from file and memory. - Measurement + Support for variable filter size. + Added MmeasStream(), which allows you to save, restore, and load both to and from file and memory. - Edge Finder + General speed improvement. + Added MedgeGetNeighbors(), which allows the user to get the nearest edgels from an input list of points, under various constraints. + Added MedgePut(), which allows user to record user defined edge chains into an edge result buffer. + MedgeGetResult() now supports retrieval of statistics by allowing the user to combine the attribute name with one of the following flags: M_MIN, M_MAX, M_MIN_ABS, M_MAX_ABS, M_MEAN, or M_STANDARD_DEVIATION. + Added the result of M_VERTICES_INDEX. This returns, for each vertex, the index of the corresponding edgel in the edge. + Support for advanced filtering modes. The user can control the filtering mode (RECURSIVE or KERNEL), the size of the filtering kernel, and the depth and the maximum power loss of the kernel. + MedgeDraw(): Added the M_DRAW_VALUES combination constant which can be added to feature values (like Ferets) to draw the operation's numerical value. + Defining from an edge result buffer ROI and masking edge result buffer based models in Model Finder is fully supported. + Added MedgeSelect() M_INSIDE_OR_EQUAL and M_OUTSIDE_OR_EQUAL. + MedgeCalculate() now changes threshold values for a post-calculation will refine the edge results. + Internal compensation now allows MedgeCalculate() to support all source image buffer formats. + MedgeMask() now supports edge masking in post-calculation. Masked edges are excluded from the result buffer and subsequent calculations and partially masked edges are cropped. + MedgeControl() with M_FILL_GAP_DISTANCE supports M_INFINITE. + Added M_SHEN and M_DERICHE filters. + Timeout is supported and is controlled using the M_TIMEOUT control. The Timeout status can be checked using MedgeGetResult() with M_TIMEOUT_END. + MedgeGetResult() properties of the internal buffers, the ids of which are returned, can now also be inquired by combining the specified ResultType with the appropriate combination constant (for example, M_MAGNITUDE_ID+M_SIZE_BAND). + New line fit (M_LINE_FIT), circle fit (M_CIRCLE_FIT) and ellipse fit (M_ELLIPSE_FIT) edge features. + Added MedgeStream(), which allows you to save, restore, and load both to and from file and memory. - New String Reader module + Performs OCR using a feature-based technology. + Handles extreme contrast variations (e.g. daylight to nighttime). + Added robustness to horizontal and vertical scaling. + Tolerates some rotation (+/- 10 degrees). + Automatically locates text strings (i.e. no ROI necessary). + Supports definition of multiple fonts in a single context. + Includes a powerful tool for easy user-defined font definition. + Supports direct font definition from TrueType(TM) and PostScript(TM) fonts. + Supports multiple user-defined grammar rules. + Includes String Reader interactive utility for context definition and experimentation. - Watershed + Uses a new accelerated method. + New support for labeled marker. With labeled markers, 2 different markers can be touching and/or a single marker can be split in many region. + New support for source buffer basin local minima filling. - MbufCopy() and MbufClear() + Accelerated using SSE2. - MimBinarize() + Support autothreshold for all buffer types. (add support for 1 bit, 32 bit and float buffers) + MimBinarize() only returns the calculated autothreshold value when ConditionLow is set to M_DEFAULT and when destination buffer is set to M_NULL. If the destination buffer is not set to M_NULL, ConditionLow is always returned (even if its M_DEFAULT). This is to avoid systematic synchronization of the function. + Accelerated using SSE2. - MimConvolve() + Support for recursive Infinite Impulse Response (IIR) filtering as predefined kernel. M_SHEN_FILTER(FilterOperation, FilterSmoothness) and M_DERICHE_FILTER(FilterOperation, FilterSmoothness). Operation supported are: M_SMOOTH, M_HORIZ_EDGE, M_VERT_EDGE, M_EDGE_DETECT, M_EDGE_DETECT_SQR, M_LAPLACIAN_EDGE, M_SHARPEN, M_FIRST_DERIVATIVE_X, M_FIRST_DERIVATIVE_Y, M_SECOND_DERIVATIVE_X, M_SECOND_DERIVATIVE_Y, M_SECOND_DERIVATIVE_XY + Support for general kernel using IIR filtering or equivalent kernel filtering (see MbufControlNeighborhood() for more details). + Accelerated using SSE2. - MbufControlNeighborhood() + Support for filter mode M_KERNEL or M_RECURSIVE. + Support for filter types (M_USER_DEFINED, M_SHEN or M_DERICHE), smoothness (0.0 - 100.0), and operation (see MimConvolve section). - MbufBayer() + New adaptive algorithm with M_ADAPTIVE and, optionally, M_COLOR_CORRECTION. - Added MimStats(). - Batch the result retrieval in all high level modules and in MimGetResult() by using NULL instead of a pointer to only queue MxxxGetResults() in one final call (for acceleration). - MbufImport() + Added support for the JP2 file format. - MbufExport() + Added support for the JP2 file format. - MimConvert() + Buffers passed to this function no longer require the M_PROC attribute. + Accelerated case where source format is M_BGR32+M_PACKED (with or without M_FLIP), destination format is M_MONO8, conversion type is M_RGB_TO_Y using MMX. + Accelerated case where source format is M_BGR24+M_PACKED (with or without M_FLIP), destination format is M_MONO8, conversion type is M_RGB_TO_Y. This conversion is now done without any temporary allocations/copies. - MimArith(), MimClip(), and MimShift() + Accelerated using SSE2. - MimMorphic() + New functionality M_AREA_OPEN and M_AREA_CLOSE. - MimDilate(), MimErode() + Accelerated for cases with multiple iterations. - MimEdgeDetect() + Accelerated angle computation. - MimPolarTransform() + Accelerated. - MimRank() with M_3X3_RECT + Accelerated. - MimThin() and MimThick() + Accelerated using SSE. - MimWarp() + Accelerated using SSE. 6. API Changes Some function prototypes in MIL 8.0 were changed from MIL 7.5. These changes will require your programs to be re-compiled and linked with the new version. Most of them should not require you to modify your code. -MsysAlloc() : The first parameter is now a MIL_TXT_PTR instead of a void*. If you pass one of the M_SYSTEM_ defines directly to the MIL function, this change will be transparent. -MbufAlloc...() : The Attribute parameter of the MbufAlloc...() functions is now a MIL_INT64 instead of a long. The MIL_INT64 type is a 64-bit integer. Note that the MbufInquire M_ATTRIBUTE and M_FORMAT still expect a long* and will only return the 32 least-significant bits of the full 64-bit attribute/format. To get the full attribute/format use MbufInquire with M_EXTENDED_ATTRIBUTE and M_EXTENDED_FORMAT, which expect a MIL_INT64*. This change should be transparent as you can still use a variable of type long if you only use attributes that were already present in MIL 7.5. For example, long Attr = M_IMAGE+M_DISP+M_GRAB; // compiles without warnings -MdigReference() : The last parameter was changed from a long to a double. This change should not require any modification to your code unless you want to use non-integer reference levels. Some hardware restrictions may apply. -MdispPan() : The 2 long parameters are now doubles. This change should not require any modification to your code unless you want to use non-integer pan offset. Some hardware restrictions may apply. -MdispZoom() : The 2 long parameters are now doubles. This change should not require any modification to your code unless you want to use non-integer zoom factor. Some hardware restrictions may apply. -McalAlloc() and : A SystemId parameter was added to specify on which system McalRestore() to allocate/restore the calibration. This change will require a modification to your code. -MpatInquire(), McodeInquire(), MocrInquire(), and MgraInquire() : These functions are no longer void functions but now return a long. This change will be transparent. -MpatFindOrientation() and M_ORIENTATION models : MpatFindOrientation() and M_ORIENTATION models are no longer supported. -MdispOverlayKey() : MdispOverlayKey() has been removed from the documentation. This function is still available in MIL 8.0 for backward compatibility,but you should use MdispControl() instead to control the overlay keying for a specific display. 7. Commands common to both MIL and MIL-Lite. 7.1 Control/Inquire types added - MdispInquire(..., M_DISPLAY_TYPE, ...) has been added. This inquire returns the display type. Values, other than the ones mentioned below, might be added for auxiliary displays. These values are for internal use, and you should ignore them. Return values: M_AUXILIARY Display is auxiliary. M_WINDOWED + M_MIL_USER_WINDOW Display is a user-defined windowed display, selected using the MdispSelectWindow() function. M_WINDOWED + M_MIL_WINDOW Display is a windowed MIL display, selected using the MdispSelect() function. M_WINDOWED Display is windowed. Note: This inquire replace the old M_DISPLAY_MODE inquire. - MdispControl/Inquire(..., M_NO_TEARING, ...) has been added. This control sets whether the no-tearing mode is enabled for the selected display. This mode requires special hardware. If this control type is used and is not supported by your hardware, no error will be produced and MIL will compensate with a tearing mode. Note: This new display control allows you to grab without tearing to the display, replacing the old MsysControl(..., M_LIVE_GRAB_NO_TEARING, ...). - MdispControl/Inquire(..., M_FILL_DISPLAY, ...) has been added. This control sets whether a selected buffer will be zoomed using a factor necessary to fill the display. - MdispControl(..., M_OVERLAY_CLEAR, ...) has been added. This control sets the value that the overlay buffer associated with the display should be cleared to. - MbufInquire(..., M_DIB_HANDLE, ...) has been added. Returns the DIB handle (HBITMAP) of the DIB associated with the MIL buffer (if any) or M_NULL. If you want to ensure to have a DIB handle, you should allocate the buffer with the following attributes: M_DIB+M_GDI. - MdispControl/Inquire(..., M_TRANSPARENT_COLOR, ...) has been added. This control sets the transparent (keying) color. To compare overlay pixels to the keying color, enable the mask bits in the required range and specify an appropriate M_TRANSPARENT_COLOR value. Note: This new display control replaces the old MIL MdispOverlayKey() function. - MdispControl/Inquire(..., M_INTERPOLATION_MODE, ...) has been added. This control sets the type of interpolation used to display the selected to the display. The Control value can be: M_DEFAULT : The default interpolation use is M_FAST. M_FAST : Specifies to use the fasted interpolation mode available to update the display. M_NEAREST_NEIGHBOR : Specifies the nearest neighbor interpolation. - MdispControl/Inquire(..., M_CENTER_DISPLAY, ...) has been added. This control sets if the image will be in the center of the window, in both x and y. (especially useful for user-defined windows). ControlValue can be set to: M_ENABLE (Default for MIL windows) M_DISABLE (Default for user-defined windows) 7.2 Control/Inquire types moved - MsysControl/Inquire(..., M_LAST_GRAB_IN_TRUE_BUFFER, ...) is now a MdigControl(). Using MdigControl() instead of MsysControl() allows you to control this behavior for each allocated digitizer. - MsysControl/Inquire(..., M_LIVE_GRAB_END_TRIGGER, ...) is now a MdigControl(). Using MdigControl() instead of MsysControl() allows you to control this behavior for each allocated digitizer. - MsysControl/Inquire(..., M_LIVE_GRAB_NO_TEARING, ...) has been replaced by the new display control MdispControl(..., M_NO_TEARING, ...). 7.3 Control/Inquire constant name changes - The following buffer control/inquire constant name has changed: M_WINDOW_DIB_HEADER is now known as M_BITMAPINFO. - The following display control/inquire constant names have changed: M_KEY_COLOR is now known as M_TRANSPARENT_COLOR M_WINDOW_OVR_WRITE is now known as M_OVERLAY M_WINDOW_OVR_BUF_ID is now known as M_OVERLAY_ID M_WINDOW_OVR_SHOW is now known as M_OVERLAY_SHOW M_WINDOW_OVR_LUT is now known as M_OVERLAY_LUT M_WINDOW_DDRAW_SURFACE is now known as M_DDRAW_SURFACE M_VGA_PIXEL_FORMAT is now known as M_PIXEL_FORMAT - The following buffer control/inquire constant names have changed: M_WINDOW_DC_ALLOC is now known as M_DC_ALLOC M_WINDOW_DC_FREE is now known as M_DC_FREE M_WINDOW_DC is now known as M_DC_HANDLE 7.4 Obsolete Control/Inquire types - The following MsysControl/Inquire types are no longer supported: M_DISPLAY_DOUBLE_BUFFERING M_LIVE_GRAB_MOVE_UPDATE M_LIVE_GRAB M_PSEUDO_LIVE_GRAB M_STOP_LIVE_GRAB_WHEN_DISABLED M_STOP_LIVE_GRAB_WHEN_INACTIVE M_STOP_LIVE_GRAB_WHEN_MENU M_PSEUDO_LIVE_GRAB_WHEN_OVERLAPPED M_LAST_GRAB_IN_TRUE_BUFFER (moved to a MdigControl/Inquire) M_LIVE_GRAB_END_TRIGGER (moved to a MdigControl/Inquire) - The following MdispControl/Inquire types are no longer supported: M_WINDOW_OVR_DISP_ID M_WINDOW_DIB_HEADER M_KEY_CONDITION M_KEY_MODE M_DISPLAY_MODE M_WINDOW_OVR_DESTRUCTIVE M_WINDOW_OVR_FLICKER M_DESKTOP_CHANGE M_FRAME_START_HANDLER_PTR M_FRAME_START_HANDLER_USER_PTR M_WINDOW_CLIP_LIST M_WINDOW_CLIP_LIST_SIZE - The MsysControl/Inquire(..., M_LIVE_GRAB_NO_TEARING, ...) is no longer supported. Instead, use the new display control MdispControl(..., M_NO_TEARING, ...) that enables or disables tearing on a specific display. - The MdispInquire(..., M_DISPLAY_MODE, ...) has been removed from the documentation. Instead, use the new display inquire MdispInquire(..., M_DISPLAY_TYPE, ...) that returns the new display type. - The MdispControl(..., M_WINDOW_BUF_WRITE, ...) has been removed from the documentation. This control is still available in MIL 8.0 for backward compatibility, but should no longer be used. In MIL 8.0, you don't have to enable or disable direct access to the copy of the buffer stored in the frame buffer. If you inquire (M_WINDOW_BUF_ID) the buffer Id stored in the frame buffer and the Id is not M_NULL, then you can use the buffer Id. 7.5 Others modifications - Three new attributes have been added for buffer allocation. The M_VIDEO_MEMORY and M_HOST_MEMORY attributes specify the location of the buffer, and the M_GDI attribute forces the buffer to be compatible with GDI. - The Overlay buffer behavior has changed. In MIL 8.0 when a new image is selected to the display and this image has a different format or size from the image currently selected to that display, the current overlay buffer is freed, and another overlay buffer is created with a different identifier (MIL_ID). Therefore, you need to inquire the new overlay identifier because the identifier of the old overlay buffer is now obsolete. To inquire the identifier of this newly created overlay buffer, use MdispInquire() with the M_OVERLAY_ID inquire type. - The M_AUTO_SCALE view mode is now available in MIL-Lite. - Allocation of a VGA system (M_SYSTEM_VGA) is no longer supported. Use a Host system instead. 8. Directory structure - The structure of the directories installed of the hard disk has changed. The import libraries are located under "installation directory"\mil\lib, headers are located in \mil\include and DLLs are copied to \mil\dll. The PATH environment variable is updated to include this directory in the path to allow DLLs to be accessible to programs. 9. MilConfig and the MIL Control Center - MilConfig has been improved and now shows the following tabs: - Information : shows details of what has been installed: version number, path, boards, etc. - Licensing : shows the type of license available, the list of all dongles detected (including dongles of older MIL versions) with a status. A status other than "OK" indicates a faulty dongle. The "Last licensing error reported" shows information on the last licensing error, including the list of modules used, modules available, and those used without a valid license. It also shows the name of the function that triggered the error, as well as the error time/date. This info is also included in the sysinfo.txt (see Troubleshooting tab) file. - Non-paged memory : Non-paged memory shows the amount of physical RAM in the PC and the part reserved for MIL non-paged pool. You can also change the size of the non-paged pool. If you change the amount of physical RAM in your PC you must update this tab. - Troubleshooting : Troubleshooting allows the creation of a dump file (text or html format) containing information on your system to help you or a Matrox representative to resolve various potential problems. The available checkboxes can be used to select the required information. Some dump files are interactive and will display a dialog asking you to reproduce your exact problem while MilConfig monitors the activity. - Video Hardware Acceleration : Video Hardware acceleration provides a simple slider to progressively disable various video hardware accelerations provided by your video card. Some drivers will wrongly report that they can handle certain operations and then silently fail or behave in an unexpected way when called. To work-around these video hardware or driver problems, slide the cursor progressively towards the left trying to reproduce your problem at each step. - Libraries : Lists all the DLLs that are actually loaded and used by your programs with version number and status. If a DLL was not loaded from the normal installation folder or could not be loaded at all because some dependencies could not be resolved, it will be listed in red and this situation should be fixed as it will probably cause problems when using MIL. - Default Values : Allows you to change default settings for systems, displays, digitizers and images. The MIL examples (and other programs using default values in allocations) will use these settings at run-time. - Board-specific pages for some boards (Helios, Odyssey, Morphis, etc.) will also be visible if a board of this type has been installed. They contain board-specific settings and links to external programs. Please note that some tabs will require the user to have administrative rights to make changes. The MIL Control Center becomes the main entry point to MIL services and its icon is installed directly on the desktop. It contains links to different tools (depending on the options selected at installation) like MilConfig, the Example Launcher, the processing utilities, the MIL help, demos, etc. -------------------------------------------------------------------------------- Section 2: Differences between MIL 7.5 and 7.1 Table of Contents for Section 2 1. Support for new Matrox frame grabbers. 2. Operating system information. 3. Board-specific details. 4. New processing functionality. 1. Support for new Matrox frame grabbers. - Support for Matrox CronosPlus has been added. - Support for Matrox Cronos has been removed. - The Meteor-II/1394 driver now supports IIDC Version 1.30 (including M_MONO16 format). 2. Operating system information. - Matrox CronosPlus is supported under the following operating systems: Windows 2000 and Windows XP. 3. Board-specific details. - Please refer to the MIL/MIL-Lite Board-Specific Notes manual for information on Matrox CronosPlus. - Please refer to MilCronosPlus.txt and MilOrion.txt for additional information on Matrox CronosPlus and Matrox Orion, respectively. - Please refer to milgen.txt for additional information on Matrox Genesis. - The JPEG hardware module for the Matrox Meteor-II is no longer supported. It needs to be removed in order to use the Matrox Meteor-II driver. 4. New processing functionality - Geometric Model Finder + New integrated support for predefined models in the geometric context. (M_CIRCLE, M_ELLIPSE, M_RING, M_SQUARE, M_RECTANGLE, M_CROSS) + New integrated support for CAD models loaded from a DXF file. + Improvements to Geometric Model Finder module. Improvements allow for faster matching in complex targets (targets with a lot of edges) when few rotation and/or scale variations are present. + Target edges of a model occurrence as well as edges of the entire target image can now be obtained as a result or drawn. This is an option that must be enabled using MmodControl() with M_SAVE_TARGET_EDGES. + New option to cache the geometric representation of a target image in the result buffer of the model finder. When the result buffer is used again with the same target image, the geometric representation kept in the cache is used to speed up the process. This option must be enabled using MmodControl() with M_TARGET_CACHING. + Model definition from an edge result buffer of the new Edge Finder module. + Match directly in an edge result of the new Edge Finder module. - Geometric Model Finder (GUI) + Support for multiple calibration. + Support for subpixel annotations. + Support all the new features of model finder. - New Edge Finder Module + Allow edge (contour or crest) detection and analysis with subpixel accuracy. + Advanced post-selection functionality based on edge features (for example, length and elongation) and/or edge interrelationships (for example, edge inside another). - Code + Added support new types of barcodes (PostNet, Planet, UPC-A, UPC-E). + Added error correction level for Datamatrix codes. + Support for obsolete Datamatrix codes. + Support for reverse 1D barcode scanning. + New Graphical User Interface (GUI). - OCR + Added improved localization in constrained mode. + Added flexibility in classification to support small variations in non-uniform spacing. + Added support for strings at angles (in this version the angle must be between -90 and +90 degrees). + Added support for Multiple line mode. + Added flexibility in reading (Binary mode segmentation for strings with unknown spacing, unknown string length, etc.) + Added enhancement modes. + Support of single character reading. + New OCR GUI. + MocrControl() M_SKIP_CONTRAST_ENHANCE is obsolete. - NGC Pattern Matching + MpatSetAngle() is no longer supported on Matrox Genesis. + M_FIND_BEST_MODELS search mode in MpatFindMultipleModels() is no longer supported on Matrox Genesis. - MbufBayer() + The function can now perform gamma correction as a post-processing step. + Added direct support for buffers with a size bit different than 8. + Optimization: source format M_MONO8, destination format M_MONO8. This conversion can now be done in MMX. + Optimization: source format M_MONO8, destination format M_YUV16+ M_PACKED. This conversion can now be done in MMX. + Optimization: source format M_MONO16, destination format M_RGB48. This conversion can now be done in MMX. -------------------------------------------------------------------------------- Section 3: Differences between MIL 7.1 and 7.0 Table of Contents for Section 3 1. Support for new Matrox frame grabbers. 2. Operating system information. 3. Compiler information. 4. Board-specific details. 1. Support for new Matrox frame grabbers. - Support for Matrox Cronos has been added. - Support for Matrox Orion /Dual for 4Sight-II has been added. Now, MIL fully supports all three Matrox Orion grab modules for 4Sight-II (Standard, RGB, and Dual). 2. Operating system information. - All Matrox Imaging boards are now supported under Windows XP. - Matrox Cronos is supported under the following operating systems: Windows Me, Windows 2000, and Windows XP. 3. Compiler information. - MIL now supports the Microsoft Visual .NET C/C++ compiler. 4. Board-specific details. - Please refer to the MIL/MIL-Lite Board-Specific Notes manual for information on Matrox Cronos. - Please refer to milcronos.txt and milorion.txt for additional information on Matrox Cronos and Matrox Orion, respectively.