/// <summary>
 /// Constructor
 /// </summary>
 /// <param name="streamer">Streamer to get video stream from</param>
 /// <param name="onUpdateMarkup">On Update Markup function delegate</param>
 /// <param name="onUpdateStatistics">On Update Statics function delegate</param>
 public AbstractImageProcessingUnit(Publisher <Frame> streamer,
                                    Helpers.UpdateMarkupCircleDelegate onUpdateMarkup, Helpers.UpdateStatisticsDelegate onUpdateStatistics) :
     base(streamer)
 {
     _publisher       = streamer;
     UpdateMarkup     = onUpdateMarkup;
     UpdateStatistics = onUpdateStatistics;
 }
Example #2
0
 /// <summary>
 /// Image Processing Unit Constructor
 /// </summary>
 /// <param name="streamer">Video streamer to get frames from</param>
 /// <param name="onUpdateMarkup">Update markup function delegate</param>
 /// <param name="onUpdateStatistics">Update statistics delegate</param>
 public ImageProcessingUnit(Publisher <Frame> streamer,
                            Helpers.UpdateMarkupCircleDelegate onUpdateMarkup, Helpers.UpdateStatisticsDelegate onUpdateStatistics) :
     base(streamer, onUpdateMarkup, onUpdateStatistics)
 {
     _calibrator           = new CalibrationUnit(UpdateMarkup, UpdateStatistics);
     _ballTracker          = new Tracker(_calibrator, _publisher, UpdateMarkup, UpdateStatistics);
     BallLocationPublisher = new BallLocationPublisher(_ballTracker);
     _lastFrameTimeStamp   = DateTime.Now;
     _detectionAnalyzer    = new DetectionStatisticAnalyzer(onUpdateStatistics);
 }
Example #3
0
        /// <summary>
        /// Demo Image Processing Unit constructor
        /// </summary>
        /// <param name="streamer">DemoStreamer instance</param>
        /// <param name="onUpdateMarkup">On Update Markup delegate</param>
        /// <param name="onUpdateStatistics">On Update Statistics delegate</param>
        public DemoImageProcessingUnit(DemoStreamer streamer,
                                       Helpers.UpdateMarkupCircleDelegate onUpdateMarkup, Helpers.UpdateStatisticsDelegate onUpdateStatistics) :
            base(streamer, onUpdateMarkup, onUpdateStatistics)
        {
            //Set Foosbot world sizes - axe X x axe Y
            _rightBorder  = Configuration.Attributes.GetValue <double>(Configuration.Names.FOOSBOT_AXE_X_SIZE);
            _buttomBorder = Configuration.Attributes.GetValue <double>(Configuration.Names.FOOSBOT_AXE_Y_SIZE);

            //Create Transfomation Matrix - to present coordinates of a Ball in GUI
            InitializeTransformation(Convert.ToSingle(streamer.FrameWidth),
                                     Convert.ToSingle(streamer.FrameHeight), Convert.ToSingle(_rightBorder),
                                     Convert.ToSingle(_buttomBorder));

            //Set this Demo Image Processing Unit as observer for Demo Streamer
            streamer.DemoImageProcessingUnit = this;

            //Create Ball Location Publisher for Observers
            _coordinatesUpdater   = new DemoLastBallCoordinatesUpdater();
            BallLocationPublisher = new BallLocationPublisher(_coordinatesUpdater);

            //Set borders of frame to include ball radius
            _rightBorder  -= _ballRadius;
            _buttomBorder -= _ballRadius;
            _leftBorder   += _ballRadius;
            _upeerBorder  += _ballRadius;

            //Set start ball coordinates
            _x = Convert.ToInt32(_rightBorder / 2);
            _y = Convert.ToInt32(_buttomBorder / 2);

            //Instantiate random generator
            _random = new Random();

            //Start Generating Locations in separate Thread
            BeginInvokeGenerateLocation();
        }
Example #4
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="callibrator">Calibrator Unit Instance</param>
 /// <param name="streamer">Streamer Unit Instance</param>
 /// <param name="onUpdateMarkup">Update Markup Delegate</param>
 /// <param name="onUpdateStatistics">Update Statistics Delegate</param>
 public Tracker(CalibrationUnit callibrator, Publisher <Frame> streamer, Helpers.UpdateMarkupCircleDelegate onUpdateMarkup, Helpers.UpdateStatisticsDelegate onUpdateStatistics)
     : base(onUpdateMarkup, onUpdateStatistics)
 {
     _calibrator = callibrator;
     _streamer   = streamer;
 }
Example #5
0
 public VectorCallculationUnit(Publisher <BallCoordinates> coordinatesPublisher, Helpers.UpdateMarkupLineDelegate onUpdateMarkupLine, Helpers.UpdateMarkupCircleDelegate onUpdateMarkup) :
     base(coordinatesPublisher)
 {
     UpdateMarkupLineRealWorld = onUpdateMarkupLine;
     UpdateMarkupCircle        = onUpdateMarkup;
 }
Example #6
0
 /// <summary>
 /// Callibration Unit Constructor
 /// </summary>
 /// <param name="onUpdateMarkup">Delegate for updating markups</param>
 /// <param name="onUpdateStatistics">Delegate for updating statistics</param>
 public CalibrationUnit(Helpers.UpdateMarkupCircleDelegate onUpdateMarkup, Helpers.UpdateStatisticsDelegate onUpdateStatistics)
     : base(onUpdateMarkup, onUpdateStatistics)
 {
 }
Example #7
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="onUpdateMarkup">On update markup method delegate</param>
 /// <param name="onUpdateStatistics">On update statistics method delegate</param>
 public Detector(Helpers.UpdateMarkupCircleDelegate onUpdateMarkup, Helpers.UpdateStatisticsDelegate onUpdateStatistics)
 {
     UpdateMarkup     = onUpdateMarkup;
     UpdateStatistics = onUpdateStatistics;
 }