Exemple #1
0
        public Tracker(GTCommands commands)
        {
            this.commands       = commands;
            detectionManager    = new DetectionManager();
            calibration         = new Calibration.Calibration();
            recalibration       = new Recalibration();
            eyeMovement         = new Classifier();
            exponentialSmoother = new ExponentialSmoother(20, 0, (int)Math.Ceiling(GTSettings.Current.Processing.SmoothLevel / 5.0));
            visualization       = new Visualization();
            server                         = new UDPServer();
            gazeDataRaw                    = new GTGazeData();
            gazeDataSmoothed               = new GTGazeData();
            processingDone                 = true;
            timerCalibrationDelay          = new DispatcherTimer();
            timerCalibrationDelay.Interval = TimeSpan.FromMilliseconds(calibrationDelayMilliseconds);
            timerCalibrationDelay.Tick    += TimerCalibrationTick;
            logGaze                        = new Logger();
            logGaze.Server                 = server; // Used to send messages back to client (log start/stop etc.)
            logGaze.IsEnabled              = GTSettings.Current.FileSettings.LoggingEnabled;

            recalibration.RecalibrationAvailable += new Recalibration.RecalibrationAvailableHandler(recalibration_RecalibrationAvailable);
            //recalibration.OnRecalibrationAvailable +=new Recalibration.RecalibrationAvailable(recalibration_OnRecalibrationAvailable);
            GTSettings.Current.Processing.PropertyChanged += ProcessingSettingsPropertyChanged;
            timerCalibrationDelay.Tick += TimerCalibrationTick;
            CameraControl.Instance.FrameCaptureComplete += Camera_FrameCaptureComplete;
        }
Exemple #2
0
        private Tracker(GTCommands commands)
        {
            log.Info("Constructing Tracker...");
            this.commands       = commands;
            detectionManager    = new DetectionManager();
            calibration         = new Calibration.Calibration();
            recalibration       = new Recalibration();
            eyeMovement         = new Classifier();
            exponentialSmoother = new ExponentialSmoother(Settings.Instance.EyeMovement.SmoothNumberOfSamples, 0, (int)Math.Ceiling(Settings.Instance.EyeMovement.SmoothLevel / 5.0));
            visualization       = new Visualization();
            server                         = new UDPServer();
            gazeDataRaw                    = new GTGazeData();
            gazeDataSmoothed               = new GTGazeData();
            gazeDazaExtended               = new GTExtendedData();
            processingDone                 = true;
            timerCalibrationDelay          = new DispatcherTimer();
            timerCalibrationDelay.Interval = TimeSpan.FromMilliseconds(calibrationDelayMilliseconds);
            timerCalibrationDelay.Tick    += TimerCalibrationTick;
            logGaze                        = new Logger();
            logGaze.Server                 = server; // Used to send messages back to client (log start/stop etc.)
            log.Info("Looking up LoggingEnabled in FileSettings");
            logGaze.IsEnabled = Settings.Instance.FileSettings.LoggingEnabled;

            log.Info("Setting RecalibrationAvailableHandler");
            recalibration.RecalibrationAvailable += new Recalibration.RecalibrationAvailableHandler(recalibration_RecalibrationAvailable);
            //recalibration.OnRecalibrationAvailable +=new Recalibration.RecalibrationAvailable(recalibration_OnRecalibrationAvailable);
            Settings.Instance.Processing.PropertyChanged += ProcessingSettingsPropertyChanged;
            timerCalibrationDelay.Tick += TimerCalibrationTick;

            if (GTHardware.Camera.Instance.Device != null)
            {
                log.Info("Setting GTHardware device OnImage EventHandler");
                GTHardware.Camera.Instance.Device.OnImage += new EventHandler <GTHardware.Cameras.ImageEventArgs>(Device_OnImage);
            }
            string sDate = DateTime.Now.ToString();

            sDate = sDate.Replace(" ", "");
            sDate = sDate.Replace("/", "");
            sDate = sDate.Replace(":", "");

            log.Info("Completed constructing Tracker");

            fileName2 = "c:\\temp\\log" + sDate + ".csv";
            appendToFile(fileName2, "TimeStamp;GazeX;GazeY;DiameterLeftPupil;DiameterRightPupil");

            /*fileName = "c:\\temp\\log" + sDate + ".arff";
             * appendToFile(fileName, "@relation 'logeye'");
             * appendToFile(fileName, "@attribute TimeStamp real");
             * appendToFile(fileName, "@attribute GazeX real");
             * appendToFile(fileName, "@attribute GazeY real");
             * appendToFile(fileName, "@attribute DiameterLeftPupil real");
             * appendToFile(fileName, "@attribute DiameterRightPupil real");
             * appendToFile(fileName, "@data");*/
        }
Exemple #3
0
        public void CalibrationStart()
        {
            //if (Settings.Instance.Processing.TrackingGlints)
            //{
            //    if (Settings.Instance.Processing.NumberOfGlints == 4)
            //        calibration = new CalibHomography();
            //    else
            //        calibration = new CalibPolynomial();
            //}
            //else
            //{
            //    calibration = new CalibPupil();
            //}

            calibration = new Calibration.Calibration();

            //server.SendMessage(GTCommands.Instance.Calibration, this.calibration.numTargets.ToString());
        }
Exemple #4
0
 public void CopyCorners(Calibration calib)
 {
     for (int i = 0; i < calib.calibMethod.CalibrationTargets.Count; i++)
     {
         if (calib.calibMethod.CalibrationTargets[i].IsCorner)
         {
             corners[numRecalibTargets] = calib.calibMethod.CalibrationTargets[i].targetCoordinates;
             calibration.calibMethod.CalibrationTargets.Add(new CalibrationTarget(numRecalibTargets, calib.calibMethod.CalibrationTargets[i].targetCoordinates));
             for (int j = 0; j < calib.calibMethod.CalibrationTargets[i].NumImages; j++)
             {
                 calibration.calibMethod.CalibrationTargets[numRecalibTargets].pupilCentersLeft.Add(calib.calibMethod.CalibrationTargets[i].pupilCentersLeft[j]);
                 calibration.calibMethod.CalibrationTargets[numRecalibTargets].pupilCentersRight.Add(calib.calibMethod.CalibrationTargets[i].pupilCentersRight[j]);
                 if (GTSettings.Current.Processing.TrackingGlints)
                 {
                     calibration.calibMethod.CalibrationTargets[numRecalibTargets].glintsLeft.Add(calib.calibMethod.CalibrationTargets[i].glintsLeft[j]);
                     calibration.calibMethod.CalibrationTargets[numRecalibTargets].glintsRight.Add(calib.calibMethod.CalibrationTargets[i].glintsRight[j]);
                 }
             }
             numRecalibTargets++;
         }
     }
 }
Exemple #5
0
        private Tracker(GTCommands commands)
        {
            log.Info("Constructing Tracker...");
            this.commands       = commands;
            detectionManager    = new DetectionManager();
            calibration         = new Calibration.Calibration();
            recalibration       = new Recalibration();
            eyeMovement         = new Classifier();
            exponentialSmoother = new ExponentialSmoother(Settings.Instance.EyeMovement.SmoothNumberOfSamples, 0, (int)Math.Ceiling(Settings.Instance.EyeMovement.SmoothLevel / 5.0));
            visualization       = new Visualization();
            server                         = new UDPServer();
            gazeDataRaw                    = new GTGazeData();
            gazeDataSmoothed               = new GTGazeData();
            gazeDazaExtended               = new GTExtendedData();
            processingDone                 = true;
            timerCalibrationDelay          = new DispatcherTimer();
            timerCalibrationDelay.Interval = TimeSpan.FromMilliseconds(calibrationDelayMilliseconds);
            timerCalibrationDelay.Tick    += TimerCalibrationTick;
            logGaze                        = new Logger();
            logGaze.Server                 = server; // Used to send messages back to client (log start/stop etc.)
            log.Info("Looking up LoggingEnabled in FileSettings");
            logGaze.IsEnabled = Settings.Instance.FileSettings.LoggingEnabled;

            log.Info("Setting RecalibrationAvailableHandler");
            recalibration.RecalibrationAvailable += new Recalibration.RecalibrationAvailableHandler(recalibration_RecalibrationAvailable);
            //recalibration.OnRecalibrationAvailable +=new Recalibration.RecalibrationAvailable(recalibration_OnRecalibrationAvailable);
            Settings.Instance.Processing.PropertyChanged += ProcessingSettingsPropertyChanged;
            timerCalibrationDelay.Tick += TimerCalibrationTick;

            if (GTHardware.Camera.Instance.Device != null)
            {
                log.Info("Setting GTHardware device OnImage EventHandler");
                GTHardware.Camera.Instance.Device.OnImage += new EventHandler <GTHardware.Cameras.ImageEventArgs>(Device_OnImage);
            }

            log.Info("Completed constructing Tracker");
        }
Exemple #6
0
        public void CalibrationStart()
        {
            //if (Settings.Instance.Processing.TrackingGlints)
            //{
            //    if (Settings.Instance.Processing.NumberOfGlints == 4)
            //        calibration = new CalibHomography();
            //    else
            //        calibration = new CalibPolynomial();
            //}
            //else
            //{
            //    calibration = new CalibPupil();
            //}

            calibration = new Calibration.Calibration();

            //server.SendMessage(GTCommands.Instance.Calibration, this.calibration.numTargets.ToString());
        }
Exemple #7
0
        private Tracker(GTCommands commands)
        {
            log.Info("Constructing Tracker...");
            this.commands = commands;
            detectionManager = new DetectionManager();
            calibration = new Calibration.Calibration();
            recalibration = new Recalibration();
            eyeMovement = new Classifier();
            exponentialSmoother = new ExponentialSmoother(Settings.Instance.EyeMovement.SmoothNumberOfSamples, 0, (int)Math.Ceiling(Settings.Instance.EyeMovement.SmoothLevel / 5.0));
            visualization = new Visualization();
            server = new UDPServer();
            gazeDataRaw = new GTGazeData();
            gazeDataSmoothed = new GTGazeData();
            gazeDazaExtended = new GTExtendedData();
            processingDone = true;
            timerCalibrationDelay = new DispatcherTimer();
            timerCalibrationDelay.Interval = TimeSpan.FromMilliseconds(calibrationDelayMilliseconds);
            timerCalibrationDelay.Tick += TimerCalibrationTick;
            logGaze = new Logger();
            logGaze.Server = server; // Used to send messages back to client (log start/stop etc.)
            log.Info( "Looking up LoggingEnabled in FileSettings" );
            logGaze.IsEnabled = Settings.Instance.FileSettings.LoggingEnabled;

            log.Info( "Setting RecalibrationAvailableHandler" );
            recalibration.RecalibrationAvailable += new Recalibration.RecalibrationAvailableHandler( recalibration_RecalibrationAvailable );
            //recalibration.OnRecalibrationAvailable +=new Recalibration.RecalibrationAvailable(recalibration_OnRecalibrationAvailable);
            Settings.Instance.Processing.PropertyChanged += ProcessingSettingsPropertyChanged;
            timerCalibrationDelay.Tick += TimerCalibrationTick;

            if ( GTHardware.Camera.Instance.Device != null )
            {
                log.Info( "Setting GTHardware device OnImage EventHandler" );
                GTHardware.Camera.Instance.Device.OnImage += new EventHandler<GTHardware.Cameras.ImageEventArgs>( Device_OnImage );
            }

            log.Info("Completed constructing Tracker");
        }
 public void StartRecalibration(Calibration calib)
 {
     CopyCorners(calib);
     recalibrating = true;
 }