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 . |