The main reason why there are so many topics related/dedicated to lights and cameras on our page is that I believe programming should always be the last resort for solving a problem. Choosing a correct light or camera could save countless hours of coding or even save a project. Coding is fun, but wasting time on low-quality images is often just that – wasting time. This article is written from a computer vision perspective, but it can be applied to a bigger picture.
There is rarely only one way to solve a problem, and often rewriting functions or retraining neural networks is not the solution. The goal of this post is not to diminish the importance of programming on the project, but it is much easier to build a reliable system when all external prerequisites are met. Six essential questions should be answered:
1. Is the correct camera sensor being used?
- Should RGB or monochrome camera be used?
- Is the camera resolution adequate?
- How does the pixel size influence the image quality?
2. Should another lens be considered?
- Are the inspected objects sharp on each working height – “Depth of field”?
- Does the image look warped on the edges – “pincushion or barrel distortion”?
3. Is the lighting appropriate for this application?
- Could particular objects be filtered or emphasized by using another light color?
- Does the light cause overexposure, and could that be used to advantage?
4. Is there interference from the environment, and could it be reduced?
- If possible, natural light should be eliminated.
- Are shadows occurring during some part of the day?
5. Are any filters available?
- Could your problem be solved by using a polarization filter?
- Are inspected objects better visible in another part of the spectrum (e.g., infrared)?
6. Cabling and power supply rarely cause problems, but when they do, it can be painful to detect them.
- Could the bending of the cables cause signal interruption?
- Inadequate power supply.
Only if each of these topics has a satisfactory answer, should we turn to programming. Each of these topics is going to be discussed individually, but this post should give you a general idea of how to build a reliable vision system.
For a more general perspective on this idea check out Jeff Atwood’s blog entry The Best Code is No Code At All