# MeanShift

MeanShift[list,d]

replaces each element in list by the mean of the values of all elements that differ by less than d.

MeanShift[list,d,{p1,p2,}]

returns the list where only the specified parts pi are replaced with mean-shifted values.

MeanShift[image,]

mean shift of the pixel values in image.

# Details and Options  • MeanShift is also known as mode seeking and is typically used to smooth data arrays and images.
• MeanShift preserves the ordering of the input elements.
• In MeanShift[image,d,parts], parts can be a marker image or a list of {row,column} positions.
• The following options can be given:
•  DistanceFunction EuclideanDistance distance metric function MaxIterations 1 maximum number of iterations to perform Tolerance 0 allowed tolerance to assume convergence Weights Automatic weights to use for computing the mean
• With Tolerance->t, mean-shift iterations stop if no point changes by more than t.
• By default, unit weights are used. Using Weights->f, function f applied to rescaled distances between elements is used to compute and return a weighted mean of the values. Distances between 0 and d are rescaled to be in the range from 0 and 1.
• Typical settings for Weights include:
•  UnitStep unit weights (default) UnitTriangle linearly decreasing weight "Gaussian" weights based on a Gaussian window with sigma {"Gaussian",σ} Gaussian window with sigma σ
• Common settings for the DistanceFunction option are:
•  ManhattanDistance Manhattan or "city block" distance EuclideanDistance Euclidean distance SquaredEuclideanDistance squared Euclidean distance NormalizedSquaredEuclideanDistance normalized squared Euclidean distance CosineDistance angular cosine distance CorrelationDistance correlation coefficient distance f use an arbitrary function f

# Examples

open allclose all

## Basic Examples(3)

Mean shift of a list of integers:

Mean shift of a list of vectors:

Mean shift of an image's pixels after multiple iterations:

## Scope(4)

Remove uniform noise from a dataset:

Mean-shift algorithm applied to symbolic expressions:

Mean-shift algorithm applied to a subset of the points:

Precision of the input is preserved:

## Options(8)

### DistanceFunction(3)

By default, EuclideanDistance is used:

Specify the distance function:

Use a custom distance function:

### MaxIterations(2)

By default, only one iteration of mean shift is applied to input:

Use MaxIterations to specify the number of iterations:

Use to run until convergence:

Use MaxIterations to iteratively smooth data:

### Tolerance(1)

By default, zero tolerance is used:

Specify the accepted tolerance:

### Weights(2)

By default, uniform weights are used:

Weigh neighbors linearly, based on their distance from each sample:

Weigh neighbors exponentially, based on their squared distance from each sample:

By "Gaussian" weights for color segmentation:

With default uniform weights:

## Applications(9)

### Smoothing(2)

Find large-scale features in a noisy dataset:

Image smoothing using mean shift of 5D features in the joint spatial-range domain:

Use LABColor values, suitable for computing color distances:

Compute spatial location features normalized to the range 0 to 1:

Construct 5D features from color and location of pixels:

Perform one iteration of mean-shift filtering using "Gaussian" weights and EuclideanDistance, which is equivalent to multiplying Gaussian-weighted spatial and range features:

Create the output image using the filtered color values:

Perform 10 iterations:

### Mean-Shift Displacement(2)

Compute a 1D mean-shift vector:

Generate unimodal 2D data:

Compute the trajectory of a point as it iteratively ascends toward the mode:

Visualize the norm and direction of the successive mean-shift vectors:

Visualize the ascent:

### Find Modes of Estimated Distribution(1)

Get sample data from some distribution with three modes: 0, 2, and 4:

Apply mean shift until convergence for samples that tessellates the data:

Prune points that are not local maxima of the underlying PDF by restarting mean shift from a perturbed position:

Find modes by gathering the nearby peaks:

### Clustering(2)

Generate data from some distribution:

Apply mean shift until all data points have converged:

Gather the result into clusters:

Visualize the clustering:

Generate a large amount of data from some distribution:

Compute trajectories for a fraction of the data samples:

Merge paths that end within radius of each other:

Label each trajectory and compute the corresponding nearest function:

Each unlabeled sample is assigned the label of the closest trajectory:

Visualize the clustering:

Computing the mean shift until convergence for the entire dataset would take much longer:

### Image Segmentation(2)

Iterate mean-shift filtering in the 3D feature space of the "LAB" color components:

Perform mean-shift filtering in the 5D spatial-range feature domain:

Merge components whose feature values are apart by less than the radius:

Compute the final segments and quantized image:

## Properties & Relations(3)

Perform mean shift on some parts of a list:

Extract the mean-shifted elements:

Perform mean shift on some parts of an image:

Extract the mean-shifted pixel values:

The mean-shift vector is proportional to the gradient density estimate normalized by the density estimate:

## Neat Examples(1)

Show multiple iterations of mean shift:

Introduced in 2010
(8.0)
|
Updated in 2014
(10.0)