FloorPlanTransformation / util /mat /ComputeLabelSubSets.m
rawanessam's picture
Upload 79 files
e9fe176 verified
function [subsets] = ComputeLabelSubSets(segIndexs,Labels)
subsets = cell(length(segIndexs),1);
for i = 1:length(segIndexs)
imageNdxs = unique(segIndexs{i}.image);
occMat = zeros(length(Labels{i}));
for j = imageNdxs(:)'
labelNdxs = unique(segIndexs{i}.label(segIndexs{i}.image==j));
for k = labelNdxs(:)'
occMat(k,labelNdxs) = occMat(k,labelNdxs)+1;
end
end
distMeasure = occMat;
distMeasure = distMeasure./repmat(sqrt(diag(distMeasure)),[1 size(distMeasure,2)])./repmat(sqrt(diag(distMeasure))',[size(distMeasure,2) 1]);
distMeasure = 1-distMeasure;
distMeasure = distMeasure - diag(diag(distMeasure));
Z = linkage(squareform(distMeasure),'average');
c = cluster(Z,'cutoff',.9,'criterion','distance');
[foo lpsndx] = sort(c);lps = distMeasure(lpsndx,:);lps = lps(:,lpsndx);
current = 0;
for j = 1:max(c)
clusterSize = sum(c==j);
lps(current+1:current+clusterSize,current+1:current+clusterSize)=1;
current = current+clusterSize;
end
clusterSplitMat = lps<.7;
rowCount = sum(clusterSplitMat);
while(any(rowCount>2))
%show(clusterSplitMat);
[rcMax ndx] = max(rowCount);
c(lpsndx(ndx)) = max(c)+1;
clusterSplitMat(ndx,:) = 0;
clusterSplitMat(:,ndx) = 0;
rowCount = sum(clusterSplitMat);
end
for j = 1:max(c)
subsets{i}{j} = find(c==j);
end
fprintf('%d Clusters @ %.2f\n',max(c),.9);
for j = 1:max(c)
fprintf('%s ',Labels{i}{j==c});
fprintf('\n');
end
fprintf('\n');
%{
%for experimentation
fprintf('%s ',Labels{i}{:});
fprintf('\n');
cutoffs = .9;%.6:.1:
for k = 1:length(cutoffs);
c = cluster(Z,'cutoff',cutoffs(k),'criterion','distance');
figure(k);dendrogram(Z,200,'colorthreshold',cutoffs(k));
[foo ndx] = sort(c);lps = distMeasure(ndx,:);lps = lps(:,ndx);show(lps,k+length(cutoffs));
fprintf('%d Clusters @ %.2f\n',max(c),cutoffs(k));
for j = 1:max(c)
fprintf('%s ',Labels{i}{j==c});
fprintf('\n');
end
fprintf('\n');
end
fprintf('\n');
%}
end
end