You are here:Home1/insight2/Machine Vision Software: What’s “Under the Hood”
Machine Vision Software: What’s “Under the Hood”
Configurable or programmable software?
In terms of practical implementation, one construct for machine vision software can be described as an application that “configures” the system components and how they execute machine vision functions and tasks. These apps tend to have graphical user interfaces (GUI) devoted to “ease of use” with intuitive and graphically manipulated application configuration steps.
Smart cameras and systems using dedicated and/or proprietary physical configurations almost always feature software that has this fixed (though often quite thorough), configurable collection of tools that can be selected to operate in a constrained but usually user-definable sequence to execute a complete machine vision application. In the case of smart cameras, the configuration software usually runs on a computer external to the vision system. Other systems with proprietary computing platforms might have the entire graphical user interface built into the system, again with the software providing configuration of the application. Furthermore, “configurable” software applications are readily available for open system architectures running standard operating systems like Windows or Linux. Still, the function of the application is to provide a software platform in which the machine vision engineer can manipulate hardware and select/configure tools to perform an application.
At the other end of the implementation spectrum is software designed for open architecture machine vision systems that is fully programmable. Typically targeting users with suitable levels of experience in computer programming in languages like C, C++, C#, .NET and others, these software products might be called “software development kits” (SDK) or “libraries,” and contain an extensive selection of low- and medium-level operators (“algorithms”) that when properly combined perform tasks ranging from very basic to extremely complex. In many cases also, libraries designed specifically for machine vision application development feature an integrated development environment (IDE) or even a configurable software application built on the underlying tools found in the library. These product extensions can make the development process much easier in applications that use these libraries without sacrificing the full functionality of the individual tool or algorithm, and in some cases offering a path to migrate the configured application code or script to a lower-level programming language automatically.
The role of software in machine vision systems
Typical machine vision applications in an automation setting range from inspection or defect detection to complex 3D metrology or robot guidance. In most implementations though, the fundamental tasks that must be supported in software are generally similar. To better describe the role of software in machine vision systems, let’s look at these tasks to learn what machine vision software does in each case and how it supports the system components.
Imaging and acquisition
The imaging device in a machine vision application is tied so intuitively to the machine vision task that the term “camera” is sometimes used to refer to an entire machine vision system (as in, “what kind of camera are you using for that inspection?”). Fundamentally however, all machine vision systems have at least one device – camera/sensor/detector – that is a discrete hardware component for image formation and manipulation. Virtually all these devices use dedicated electronics and firmware to manage the low-level sensing and image transfer, but for our discussion the important software functions are to access and control the parameters that configure how the device forms the image and provide methods to transfer and subsequently acquire the image on a computing platform.
In a smart camera or self-contained architecture, the software to manipulate imaging parameters most often is a part of the overall software package. In these devices, the transfer of the image to the processor (acquisition) is a function of the firmware minimal configuration necessary.
In open architectures, the camera manufacturer might provide an SDK and/or a standalone application that interfaces with the imaging device for the purpose of sensor/camera control. Since there is more flexibility in the imaging components in this case, manufacturers of cameras and frame grabbers commonly also provide an SDK and/or device driver to support the image transfer/acquisition in the computer. A user-written program or a configurable application provides the interface with the system to perform image acquisition.