1function [CSH_ann,numUniqueResultsPerPixel,sortedErrors] = TransitiveKNN_part2(A,B,k,width,overSafeResults,errorMat)
2
3[hA,wA,dA] = size(A);
4[hB,wB,dB] = size(B);
5
6
7br_boundary_to_ignore = width-1;
8numUniqueResultsPerPixel = zeros(hA-br_boundary_to_ignore,wA-br_boundary_to_ignore);
9CSH_ann = zeros(k,hA,wA,2);
10sortedErrors = zeros(hA,wA,k);
11
12for i = 1 : hA-br_boundary_to_ignore
13 for j = 1 : wA-br_boundary_to_ignore
14 [sErrors,sInds] = sort(squeeze(errorMat(i,j,:)));
15 OSR = squeeze(overSafeResults(i,j,:));
16 sOSR = OSR(sInds);
17 uOSRinds = find(diff(sOSR)~=0);
18 kActual = length(uOSRinds);
19 uOSRFinalinds = zeros(k,1);
20 numUniqueResultsPerPixel(i,j) = min(k,kActual);
21 if kActual >= k
22 uOSRFinalinds = uOSRinds(1:k);
23 else
24 uOSRFinalinds(1:kActual) = uOSRinds;
25 uOSRFinalinds(kActual+1:k) = uOSRinds(end);
26 end
27
28 [CSH_ann(:,i,j,2),CSH_ann(:,i,j,1)] = ind2sub([hB,wB],sOSR(uOSRFinalinds));
29
30 sortedErrors(i,j,:) = sErrors(uOSRFinalinds);
31 end
32end
33
34CSH_ann = permute(CSH_ann,[2,3,4,1]);