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 MultipartiteWeightTensor computeSimilarityTensor <T>(List <List <T> > objs, ComputeSimilarityFunction <T> similarity) { MultipartiteWeightTensor ret = new MultipartiteWeightTensor(objs.Count); for (int i = 0; i < ret.noParts; i++) { ret.setNumPartitionElements(i, objs[i].Count); } for (int i = 0; i < ret.noParts - 1; i++) { for (int j = i + 1; j < ret.noParts; j++) { double[,] sim = computeSimilarities <T>(objs[i], objs[j], similarity); ret.setWeightMatrix(i, j, sim); } } return(ret); }
public static MultipartiteWeightTensor computeSimilarityTensor(List <List <Segment> > polygons) { MultipartiteWeightTensor ret = new MultipartiteWeightTensor(polygons.Count); for (int i = 0; i < ret.noParts; i++) { ret.setNumPartitionElements(i, polygons[i].Count); } for (int i = 0; i < ret.noParts - 1; i++) { for (int j = i + 1; j < ret.noParts; j++) { double[,] sim = computeSimilarities(polygons[i], polygons[j]); ret.setWeightMatrix(i, j, sim); } } return(ret); }