Add surface_matching module.

This is the surface_matching module developed by @tolgabirdal for the GSoC 2014.

Video can be found [here](https://www.youtube.com/watch?v=uFnqLFznuZU)
The code uses the murmur hash. We have chosen to do it this way due to the
portability also for other platforms. Changing it is not a big issue
though.


On Fri, Aug 29, 2014 at 11:35 AM, Vadim Pisarevsky <notifications@github.com
> wrote:

> In
> modules/surface_matching/include/opencv2/surface_matching/t_hash_int.hpp:
>
> > +{
> > +    /* Round up to the next highest power of 2 */
> > +    /* from http://www-graphics.stanford.edu/~seander/bithacks.html */
> > +
> > +    --value;
> > +    value |= value >> 1;
> > +    value |= value >> 2;
> > +    value |= value >> 4;
> > +    value |= value >> 8;
> > +    value |= value >> 16;
> > +    ++value;
> > +
> > +    return value;
> > +}
> > +
> > +hashtable_int *hashtableCreate(size_t size, size_t (*hashfunc)(unsigned int));
>
> does it make sense to reimplement standard hash tables? They seem to be
> universally available in modern STL implementations.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/Itseez/opencv_contrib/pull/70/files#r16886980>.
>



-- 
/tolga