public static double[,] computeTrackSimilarityMatrix(MultiObjectTrackingResult cts1, MultiObjectTrackingResult cts2, ICompressedTrackSimilarityMetric metric) { double[,] ret = new double[cts1.tracks.Count, cts2.tracks.Count]; for (int i = 0; i < cts1.tracks.Count; i++) { CompressedTrack t1 = cts1.tracks[i]; for (int j = 0; j < cts2.tracks.Count; j++) { CompressedTrack t2 = cts2.tracks[j]; ret[i, j] = metric.getMetric(t1, t2); } } return(ret); }
public static MultipartiteWeightTensor computeTrackSimilarityTensor(List <MultiObjectTrackingResult> cts_list, ICompressedTrackSimilarityMetric metric) { MultipartiteWeightTensor ret = new MultipartiteWeightTensor(cts_list.Count); for (int i = 0; i < cts_list.Count; i++) { ret.setNumPartitionElements(i, cts_list[i].tracks.Count); } for (int i = 0; i < cts_list.Count; i++) { double[,] sim = computeTrackSimilarityMatrix(cts_list[i], cts_list[i], metric); ret.setWeightMatrix(i, i, sim); for (int j = i + 1; j < cts_list.Count; j++) { sim = computeTrackSimilarityMatrix(cts_list[i], cts_list[j], metric); ret.setWeightMatrix(i, j, sim); double[,] sim_t = MatrixOperations.Transpose(sim); ret.setWeightMatrix(j, i, sim_t); } } return(ret); }
public static double[,] computeTrackSimilarityMatrix(List <CompressedTrack> trackList, ICompressedTrackSimilarityMetric metric) { double[,] ret = new double[trackList.Count, trackList.Count]; for (int i = 0; i < trackList.Count; i++) { ret[i, i] = ((double)(trackList[i].endTime - trackList[i].startTime).TotalMilliseconds) / 1000; for (int j = i + 1; j < trackList.Count; j++) { ret[i, j] = metric.getMetric(trackList[i], trackList[j]); ret[j, i] = ret[i, j]; } } return(ret); }