Review Article

A Review of Subspace Segmentation: Problem, Nonlinear Approximations, and Applications to Motion Segmentation

Algorithm 3

Subspace segmentation.
Require: The data matrix whose columns are drawn from subspaces of dimension
Ensure: Clustering of the feature points.
1: Compute the SVD of  as in (8).
2: Estimate the rank of (denoted by ) if it is not known. For example, using (9) or any other appropriate choice.
3: Compute consisting of the first rows of .
4: Normalize the columns of .
5: Replace the data matrix with .
6: Find the angle between the column vectors of and represent it as a matrix.
 {i.e., arccos ).}
7: Sort the angles and find the closest neighbors of column vector.
8: for all Column vector of   do
9:  Find the local subspace for the set consisting of and neighbors (see (10)).
  {Theoretically, is at least . We can use the least square approximation for the subspace
   (see the section Local Subspace Estimation). Let denote the matrix whose columns form
  an orthonormal bases for the local subspace associated with .}
10: end for
11: for to do
12:   for to do
13:   define
14:  end for
15: end for Build the distance matrix}
16: Sort the entries of the matrix from smallest to highest values into the vector and set the threshold to
  the value of the entry of the sorted and normalized vector , where is such that
is minimized, and where is the characteristic function of the discrete set .
17: Construct a similarity matrix by setting all entries of less than threshold to 1 and by setting all
 other entries to 0. {Build the binary similarity matrix}
18: Normalize the rows of using -norm.
19: Perform SVD = .
20: Cluster the columns of using k-means. is the projection on to the span of   .