In my job as a software developer for HMM Deutschland, i received a requirement to preprocess and enhance binary images of documents taken in the field with a Tablet or Smartphone. The people making these pictures are not professional photographers and do not have the knowledge nor the time to model the lighting to produce a perfect illuminated and sharp picture of the document. The result is loss of detail and strong luminance changes within one image, making it hard to process further down the pipeline.
Nature already solved the problem at hand , and as we may take it for granted, our vision is a expert in dealing with such circumstances. Jeanny Herault's research (1) has produced a model for human retina
spatio-temporal image processing, performing texture analysis with enhanced signal to
noise ratio and enhanced details robust against input images luminance ranges. Briefly, here are the main human retina
model properties:
- spectral whitening (mid-frequency details enhancement)
- high frequency spatio-temporal noise reduction (temporal noise and high frequency spatial noise are minimized)
- low frequency luminance reduction (luminance range compression) : high luminance regions do not hide details in darker regions anymore
- local logarithmic luminance compression allows details to be enhanced even in low light conditions
OpenCV has a implementation of this model in its contributed section under the bioinspired module(2). OpenCV documentation can be found under 3.
Since i favor OpenCV on caffeine i added the bioinspired module to the JavaCV project. At this time it is parked on pull request #282 in the javacpp-preset project, meaning for now you have to build it yourself. Samuel Audet did a great job with JavaCPP and describes how to do this on the Bytedeco github pages(4).
A sample project can be found on my github(5) which produced the following output:
Update: available as of version 1.2.2
Acknowledgments
HMM Deutschland GmbH for investing work-time into the project
- Herault Jeanny. Vision: Images, Signals and Neural Networks-Models of Neural Processing in Visual Perception. World Scientific, 2010.
- https://github.com/opencv/opencv_contrib
- http://docs.opencv.org/3.1.0/d3/d86/tutorial_bioinspired_retina_model.html
- https://github.com/bytedeco
- https://github.com/Maurice-Betzel/net.betzel.bytedeco.javacv.bioinspired
No comments:
Post a Comment