Home > track > classifyCollision.m

classifyCollision

PURPOSE ^

%-------------------------------------------------------------------------

SYNOPSIS ^

function collidingCells = classifyCollision(tracksGT,P)

DESCRIPTION ^

%-------------------------------------------------------------------------
 collidingCells

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function collidingCells = classifyCollision(tracksGT,P)
0002 %%-------------------------------------------------------------------------
0003 % collidingCells
0004 collidingCells = struct('Ids',[],'Pairs',[]);
0005 pairs = zeros(0,3);
0006 
0007 %Iterate through all frame
0008 frs = unique(tracksGT(:,2));
0009 for fr = 1: length(frs)
0010     if frs(fr) < 999 %999 is the code of invalid frame
0011         % Extract all tracks
0012         tracks_perFR = tracksGT(tracksGT(:,2)==frs(fr),:);
0013 
0014         % Create distance table
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 % Collect data for struct
0038 collidingCells.Pairs = pairs;
0039 collidingCells.Ids = unique(pairs(:,2:3));
0040 pairs = zeros(0,3);
0041 
0042 end

Generated on Thu 17-Mar-2011 14:45:51 by m2html © 2005