/// <summary> /// </summary> /// <param name="cloud"></param> /// <param name="detectionParameters"></param> /// <param name="mergingParameters"></param> /// <returns></returns> public IList <Tree> DetectPotentialTrees(Cloud cloud, DetectionParameters detectionParameters, MergingParameters mergingParameters) { var pointSets = DetectTrunkPointSets(cloud, detectionParameters).SelectMany(group => group.PointSets).ToList(); var pointSetGroup = new PointSetGroup(pointSets); var potentialTrees = pointSetGroup.BuildTrees(mergingParameters); return(FilterTrees(potentialTrees, detectionParameters.TreeFilters)); }
private static IList <Tree> Detect(PointSetGroup pointSetGroup) { var mergingParameters = new MergingParameters { MinimumRegressionGroupingDistance = 0.09, MaximumGroupingEmptyHeight = 20, MinimumGroupingDistance = 0.35, }; var treeFilters = new List <ITreeFilter> { new TreeHeightFilter { MinimalTreeHeight = 4 } }; var potentialTrees = pointSetGroup.BuildTrees(mergingParameters); return(FilterTrees(potentialTrees, treeFilters)); }