Пример #1
0
        private List <Head> DetectHeads(CameraSpacePoint[] noiseFilteredFrame)
        {
            _stopwatch.Restart();

            var        haarDetector       = new HaarDetector(noiseFilteredFrame);
            List <int> headCandidatesHaar = haarDetector.GetHeadCandidates();

            if (Logger.LogTimeHaar)
            {
                _stopwatch.Stop();
                Console.WriteLine("Haar: {0}", _stopwatch.ElapsedMilliseconds);
            }
            _stopwatch.Restart();

            var candidatesHighestConnectingPoints = new List <int>();

            for (int i = 0; i < headCandidatesHaar.Count; i++)
            {
                if (Logger.ShowCandidateHeadpixel)
                {
                    GraphicsUtils.DrawPoint(headCandidatesHaar[i]);
                }

                int headCandidateIndex = headCandidatesHaar[i];

                if (headCandidateIndex != -1)
                {
                    int highestPointIndex = ClassificationUtils.GetHighestConnectingPoint(headCandidateIndex, Thresholds.ClassificationHighestPointSearchDepth);

                    candidatesHighestConnectingPoints.Add(highestPointIndex);

                    if (Logger.ShowTopHeadpixel)
                    {
                        GraphicsUtils.DrawPoint(highestPointIndex);
                    }
                }
            }

            var groupedHighestIndexes = ClassificationUtils.GroupCandidatesHighestPoints(candidatesHighestConnectingPoints, Thresholds.ClassificationHighestPointGroupingDistance);

            List <Head> validatedCandidateHeads = ValidateCandidateHeads(groupedHighestIndexes);

            GlobVar.ValidatedCandidateHeads = validatedCandidateHeads;
            if (Logger.LogTimeClassificationValidation)
            {
                _stopwatch.Stop();
                Console.WriteLine("ClassificationValidation: {0}", _stopwatch.ElapsedMilliseconds);
            }

            return(validatedCandidateHeads);
        }
        private List<Head> DetectHeads(CameraSpacePoint[] noiseFilteredFrame)
        {
            _stopwatch.Restart();

            var haarDetector = new HaarDetector(noiseFilteredFrame);
            List<int> headCandidatesHaar = haarDetector.GetHeadCandidates();
            if (Logger.LogTimeHaar)
            {
                _stopwatch.Stop();
                Console.WriteLine("Haar: {0}", _stopwatch.ElapsedMilliseconds);
            }
            _stopwatch.Restart();

            var candidatesHighestConnectingPoints = new List<int>();

            for (int i = 0; i < headCandidatesHaar.Count; i++)
            {
                if (Logger.ShowCandidateHeadpixel)
                {
                    GraphicsUtils.DrawPoint(headCandidatesHaar[i]);
                }

                int headCandidateIndex = headCandidatesHaar[i];

                if (headCandidateIndex != -1)
                {
                    int highestPointIndex = ClassificationUtils.GetHighestConnectingPoint(headCandidateIndex, Thresholds.ClassificationHighestPointSearchDepth);

                    candidatesHighestConnectingPoints.Add(highestPointIndex);

                    if (Logger.ShowTopHeadpixel)
                    {
                        GraphicsUtils.DrawPoint(highestPointIndex);
                    }
                }
            }

            var groupedHighestIndexes = ClassificationUtils.GroupCandidatesHighestPoints(candidatesHighestConnectingPoints, Thresholds.ClassificationHighestPointGroupingDistance);

            List<Head> validatedCandidateHeads = ValidateCandidateHeads(groupedHighestIndexes);

            GlobVar.ValidatedCandidateHeads = validatedCandidateHeads;
            if (Logger.LogTimeClassificationValidation)
            {
                _stopwatch.Stop();
                Console.WriteLine("ClassificationValidation: {0}", _stopwatch.ElapsedMilliseconds);
            }

            return validatedCandidateHeads;
        }