DEVELOP SYSTEMS RAPIDLY WITH software toolkits
Traditionally, systems developers are faced with two choices when working on vision-systems software. They can either write their own image-processing functions and integrate them with manufacturers` low-level hardware subroutine calls or use graphical-user-interface (GUI) driven packages. While proprietary hardware/software combinations produce impressive processing speeds, they also lock developers into specific hardware. The second choice isn`t much better. GUI-based packages, created to run
DEVELOP SYSTEMS RAPIDLY WITH software toolkits
By Shari Worthington
Traditionally, systems developers are faced with two choices when working on vision-systems software. They can either write their own image-processing functions and integrate them with manufacturers` low-level hardware subroutine calls or use graphical-user-interface (GUI) driven packages. While proprietary hardware/software combinations produce impressive processing speeds, they also lock developers into specific hardware. The second choice isn`t much better. GUI-based packages, created to run on general-purpose CPUs, are often too slow to handle many vision systems applications.
Now, with the advent of RISC microprocessors and sophisticated digital signal processors such as the C80 from Texas Instruments (Dallas, TX), a new class of image-processing software is appearing that combines visual programming environments, large imaging libraries, open-ended architectures, and pipelined hardware support. According to Bob Cordes at Optimas (Bothell, WA), manufacturer of the Optimas imaging software package, "The software is the vision system, because in many applications there is no need for expensive vision hardware. This lowers the cost of designing, integrating, and deploying vision systems" (see Fig. 1).
Most imaging-software companies support Visual Basic, Visual C++, and occasionally Delphi, to let developers tailor software for specific imaging applications. Noesis Vision (St. Laurent, Canada), Logical Vision (Burnaby, BC, Canada), Integral Vision (Farmington Hills, MI), and Optimas all use these packages to let programmers work within GUI-based programming environments.
"Visual Basic is a widely accepted application-development environment that allows a standard GUI to be bolted onto a library of frame-grabber hardware routines. And programming in Visual Basic takes one-third to one-half the time of programming in C or C++," says Gary Wagner, vice president of Integral Vision. His company`s software-development environment, VisionBlox, is a set of 30 add-in software controls that allow OEMs and resellers to develop industrial machine-vision applications by dragging graphical icons onto a programming form, then linking them together with Visual Basic code (see Fig. 2 and "Imaging software as reusable components," p. 38).
Because VisionBlox is frame-grabber and vision-processor independent, developers are no longer bound to a single hardware supplier or set of proprietary hardware calls. VisionBlox also uses image-calibration controls for more accurate measurement. These custom controls for Visual Basic and Visual C++ do not require developers to make calls to a dynamic link library (DLL)--an external library containing procedures an imaging application can link to and use at run time.
According to Steven Prehn, product manager at Integral Vision, besides the standard requirement that systems run faster with increased accuracy, there is an increase in the demand for smart systems. "We are seeing a large number of systems integrators who need tools that allow them to develop powerful machine-vision applications very rapidly, without sacrificing speed of operation," he says.
Dynamic link libraries
To develop systems faster, many companies are incorporating DLLs into their software. These allow image-processing routines to be accessed from other application software. Aphelion from Amerinex Applied Imaging (Malden, MA), for example, allows end users and OEMs to add image-processing capabilities to a product or application (see Fig. 3). Running under Windows 95, Windows NT, and UNIX, the Aphelion toolkit contains more than 300 routines available from a GUI; more are available directly from C/C++ via the programmer`s toolkit, and all are available as a DLL.
"Developers have reached the limit with simpler image-processing systems and need to go further," says Peter Eggelston, marketing manager of Amerinex. They need adaptive algorithms that can segment objects of interest without user interaction and compensate for lighting variations, low contrast data, noisy data, and overlapping objects. In Aphelion, more than 40 adaptive segmentation algorithms coupled with a fuzzy-logic inference engine allow algorithms adaptation by selectively grading results based on qualitative measures. Such fuzzy-logic systems allow developers to convert qualitative to quantitative measures.
Aphelion also supports Microsoft`s document interchange-standard object linking and embedding (OLE) architecture. Here, applications are presented as a collection of independently installed components (see "OLE keeps imaging software interoperable, " p. 40). Using Aphelion, imaging software can be linked with OLE-compliant packages such as Excel, Access, and PowerPoint, allowing image databases and documentation packages to be created.
Noesis Vision`s Visilog and Logical Vision`s WiT software also allow creation of DLLs (see Fig. 4). Using either package, user interfaces can be developed with Visual Basic. Under Visilog`s user interface, windows can be developed with Visual Basic and accessed from within Visilog. A small DLL is provided to control Visilog from Visual Basic. The interface between the two environments is simplified with automatic generation of a Visilog interpreted language skeleton file that contains user code.
Conversely, Visilog packages can be included in Visual Basic or Visual C++ applications, eliminating rewriting those functionalities from the beginning. WiT software uses a block-diagram interface, as opposed to a menu-driven or script-based environment. With support for multiprocessing, and networked systems, developers can remain with the same graphical design environment (often even the same files), yet take advantage of whatever hardware is necessary to design their application.
Progress in the scientific imaging and industrial machine-vision markets will depend on standards development. According to Amerinex`s Eggleston, the growth of the vision market lies in the adoption of a flexible and complete standard for an image data-communication language and a compatible hardware specification. This would allow imaging components, such as cameras, image-processing software and hardware, and transmission and output devices, to communicate with each other over a connected network. If such a standard were adopted, fewer resources would be devoted to supporting new hardware and software, and more time would be devoted to creating lowercost applications that employ vision.
Several standardization efforts are underway to meet these demands. Pixel Soft (Los Altos, CA) has developed what is now an ISO set of application programming interfaces (APIs) for UNIX, Windows 95, and Windows NT. The Programmer`s Imaging Kernel System (PIKS), standardized as ISO/IEC 12087, provides a set of software services for image-processing software developers. These function as building blocks for imaging applications. The PIKS includes more than 120 image-processing API elements, including convolution, impulse response arrays, dither arrays, and color-conversion matrices. But there is no provision for more advanced functions such as threshold by maximum contrast, which is a standard part of Amerinex`s Aphelion.
As a working standard environment for developing image-understanding algorithms, Amerinex`s image-understanding-environment project aims to develop a common object-oriented software environment for imaging algorithms and applications (see Vision Systems Design, Oct. 1996, p. 7). Developed under a DARPA contract, the IUE provides a C++ class hierarchy for representing a range of objects, images, image features, and processes. A modular, object-oriented interface serves as the front-end to a library of algorithms.
FIGURE 1. Optimas XCaliper measures tolerances of machined parts. An asynchronous camera triggers XCaliper to capture an image, then XCaliper`s edge tools locate the part and precisely orient the caliper and arc-measurement tools. These tools extract bore size and other physical dimensions in less than 10 ms. XCaliper invokes an I/O trigger to remove failing parts from the manufacturing line. The user interface was created using Visual Basic.
FIGURE 2. VisionBlox can be used to integrate machine vision and motion control for precision alignment tasks. Here, the two image controls labeled Camera 1 and Camera 2 display alternating live images using a VisionBlox calibration control. By knowing where circuit-board fiducials are, the vision system can determine the motion necessary to bring the board into alignment.
FIGURE 3. By fully supporting objects as a processing class, Aphelion allows developers to process image features. Here, print quality is being analyzed by segmenting out ink dots in a microphotograph (shown as yellow outlines over the original image). A ComputeMeasurement operator computes measurements such as shape features and stores this information in a database-management system, shown in the grid window. Object data can be further processed, filtered, viewed as graphs, classified, or linked via OLE to other applications such as Excel. Actions are captured (lower left) and can be executed from any other application.
FIGURE 4. Using WiT software, developers create an imaging graph in WiT Pro and a user interface in Visual Basic to form a complete application. The igraph grabs an image, performs thresholding, and fills holes inside the gear part. A circular path is then calculated centered at the gear centroid with a fixed radius that passes through the gear teeth (get_circ). The getXEdges icon takes the original image, extracts the pixel intensities along the circular path, and counts the edge crossings. The resulting count is compared with a teeth number parameter that controls pass/fail logic.
Imaging software as reusable components
"No one wants to reinvent the wheel when it comes to software. Time is money and reusable software definitely saves time," says Gary Wagner of Integral Vision Farmington Hills, MI. Evidence of this comes from the popularity of Microsoft Visual Basic. Visual Basic`s success is attributed to the Visual Basic Extension (VBX) specification. VBX allows a Visual Basic programmer to plug in another person`s software component without requiring any understanding of the component`s inner workings.
VBX is a Visual-Basic-only tool with several limitations: memory access, platform dependency, and speed. To overcome this, Microsoft has created two new technologies known as Object Linking and Embedding (OLE) and active component extension (OCX). OLE is a specification that allows different software packages to communicate. Active Component Extension (Active X) is the binary reusable object that plugs in to OLE software. The OCX can theoretically be plugged into Visual Basic, Visual C++, databases, spreadsheets, and word processors.
Object-oriented programming languages such as C++ allowed developers to reuse their existing work. Now, Microsoft`s Visual C++ and OLE/Active X technology allow developers to create "off-the-shelf" plug-in software tools. A proven, successful market that drove VBX will have more room to grow with Active X technology.
OLE keeps imaging software interoperable
OLE is Microsoft`s component architecture for Windows. Under OLE, applications are presented as a collection of independently installed components. OLE is a specification for how Windows applications should work with objects, where objects are a combination of some kind of data--text, graphics, video, sound--and the functionality needed to create and use that data. OLE makes it possible for software developers to package their programs` data as objects that end users and corporate developers can access.
OLE facilitates application integration by defining a set of standard interfaces, groupings of semantically related methods through which one application accesses the services of another. The concept of exposing functionality through interfaces makes OLE an open, extensible system. It is open in the sense that anyone can provide an implementation of a defined interface, and anyone can develop an application that uses it. It is extensible because new or extended interfaces can be defined and integrated into existing applications without requiring changes to existing code.
OLE competes with Apple`s OpenDoc standard for the PowerPC environment, which is backed by companies such as Oracle, Digital Equipment Corp., and Adobe.