Microsoft moves into image processing

Just as imaging-software developers are porting their C-based development libraries to run as ActiveX controls (see p. 58), Microsoft Corp. (Redmond, WA) has released its own software-development toolkit--Vision SDK.

May 1st, 1998

Microsoft moves into image processing

Just as imaging-software developers are porting their C-based development libraries to run as ActiveX controls (see p. 58), Microsoft Corp. (Redmond, WA) has released its own software-development toolkit--Vision SDK.

Available for download from the World Wide Web at www.research. microsoft.com/research/vision/, Vision SDK beta-version 1.0 is a low-level library for writing programs to perform image manipulation and analysis. Targeted at research and application developments, Vision SDK is a C++ library of object definitions, related software, and documentation for use with Microsoft Visual C++, Version 5.

According to Stephen A. Shafer, senior researcher in the Vision Technology Group at Microsoft, Vision SDK provides a basic image object that supports a diversity of pixel formats and a digitizer-independent method of acquiring images. "Because of this support," says Shafer, "algorithms can be developed that can be reused on a variety of image formats."

At present, Vision SDK does not include native code for reading and writing image files. Developers must also download the ImageMagick package developed by John Cristy, senior computer research scientist at the advanced computer technology division of the DuPont Central Research & Development Experimental Station (Wilmington, DE). His software is available on the Web at www.wizards.dupont.com/cristy/ImageMagick.html.

After installing Vision SDK, developers must create a directory for Image-Magick and then install and build the application. After these steps, Vision SDK can be installed and built. "Image-Magick is commercial-quality software available in source or as a DLL that does not require a license fee," says Cristy, "and with a few simple API calls, developers can read, write, or manipulate about 60 different image formats. With the code already available, why would Microsoft want to duplicate the effort?" he asks.

Shafer agrees, "We use ImageMagick because it supports a wider variety of image file formats than any other code base we had available to us, including code used within Microsoft products. We expect this situation will change in the future, which is why we hope to have an alternative mechanism for file I/O," he says.

To digitize images, Microsoft provides support for its Video For Windows (VFW) API and a driver for the Meteor or Meteor II video capture card from Matrox (Dorval, Quebec, Canada). "This driver was developed because we historically used the Meteor board at a time when VFW was too slow," says Shafer. "With more modern processors and boards, we find VFW satisfactory even for real-time image processing. We may provide additional drivers, but Vision SDK allows manufacturers to develop their own," he adds.

Two flaws

However, two flaws currently exist in the beta version. First, Vision SDK assumes that images are resident in RAM and offers no general support for very large image files that cannot be brought into RAM in their entirety. "It should be possible to use memory-mapped BMP and RAW files up to 1 Gbyte on Windows 95," declares Shafer, "but the current version has no helper functions to do this."

As for the second flaw, Vision SDK provides no library of image-processing operators. "We have written some," says Shafer, "that include image resampling, registration of multiple images, building panoramas from a set of images, image stretching, and rotation and projection. And we are adding more that may show up in future versions of the package. We may even commission some outside groups with special expertise to develop packages such as image-morphology operators and pyramid operations," he adds.

To date, there is no plan for the integration of Vision SDK into Windows, but Shafer hopes that some version of Vision SDK may be integrated in the future. For now, Vision SDK is best thought of as a low-level substrate for developing computer-vision and image-processing programs and systems.

More in Boards & Software