A while back, respected and widely-followed MV blogger Brian Grey wrote about looking “under the hood” of a vendor’s machine vision software offering. ( Machine Vision 4 Users ) In short, the article comments on a machine vision integrated system and whether the system is built upon algorithms and tools derived from the open source OpenCV library or if the software was completely developed “in-house”.
This is a great topic that pops up all of the time, and I want to share a couple of observations:
OpenCV Machine Vision Software
There may be a time, place, and appropriate use for OpenCV, but in the business of providing integration services involving machine vision software for industrial end-users, I have not yet found it. There’s a lot to like about OpenCV – mainly the price which is “free”, and the breadth of variety of available algorithms. But let’s consider some challenges. There is no commercial support for the product beyond forums and user groups and books, and unlike a commercial library there are no “for-profit” marketplace that drives accountability of functionality and reliability to which any of the algorithms are held. The library also is for C/C++, Python, or Java only in it’s native form.
Don’t start the comment threads yet! I’m being a little picky in order to make a point. Companies that sell commercial machine vision software libraries have a huge standard of performance that they must meet: profitability based upon marketplace acceptance. The commercial vendor also needs to provide at least adequate support or their customer base will fade. I do not state that the OpenCV algorithms are not competently implemented – only that there is no tangible driver (like profits) that forces the issue. The open source peer review process is good, but in the end, as the BSD License agreement states, the software is offered “as is”. If you want to get some further insight into the open source process, take a look at the OpenCV Wiki and in particular read some of the notes from development meetings.
DIY. What’s really under the hood?
The aforementioned systems integrator stated later that the system was built entirely on code and machine vision algorithms developed “in-house”. Is this better than an open-source option? Perhaps, but it depends. Does the vendor truly have the resources available to keep up-to-date and competitive with all of the latest machine vision techniques? Is the in-house programming and R&D staff large enough to maintain a fully validated and supported library like a true software development house?
So, does open source machine vision software and/or in-house algorithm development make sense? In my opinion, as a platform for one-up integration projects in the industrial machine vision application space a resounding “no”. My customers want proven commercial software libraries, and just the other day one industrial customer indicated they were concerned about implementing any system with open-source or “in-house” software development due to the issues of supportability and IP ownership.