Exemple #1
0
 public TrackablePoint(TrackingContext context, TrackerParameters trackerParameters, PointF value)
 {
     this.context           = context;
     this.trackerParameters = trackerParameters;
     this.currentValue      = value;
     this.nonTrackingValue  = value;
 }
        private void PushTrackerParameters(Size block, Size search)
        {
            TrackerParameters old = track.TrackerParameters;

            track.TrackerParameters = new TrackerParameters(old.SimilarityThreshold, old.TemplateUpdateThreshold, old.RefinementNeighborhood, search, block, old.ResetOnMove);;
            viewportController.Refresh();
        }
Exemple #3
0
        public TrackablePoint(XmlReader r, PointF scale, TimestampMapper timeMapper)
        {
            r.ReadStartElement();

            while (r.NodeType == XmlNodeType.Element)
            {
                switch (r.Name)
                {
                case "TrackerParameters":
                    trackerParameters = TrackerParameters.ReadXml(r, scale);
                    break;

                case "NonTrackingValue":
                    nonTrackingValue = XmlHelper.ParsePointF(r.ReadElementContentAsString());
                    nonTrackingValue = nonTrackingValue.Scale(scale.X, scale.Y);
                    break;

                case "CurrentValue":
                    currentValue = XmlHelper.ParsePointF(r.ReadElementContentAsString());
                    currentValue = currentValue.Scale(scale.X, scale.Y);
                    break;

                case "Timeline":
                    ParseTimeline(r, scale, timeMapper);
                    break;

                default:
                    string unparsed = r.ReadOuterXml();
                    break;
                }
            }

            r.ReadEndElement();
        }
Exemple #4
0
        private void Track_TrackerParametersChanged(object sender, EventArgs e)
        {
            // Remember these track parameters to bootstrap the next trackable.
            DrawingTrack track = sender as DrawingTrack;

            if (track == null)
            {
                return;
            }

            lastUsedTrackerParameters = track.TrackerParameters;
        }
Exemple #5
0
        private void SetParameters(TrackerParameters parameters)
        {
            similarityTreshold      = parameters.SimilarityThreshold;
            templateUpdateThreshold = parameters.TemplateUpdateThreshold;
            refinementNeighborhood  = parameters.RefinementNeighborhood;
            searchWindow            = parameters.SearchWindow;
            blockWindow             = parameters.BlockWindow;

            if (!blockWindow.FitsIn(searchWindow))
            {
                searchWindow = blockWindow;
            }
        }
Exemple #6
0
        public void Add(ITrackable drawing, VideoFrame videoFrame)
        {
            if (trackers.ContainsKey(drawing.Id))
            {
                return;
            }

            TrackingProfile   profile    = drawing.CustomTrackingProfile ?? PreferencesManager.PlayerPreferences.TrackingProfile;
            TrackerParameters parameters = new TrackerParameters(profile, imageSize);

            TrackingContext context = new TrackingContext(videoFrame.Timestamp, videoFrame.Image);

            trackers.Add(drawing.Id, new DrawingTracker(drawing, context, parameters));
        }
Exemple #7
0
        public void AddPoint(ITrackable drawing, VideoFrame videoFrame, string key, PointF point)
        {
            if (!trackers.ContainsKey(drawing.Id))
            {
                return;
            }

            TrackingProfile   profile    = drawing.CustomTrackingProfile ?? PreferencesManager.PlayerPreferences.TrackingProfile;
            TrackerParameters parameters = new TrackerParameters(profile, imageSize);

            TrackingContext context = new TrackingContext(videoFrame.Timestamp, videoFrame.Image);

            trackers[drawing.Id].AddPoint(context, parameters, key, point);
        }
Exemple #8
0
        public DrawingTracker(ITrackable drawing, TrackingContext context, TrackerParameters parameters)
        {
            this.drawing    = drawing;
            this.drawingId  = drawing.Id;
            this.parameters = parameters;

            foreach (KeyValuePair <string, PointF> pair in drawing.GetTrackablePoints())
            {
                trackablePoints.Add(pair.Key, new TrackablePoint(context, parameters, pair.Value));
            }

            drawing.TrackablePointMoved += drawing_TrackablePointMoved;
            assigned = true;
        }
Exemple #9
0
        public static TrackerParameters ReadXml(XmlReader r, PointF scale)
        {
            TrackingProfile classic                = new TrackingProfile();
            double          similarityThreshold    = classic.SimilarityThreshold;
            double          updateThreshold        = classic.TemplateUpdateThreshold;
            int             refinementNeighborhood = classic.RefinementNeighborhood;
            Size            searchWindow           = classic.SearchWindow;
            Size            blockWindow            = classic.BlockWindow;

            r.ReadStartElement();

            while (r.NodeType == XmlNodeType.Element)
            {
                switch (r.Name)
                {
                case "SimilarityThreshold":
                    similarityThreshold = r.ReadElementContentAsDouble();
                    break;

                case "TemplateUpdateThreshold":
                    updateThreshold = r.ReadElementContentAsDouble();
                    break;

                case "RefinementNeighborhood":
                    refinementNeighborhood = r.ReadElementContentAsInt();
                    break;

                case "SearchWindow":
                    searchWindow = XmlHelper.ParseSize(r.ReadElementContentAsString());
                    searchWindow = new SizeF(searchWindow.Width * scale.X, searchWindow.Height * scale.Y).ToSize();
                    break;

                case "BlockWindow":
                    blockWindow = XmlHelper.ParseSize(r.ReadElementContentAsString());
                    blockWindow = new SizeF(blockWindow.Width * scale.X, blockWindow.Height * scale.Y).ToSize();
                    break;

                default:
                    string outerXml = r.ReadOuterXml();
                    break;
                }
            }

            r.ReadEndElement();

            TrackerParameters parameters = new TrackerParameters(similarityThreshold, updateThreshold, refinementNeighborhood, searchWindow, blockWindow, false);

            return(parameters);
        }
Exemple #10
0
 public TrackerBlock2(TrackerParameters parameters)
 {
     this.parameters = parameters;
     SetParameters(parameters);
 }
Exemple #11
0
 public void AddPoint(TrackingContext context, TrackerParameters parameters, string key, PointF value)
 {
     // Some drawings like polyline have a dynamic list of trackable points.
     trackablePoints.Add(key, new TrackablePoint(context, parameters, value));
 }