are abstracted from the task of low-level code
development, allowing them to build machine
vision applications more easily.
To further simplify this task, many software
packages feature graphical interfaces that
allow high-level image processing features to
be combined within an integrated development environment (IDE). Matrox’s Design
Assistant, for example, is an IDE where vision
applications are created by constructing a flowchart instead of writing traditional program
code. In addition to building a flowchart, the
IDE enables users to directly design a graphical operator interface for the application. Similarly, Vision Builder AI from NI allows developers to configure, benchmark, and deploy
vision systems using functions such as pattern
matching, barcode reading and image classification within an interactive menu-driven
development environment (Figure 1).
In many cases, vendors will use their software
to provide end-users with software developed
to address specific tasks such as optical charac-
ter recognition (OCR). To read and verify bar-
code labels on large panels consisting of mul-
tiple PCBs, for example, Microscan (Renton,
WA, USA; www.microscan.com), has used its
Visionscape software to ensure that each of the
individual circuit boards on the panels can be
tracked though the entire production process
(see “Modular vision system eases printed cir-
Open-source code provides alternative options
Many developers choose high-level commercially-available software
packages with which to develop machine vision systems because of
their ease of use and the technical support available. Other more ambitious developers may wish to investigate the use of open-source code
in their projects. Although little technical support may be offered, no
licensing or royalty fees are required.
Such open-source software range from C/C++ and Java libraries,
frameworks, toolkits and end-user software packages many of which
can be found on the website of RoboRealm (Aurora, CO, USA: www.
roborealm.com) at http://bit.ly/VSD-1704-7. Although some of the links
are outdated, the website does provide a review of many open source
machine vision libraries that are available.
Two of the most popular methods of developing applications using
open-source code involve leveraging software such as AForge.NET
( www.aforgenet.com), a C# framework designed for developers of
computer vision and artificial intelligence and the Open Source Computer Vision Library (Open CV; http://opencv.org), an open source computer vision and machine learning software library that offers C/C++,
Python and Java interfaces and supports Windows, Linux, Mac OS, iOS
and Android operating systems.
For those wishing to use OpenCV from C#, Elad Ben-Israel has created
a small OpenCV wrapper for the .NET Framework. The code consists of
a DLL written in Managed C++ that wraps the OpenCV library in .NET
classes, so that they are available from C#, VB.NE T or Managed C++. The
wrapper can be downloaded at: http://bit.ly/VSD-1704-8. Other .NET
wrappers include Emgu CV ( www.emgu.com), a cross platform .NET
wrapper to OpenCV that allows OpenCV functions to be called from
.NET compatible languages such as C#, VB, VC++ and IronPython. The
wrapper can be compiled by Visual Studio, Xamarin Studio and Unity and
runs under Windows, Linux, Mac OS X and Android operating systems.
To build computer vision applications using OpenCV, developers can
use SimpleCV ( http://simplecv.org), an open-source framework that
allows access to several computer vision libraries such as OpenCV with-
out the need to understand bit depth, file format, color space or buffer
management protocols. Since integrating Intel’s Integrated Performance
Primitives (IPPs) is automatically performed by OpenCV, over 3,000 pro-
prietary optimized image processing and computer vision functions are
automatically accelerated. These IPPs can be freely downloaded from
Intel’s developer site at: http://bit.ly/VSD-1704-9.
To date, a number of companies support development with the
OpenCV library. These include Willow Garage (Palo Alto, CA, USA;
www.willowgarage.com), Kithara (Berlin, Germany; www.kithara.de),
National Instruments (Austin, TX, USA; www.ni.com) and ControlVision
(Auckland, New Zealand; www.controlvision.co.nz).
Figure 2: To allow developers to access the underlying power of FPGAs, VisualApplets from Silicon Software is a software programming environment that allows developers to perform FPGA
programming using data flow models.