University College London
Mean shift is usually associated, in computer vision at least, with the segmentation of an image. Whilst this library supports that scenario, it is far more general. Mean shift is a gradient ascent method for finding the modes of a kernel density estimate, so this library is as much a kernel density estimation library as it is a mode finder. It includes the usual kernel bandwidth estimation methods and also supports subspace constrained mean shift, which finds edges/manifolds in noisy data. Support goes far beyond the typical Gaussian and Uniform kernels: It has ten kernel types, as well as the ability to combine them, with different kernels on different parts of a feature vector. The kernels include directional distributions, so it supports density estimation over the position and orientation of an object, for instance. It also supports the multiplication of density estimates, which allows you to perform non-parametric belief propagation using mean shift objects as the messages between random variables. Also has methods to approximate values such as the entropy of a density estimate, and the KL divergence between two estimates.
Papers that are implemented, in all or in part, by this library include:
Tom S. F. Haines.
GitHub repository https://github.com/thaines/helit/tree/master/ms, Feburary 2016.Tom S. F. Haines. Mean shift library. GitHub repository https://github.com/thaines/helit/tree/master/ms, February 2016.Haines, T. S. F., 2016. Mean shift library. GitHub repository https://github.com/thaines/helit/tree/master/ms, Feb.T. S. F. Haines, “Mean shift library,” GitHub repository https://github.com/thaines/helit/tree/master/ms, Feb. 2016.
The author was partially supported by EPSRC grants EP/J021458/1 and EP/K023578/1.