/// <summary> /// Filters the candidate points. Only the candidates that has a certain amount of possible candidates in the neighborhood area are kept. /// </summary> private static List <int> FilterCandidates(DisjointSet disjointSet) { var setRepresentatives = new List <int>(); for (int i = 0; i < disjointSet.Count; i++) { int setRepresentative = disjointSet.Find(i); if (!setRepresentatives.Contains(setRepresentative) && disjointSet.SetSize(setRepresentative) > Thresholds.HaarCandidateMinCount) { setRepresentatives.Add(setRepresentative); } } var highestCandidates = new List <int>(); foreach (var representative in setRepresentatives) { highestCandidates.Add(disjointSet.HighestIndexInTree[representative]); } return(highestCandidates); }
/// <summary> /// Filters the candidate points. Only the candidates that has a certain amount of possible candidates in the neighborhood area are kept. /// </summary> private static List<int> FilterCandidates(DisjointSet disjointSet) { var setRepresentatives = new List<int>(); for (int i = 0; i < disjointSet.Count; i++) { int setRepresentative = disjointSet.Find(i); if (!setRepresentatives.Contains(setRepresentative) && disjointSet.SetSize(setRepresentative) > Thresholds.HaarCandidateMinCount) { setRepresentatives.Add(setRepresentative); } } var highestCandidates = new List<int>(); foreach (var representative in setRepresentatives) { highestCandidates.Add(disjointSet.HighestIndexInTree[representative]); } return highestCandidates; }