Saturday, March 31, 2012

Image processing with cat brains - Gabor Filters

When building panoramas or capturing depth using multiview geometry or structure from motion techniques, temporal decorrelation often makes things harder. One of the confusing elements typically is cloud. Hugin had a nice addition during one of the previous GSoC's to identify match points found on clouds - Celeste. So I decided to attach it to the SFM solution while I figured out how the cloudy_photos option in Bundler actually worked.

So this is how I initially came across the fabled Gabor filter. The Hugin cloud detection implementation classifies matchpoints using the local texture estimated with -- a system similar to that in the mammalian visual cortex. Here is a nice OpenCV Gabor filter which can be conveniently glued together in Python to the osm-bundler scripts.  The cat brain research and the biological basis of the Gabor filter is quite interesting :

In 1946, Gabor suggested representing signals over space and time called Information diagrams. He showed that a Gaussian occupies minimal area in such diagrams.  Time and Frequency analysis are the two extremes of such an analysis.  Gabor filters  became popular in vision partly because J.G Daugman (1980, ‘88, ‘90) showed that the receptive fields of most orientation receptive neurons in the (cat’s) brain looked very much like Gabor functions.
As with Gabor filters, the brain often makes use of over complete, non-orthogonal functions.

- Stanforn Robotics.

I tend to get excited whenever a new library sprouts Python bindings. For point cloud processing, a lot of effort is going into the Point Cloud Library (PCL), it is nice to see Python bindings among the projects for GSoC 2012. There is a pass through filter in PCL which can be used perform simple colour-range based filters on the bundle adjustment outputs. The statistical outlier detection can then be used to clean up any straggling garbage points.

No comments: