Wednesday, September 17, 2008

What skills does the machine vision world need?

Let’s put it another way: you want to get in to machine vision – what do you need to know?

I suggest the most important skill is an understanding of how a computer processes or analyzes an image. Once you grasp the basics of that you’ll see how to configure lighting and optics so as to highlight the features or characteristics you want to see while downplaying the ‘noise’.

This means you need to know what thresholding is, and roughly how it works. The same goes for edge detection and blob analysis. After that comes pattern-matching and use of filters (which in turn implies a grasp of convolution). But don’t go thinking you need to understand the underlying math; I think you can know what’s going on under the hood without being able to design an engine.

After image processing comes an appreciation of the physics of light and optics. You need to know how a lens works in order to select the right one for your application, and in the same vein, it helps to understand how the wavelength of light can be harnessed to influence and simplify your imaging.

Next in our approximately priority order listing, comes integration skills. If you’re going to deploy a vision system rather than just process images at your desk, you got to be able to interface with a host of sensors, actuators and controllers. You’re going to need to trigger your camera and you’ll want an action to result from the image analysis. This means understand prox sensors, I/O and breakout boards, relays, and how to talk to plcs. A good grounding in basic electrical technology is probably essential (did you spot the deliberate pun?)

Have you noticed what I’ve left off this list? Correct, there’s no mention of software programming skills. And that’s because today’s ‘smart’ cameras don’t need a computer programmer. In other words, you can implement machine vision without writing a line of code.

But, if you need to use a PC-based vision system, (perhaps you’re working with a linescan camera, or just need some particularly sophisticated, or fast, image processing,) then you need to be able to code. In such a case I think you have three options: Visual Basic (VB), C++, or LabVIEW. In my experience LabVIEW has the shortest learning curve, although C++ seems to be the tool of choice for the high-end, hardcore vision system developer.

So there you have it, the machine vision professional is a jack-of-all-trades and master of none. And that’s the way I like it!

No comments: