Libraries for machine vision

Every company that decides to develop its own software for machine vision first has to answer the question: "How do we make this happen?".

First of all: It does not make sense (except in very few exceptions), to reinvent the wheel and to develop all machine vision functions yourself! There are numerous machine vision libraries out there, that already implement the most common vision functions - like edge finding, filter operations, pattern finding etc. To implement these operations yourself, implies elementary knowledge about the theory behind those techniques and pays off only in extremely rare cases.

Normally the most efficient solution would be to use a ready to use machine vision library and to build your own system arround this library. To alleviate the decision, which library to use, we did this overview.

If you have any questions regarding this library list or any other topics about the industrial vision, you can contact us anytime.

Free machine vision libraries

One of the most commonly used free vision libraries is OpenCV. The OpenCV project was originally launched by Intel. Right from the start the aim was to receive the best possible processing speed.

By now this library is published under the BSD Licene. That means you can use and redistribute it freely (also in commercial projects) without any restrictions. Only the copyright annotation must remain in the files.

OpenCV is completely programmed in C/C++ and can be used most efficently with this "language". Even though many ports (or wrapper) for this library exist (i.e. OpenCVDotNet for .NET), you have to keep in mind that you have to face a certain amount of overhead in other languages - which slows down the processing speed!

Two more free vision libraries are the Insight Toolkit ITK and the Python Imaging Library PIL.

 

top ^

Non-free libraries

There are numerous comercial libraries out there. But if you look closely, only a few turn out to be worth the investment and usable. First of all you should be aware, that there are many different concepts in programming those libraries. This implies that you know, how you want to use the library. Do you want to completely integrate the vision part into your own software or isn't that necessary. Could you accept a solution, where the machine vision takes place in a separate software component or a different computer?

Answering that question is important, since there are many libraries out there, that can not "produce" native code or can't be programmed in standard programming languages. These libraries only use scriptcode, which is very proprietary. This fact on the other hand implies that one always needs a sort of "interpreter" that understands the script code and knows what to do with it. Libraries working with those interpreters mostly also have ready to use components for building a user interface or the like. The advantage of not having to learn another programming language means on the other side that you are limited to the functionality and the (slower) speed, the software provides.

These scripting solutions with their many problems and their few advantatges only make sense for none-programmers or very simple and small test scenarios.

A small note on none-programmers: All available machine vision libraries imply a certain amount of basic knowledge of machine vision. One should have heared of edge detection or pattern matching before starting to "program" a vision application. If this is not the case, you should let do professionals like k²bytes their job.

 

top ^

Library overview

 

Bibliothek

Halcon
Matrox
Imaging
Library
Common
Vision
Blox
Labview
Vision
Development
Module
Matlab
Image
Processing
Toolbox
Orchid

Provider

MVTec Matrox Stemmer
Imaging
National
Instruments
The
Mathworks
Leutron

Scripting

yes no yes yes yes n.a.

C/C++ programmable

yes yes yes yes n.a. n.a.

IDE (Development
Environment)

yes no1 yes yes yes n.a.

Support for different
Cameras and Frame-
grabber

yes yes yes yes no

Remarks

1there are various tools for pre-checks but no complete IDE
2Python Imaging Library (PIL) is programmed via python

 

Bibliothek

Neurocheck mvImpact OpenCV Python PIL Insight Toolkit ITK RoboRealm
RoboRealm

Provider

Neurocheck Matrix
Vision
OpenCV  Secret Lab AB ITK RoboRealm

Scripting

yes no no yes2 yes yes

C/C++ programmable

no yes yes no yes yes

IDE (Development
Environment)

yes no no no no yes

Support for different
Cameras and Frame-
grabber

yes yes yes yes yes yes

Remarks

free free
and
commercial
license
free, main
focus on
medical
vision
30 day
trial license

top ^

Conclusion

Due to the amount of available vision libraries the decision is not easy and depends on several factors.

You should be aware of what should be tested and how it should be done. Based on these considerations several candidates may not be adequate.

The next consideration should be if you can pass on the standard programming (like C/C++) or not. This qualifies or disqualifies libraries that only can be programmed with scripting or standard programming languages.

The last aspect to affect the decision should be the costs for the development and runtime license. Since most of the libraries lie within a certain range of license costs for the development environment and for the runtime licenses (with the same functionality) the price difference is mostly only marginal.

The only big difference whould be the way these libraries are being programmed and the performance of their algorithms and therefore their processing speed.

If performance is not the key feature of your machine vision application, you can easily get yourself an only script programmable solution. Since in most cases the performance is a very important point, one should carefully think about the way you want to implement the solution and invest enough time in the preliminary enquiry.

top ^