4 changed files with 63 additions and 20 deletions
			
			
		| @ -0,0 +1,19 @@ | |||
| function clusterIdx = myNCuts (anAffinityMat, k) | |||
| %Implementation of the N-cuts algorithm | |||
| %   Usage clusterIdx = myNCuts (anAffinityMat, k), where: | |||
| %       Inputs | |||
| %       - anAffinityMat is a rectagular, symmetrical affinity matrix | |||
| %           representation of an image | |||
| %       - k is the desired number of clusters | |||
| %       Output | |||
| %       - clusterIdx is a vector storing the cluster Id of each node | |||
| 
 | |||
|     if ~issymmetric(anAffinityMat) | |||
|         error('The affinity matrix provided is not symmetric.'); | |||
|     end | |||
| 
 | |||
|     D = diag(sum(anAffinityMat, 2)); | |||
|     L = D - anAffinityMat; | |||
|     [eigenvectorsMatrix, ~] = eigs(double(L), double(D), k, 'sm'); | |||
|     clusterIdx = kmeans(eigenvectorsMatrix, k); | |||
| end | |||
| @ -0,0 +1,35 @@ | |||
| image = imageT; | |||
| k = 3; | |||
| 
 | |||
| graph = Image2Graph(image); | |||
| %clusters = mySpectralClustering(graph, k); | |||
| clusters = myNCuts(graph, k); | |||
| 
 | |||
| clusters = reshape(clusters, size(image, 1), []); | |||
| 
 | |||
| redChannel = image(:, :, 1); | |||
| greenChannel = image(:, :, 2); | |||
| blueChannel = image(:, :, 3); | |||
| 
 | |||
| segImR = clusters; | |||
| segImG = clusters; | |||
| segImB = clusters; | |||
| 
 | |||
| for cluster = 1:k | |||
|     meanR = mean(redChannel(clusters == cluster)); | |||
|     meanG = mean(greenChannel(clusters == cluster)); | |||
|     meanB = mean(blueChannel(clusters == cluster)); | |||
|      | |||
|     segImR(clusters == cluster) = meanR; | |||
|     segImG(clusters == cluster) = meanG; | |||
|     segImB(clusters == cluster) = meanB; | |||
| end | |||
| 
 | |||
| segIm = zeros(size(image, 1), size(image, 2), 3); | |||
| segIm(:, :, 1) = segImR; | |||
| segIm(:, :, 2) = segImG; | |||
| segIm(:, :, 3) = segImB; | |||
| imshow(segIm) | |||
| 
 | |||
| clearvars segImR segImG segImB meanR meanG meanB graph redChannel ... | |||
|     greenChannel blueChannel clusters k image cluster segIm | |||
					Loading…
					
					
				
		Reference in new issue