Matrox ActiveMIL 8.0 - Shipping Notes

May 24, 2005
Copyright © 2005 by Matrox Electronic Systems Ltd. All rights reserved.


The Matrox Imaging ActiveX Controls (ActiveMIL) are a collection of ActiveX controls encapsulating an extensive set of optimized image processing operations (point-to-point, statistics, filtering, morphology and geometric transforms), blob analysis, code reading and writing, edge analysis, pattern matching, measurement, calibration, and character recognition. 


Contents

  1. Getting started
  2. Supported environments
  3. What's new in ActiveMIL 8.0?
  4. Upgrading an existing project to ActiveMIL 8.0
  5. Changes from ActiveMIL 7.5 to ActiveMIL 8.0
  6. Changes from ActiveMIL 7.1 to ActiveMIL 7.5
  7. On-line documentation
  8. Deploying ActiveMIL applications (Redistribution)
  9. Obtaining additional help
  10. Environment specific notes
  11. Outstanding issues

Getting started

[Contents]


Supported environments

The following tables outline the combinations of operating systems, development environments, and Matrox Imaging hardware supported by ActiveMIL.

Operating System / Development Environments

  Windows XP Windows 2000
Microsoft Visual Studio .NET Yes Yes

*Other development environments, and other operating systems are not officially supported by Matrox.

Operating System / Matrox Imaging Hardware

  Windows XP Windows 2000
Matrox Meteor-II/Standard Yes Yes
Matrox Meteor-II/Multi-Channel Yes Yes
Matrox Meteor-II/1394 Yes Yes
Matrox Meteor-II/Digital Yes Yes
Matrox Meteor-II/Camera Link Yes Yes
Matrox Genesis Yes Yes
Matrox Genesis-LC Yes Yes
Matrox Orion Yes Yes
Matrox Corona-II Yes Yes
Matrox CronosPlus Yes Yes
Matrox Helios New Yes Yes
Matrox Morphis New Yes Yes
Matrox Solios New Yes Yes
Matrox Odyssey* New Yes Yes
Matrox Iris New No No

* Multiple processing is not supported on Matrox Odyssey with this release.
Note that Matrox Cronos, Matrox Pulsar-LC, Matrox Pulsar, Matrox Meteor, Matrox Corona-LC and Matrox Corona are no longer supported.

[Contents]


What's new in ActiveMIL 8.0?

General Section


Control Specific Section

The new properties available for the Application control are:

SaveRunInformationEnabled returns or sets whether to save run information.

The Calibration control requires an OwnerSystem on which to allocate its resources. Use the OwnerSystem or the OwnerSystemName property to modify you current applications, otherwise they will not run.

The new methods and properties available for the Display control are:

The new threading control allows you to allocate ActiveMIL thread contexts and synchronization events. 
Use the threading control to allocate a selectable thread on a specified multi-threaded ActiveMIL system. 
This allows you to synchronize the execution of ActiveMIL calls on an on-board processor.

[Contents]


Upgrading an existing project to ActiveMIL 8.0

This section contains important information for users upgrading to ActiveMIL 8.0.

[Contents]


Changes from ActiveMIL 7.5 to ActiveMIL 8.0

Refer to the 'Using ActiveMIL with Microsoft Visual C++ (Native COM)' chapter in the ActiveMIL User Guide for an explanation on how to convert an existing project using wrapper classes to use Native COM.

[Contents]


Changes from ActiveMIL 7.1 to ActiveMIL 7.5


[Contents]


On-line documentation

The complete on-line documentation provided with ActiveMIL can be found under Start\All Programs\Matrox Imaging\ActiveMIL\Documentation\ActiveMIL Help. The documentation contains five majors sections:


[Contents]


Deploying ActiveMIL applications (Redistribution)

Refer to the 'Distribution and licensing' chapter in the ActiveMIL User Guide.

Note for Visual Basic Users:

We do not provide dependency files (DEP files) for use with Visual Basic's setup wizard because this tool does not allow for the installation of Matrox frame grabber drivers.

[Contents]


Obtaining additional help

The following sources should be checked for additional information when it is needed:

[Contents]


Environment specific notes

This section contains information specific to a given development environment. Although ActiveMIL strives to be environment-independent, each environment is implemented differently and this sometimes causes problems for ActiveMIL.

Note: You must have at least Visual Studio .NET 2003 with Microsoft .NET Framework 1.1 Service Pack 1 (SP1).

Visual C++ .NET

The procedure for starting a new ActiveMIL C++ project under Visual Studio .NET is similar to the procedure for Visual C++ 6.0.  For more information, please refer to the 'Using the MFC Application template to create an application (Visual C++)' section in the 'Introduction' chapter and to the 'Using the ActiveMIL MFC Application template to create an application (Visual C++)' chapter in the ActiveMIL User.

Known bugs

  • Property pages are not accessible through the context menu of MFC and Win32 applications. You must use the Property Pages button on the Properties window. This seems to be a Visual Studio .NET 2003 issue.

    Visual Basic .NET

    Using arrays more efficiently

    The marshalling of arrays between the Microsoft .NET managed environment and the ActiveMIL controls can be time consuming. This is because arrays are not passed directly to the ActiveMIL controls. Instead, arrays are copied to unmanaged memory, a call to ActiveMIL is made, and then the arrays are copied back to managed memory. To avoid all this copying, ActiveMIL provides the MArrayRef class. Arrays wrapped in an object of this type are passed directly. The following table shows approximate timings*:

      Normal MArrayRef Ratio
    one band Image.Get 18 ms 1 ms 18 times better
    Image.Put 13 ms 1 ms 13 times better
    all bands Image.Get 168 ms 2 ms 84 times better
    Image.Put 94 ms 2 ms 47 times better
    * Timings were obtained on a computer with Pentium IV 3GHz and 1GB of RAM.

    This class is included in the Matrox.ActiveMIL.Utility.dll assembly, found in the "Matrox Imaging\ActiveMil\Containers\VStudio.NET" directory of the Matrox Imaging installation CD.

    Example of usage:

    // Visual Basic .NET example
    
    ' Normal array declaration
    Dim Array(AxMImage1.SizeX, AxMImage1.SizeY) As Byte
    
    ' The array is wrapped in a MArrayRef class before passing. This pins
    ' the array memory so that the garbage collector does not move it.
    Dim ArrayRef As MArrayRef = New Matrox.ActiveMIL.Utility.MArrayRef(Array)
    
    ' When calling the ActiveMIL method, the MArrayRef.GetSafeArray method must be used
    AxMImage1.Get(ArrayRef.GetSafeArray(), ImFormatConstants.imFormatDefault, _
                   ImBandConstants.imAllBands, 0, 0, AxMImage1.SizeX, AxMImage1.SizeY)
        
    ' After the call is made, you can call the Dispose function to unpin the array memory.
    ' If Dispose is not called, the array will get unpinned when the MArrayRef object 
    ' gets collected by the garbage collector.
    ArrayRef.Dispose()
    

    Known bugs

    [Contents]


    Outstanding issues

    This section describes any limitations, or problems that exist in the current ActiveMIL release. The tags [VB.NET] and [VC] implly that the note only applies to Visual Basic or Visual C++, respectively. If the tag is followed by a number, the note is specific to that version of the development environment. If there is no tag, the note applies to all development environments.

    ActiveMIL Controls issues

    Documentation errata

    Other issues

    [Contents]