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);
        }
        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);
        }
示例#3
0
        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);
        }