Spaces:
Sleeping
Sleeping
File size: 4,099 Bytes
e9fe176 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | function [interLabPenality occMat] = ComputeLabelPenality(fileList,HOMEDATA,segDir,segIndexs,testSetName,Labels)
pfig = ProgressBar('Compute Label Penality');
HOMEDESCDATA = fullfile(HOMEDATA,'Descriptors',segDir);
occFile = fullfile(HOMEDATA,'Descriptors',segDir,sprintf('CoOccurance%s.mat',testSetName));
occMat = cell(length(segIndexs));
occMatGood = 0;
if(exist(occFile,'file'))
load(occFile);
if(size(occMat,1) == length(segIndexs) && size(occMat,2) == length(segIndexs))
for i = 1:length(segIndexs)
if(size(occMat{i,i},1) == length(Labels{i}) && size(occMat{i,i},2) == length(Labels{i}))
occMatGood = occMatGood + 1;
end
end
end
end
if(occMatGood<length(segIndexs))
occMat = cell(length(segIndexs));
for i = 1:length(segIndexs)
occMat{i,i} = zeros(length(Labels{i}));
end
for j = 1:length(fileList)
[folder file] = fileparts(fileList{j});
adjFile = fullfile(HOMEDESCDATA,'sp_adjacency',folder,[file '.mat']);
load(adjFile);
for i = 1:length(segIndexs)
labelMap = zeros(max(adjPairs(:)),1);
spNdx = segIndexs{i}.sp(segIndexs{i}.image==j);
labelMap(spNdx) = segIndexs{i}.label(segIndexs{i}.image==j);
adjLabels = labelMap(adjPairs);
[y,x] = find(adjLabels==0);
adjLabels(y,:) = [];
inds = sub2ind(size(occMat{i,i}),adjLabels(:,1),adjLabels(:,2));
[inds addamt] = UniqueAndCounts(inds);
occMat{i,i}(inds) = occMat{i,i}(inds)+addamt;
end
if(mod(j,100)==0)
ProgressBar(pfig,j,length(fileList));
end
end
save(occFile,'occMat');
end
tic
occMatGood = 0;
occTotal = length(segIndexs)*(length(segIndexs)-1)/2;
if(size(occMat,1) == length(segIndexs) && size(occMat,2) == length(segIndexs))
for j = 1:length(segIndexs)
for k = j+1:length(segIndexs)
if(size(occMat{j,k},1) == length(Labels{j}) && size(occMat{j,k},2) == length(Labels{k}))
occMatGood = occMatGood + 1;
end
end
end
end
if(occTotal~=occMatGood)
for j = 1:length(segIndexs)
for k = j+1:length(segIndexs)
occMat{j,k} = zeros(length(Labels{j}),length(Labels{k}));
end
end
for i = 1:length(fileList)
for j = 1:length(segIndexs)
for k = (j+1):length(segIndexs)
spNdxj = segIndexs{j}.sp(segIndexs{j}.image==i);
spNdxk = segIndexs{k}.sp(segIndexs{k}.image==i);
[spNdx jind kind] = intersect(spNdxj,spNdxk);
jl = segIndexs{j}.label(segIndexs{j}.image==i);jl=jl(:);
kl = segIndexs{k}.label(segIndexs{k}.image==i);kl=kl(:);
adjLabels = [jl(jind(:)) kl(kind(:))];
inds = sub2ind(size(occMat{j,k}),adjLabels(:,1),adjLabels(:,2));
[inds addamt] = UniqueAndCounts(inds);
occMat{j,k}(inds) = occMat{j,k}(inds)+addamt;
end
end
if(mod(i,100)==0)
ProgressBar(pfig,i,length(fileList));
end
end
for j = 1:length(segIndexs)
for k = (j+1):length(segIndexs)
occMat{k,j} = occMat{j,k}';
end
end
save(occFile,'occMat');
end
close(pfig);
interLabPenality = cell(size(occMat));
for j = 1:length(segIndexs)
for k = j:length(segIndexs)
occ = occMat{j,k};
occ = occ+.1;
lpc = sum(occ);
condiProb1 = occ./repmat(lpc,[size(occ,1) 1]);
lpc = sum(occ,2);
condiProb2 = occ./repmat(lpc,[1 size(occ,2)]);
condiProb=-log((condiProb1+condiProb2)./2);
if(j==k)
condiProb = condiProb - diag(diag(condiProb));
end
fprintf('%d %d: %.3f\n',j,k,max(condiProb(:)));
condiProb = condiProb./max(condiProb(:));
interLabPenality{j,k} = condiProb;
if(j~=k)
interLabPenality{k,j} = condiProb';
end
end
end
|