0001 function collidingCells = classifyCollision(tracksGT,P)
0002
0003
0004 collidingCells = struct('Ids',[],'Pairs',[]);
0005 pairs = zeros(0,3);
0006
0007
0008 frs = unique(tracksGT(:,2));
0009 for fr = 1: length(frs)
0010 if frs(fr) < 999
0011
0012 tracks_perFR = tracksGT(tracksGT(:,2)==frs(fr),:);
0013
0014
0015 dist_TABLE = Inf(size(tracks_perFR,1),size(tracks_perFR,1));
0016 for tr1 = 1: size(tracks_perFR,1)
0017 for tr2 = tr1+1: size(tracks_perFR,1)
0018 dist_TABLE(tr1,tr2) = sqrt( ...
0019 (tracks_perFR(tr1,3) - tracks_perFR(tr2,3))^2 + ...
0020 (tracks_perFR(tr1,4) - tracks_perFR(tr2,4))^2 );
0021 end
0022
0023 end
0024 dist_decision = dist_TABLE < P.tCollision_Distance;
0025 [ind1 ind2] = find(dist_decision == 1);
0026 if ~isempty(ind1)
0027 TR1 = tracks_perFR(ind1,1);
0028 TR2 = tracks_perFR(ind2,1);
0029 d = dist_TABLE(dist_decision == 1);
0030 frame = frs(fr)*ones(size(TR1,1),1);
0031 pairs = [pairs; horzcat(frame,TR1,TR2,d)];
0032 end
0033 end
0034 end
0035
0036
0037
0038 collidingCells.Pairs = pairs;
0039 collidingCells.Ids = unique(pairs(:,2:3));
0040 pairs = zeros(0,3);
0041
0042 end