The standard Bayer mosaic conversion algorithms used in machine vision typically employ fast bi-linear interpolation method in order to reconstruct a full 24-bit per pixel colour image. Numerous other, more sophisticated algorithms exist in the public domain, but very few are implemented in a sensible machine vision library. Since most industrial vision tasks are not aimed at recovering very high-fidelity images for human consumption, the Bayer conversion quality does not seem to have been a priority. Its strange really, given that it is easy to spend $10k on a color machine vision camera, capture device and lens, only to put the captured images through the basic Bayer de-mosaic algorithm at the last moment.
In order to try and improve the situation, we've implemented various Bayer algorithms, including our own adaptive version of the 5x5 Malvar-He-Cutler interpolation algorithm. Our implementation of the Malvar algorithm (we call Ultra Mode) is noticeably sharper and has less color fringing than the standard method.
The 2-frame gif below shows the difference on a long-range image taken with a well-known machine vision camera. OK - granted its not a drastic difference and the gif encoding doesn't help, but sometimes this fidelity change can be important. Given that our implementation runs on any CUDA enabled GPU faster than a basic CPU bi-linear algorithm, there isn't really a down-side to using the better method.
Vision Experts
Job for a rule-loving engineer?
9 years ago