Exemple #1
0
    /// <summary> Start a new calibration, based on the parameters set via the inspector. </summary>
    /// <param name="whichFingers"></param>
    /// <returns></returns>
    public bool StartCalibration(bool[] whichFingers = null)
    {
        if (this.GloveReady())
        {
            if (whichFingers == null)
            {
                whichFingers = new bool[] { false, true, true, true, true };
            }

            CalibrationAlgorithm algorithm = null;
            switch (this.calibrationAlgorithm)
            {
            case Algorithm.PointsOnACircle2D: algorithm = new Circle2D(whichFingers); break;
            }
            if (algorithm != null)
            {
                CalibrationMethod method = null;
                switch (this.calibrationMethod)
                {
                case CalibrationType.Manual: method = new ManualCalibration(algorithm, this.async); break;

                case CalibrationType.SemiAutomatic: method = new SemiAutoCalibration(algorithm, this.async, 12, 0.6f, 5); break;

                case CalibrationType.Automatic: method = new AutoCalibration(algorithm, this.async); break;
                }
                if (method != null)
                {
                    this.glove.StartCalibration(method);
                    this.calibrating = true;
                }
            }
        }
        return(false);
    }
Exemple #2
0
        /// <summary>
        /// Calls the correct calibration method.
        /// </summary>
        /// <param name="method">
        /// One of the calibraton methods.
        /// </param>
        private void Calibrate(CalibrationMethod method)
        {
            switch (METState.Current.remoteOrMobile)
            {
            case METState.RemoteOrMobile.RemoteEyeTracking:
                this.CalibrateRemote(method);
                break;

            case METState.RemoteOrMobile.MobileEyeTracking:
                this.CalibrateMobile(method);
                break;
            }
        }
Exemple #3
0
        private void CalibrateRemote(CalibrationMethod method)
        {
            METState.Current.EyeToDisplay_Mapping.GazeErrorX        = 0;
            METState.Current.EyeToDisplay_Mapping.GazeErrorY        = 0;
            METState.Current.EyeToDisplay_Mapping.CalibrationTarget = 0;
            METState.Current.EyeToDisplay_Mapping.Calibrated        = false;

            switch (method)
            {
            case CalibrationMethod.Point4:
                METState.Current.EyeToDisplay_Mapping.CalibrationType = Calibration.calibration_type.calib_Homography;
                METState.Current.remoteCalibration = new RemoteCalibration(2, 2, this.presentationScreen.Bounds, RemoteCalibration.Task.Calib_Display);
                break;

            case CalibrationMethod.Point9:
                METState.Current.EyeToDisplay_Mapping.CalibrationType = Calibration.calibration_type.calib_Polynomial;
                METState.Current.remoteCalibration = new RemoteCalibration(3, 3, this.presentationScreen.Bounds, RemoteCalibration.Task.Calib_Display);
                break;
            }


            this.Writer.Write("CalibrationFinished");
        }
Exemple #4
0
        /// <summary>
        /// Calls calibration for mobile tracking mode
        /// </summary>
        /// <param name="method">
        /// One of the calibraton methods.
        /// </param>
        private void CalibrateMobile(CalibrationMethod method)
        {
            METState.Current.EyeToScene_Mapping.ScenePoints       = new List <AForge.Point>();
            METState.Current.EyeToScene_Mapping.GazeErrorX        = 0;
            METState.Current.EyeToScene_Mapping.GazeErrorY        = 0;
            METState.Current.EyeToScene_Mapping.CalibrationTarget = 0;
            METState.Current.EyeToScene_Mapping.Calibrated        = false;

            switch (method)
            {
            case CalibrationMethod.Point4:
                MessageBox.Show(
                    "Click on 4 points in the scene image while the user is looking at the corresponding points in the field of view");
                METState.Current.EyeToScene_Mapping.CalibrationType = Calibration.calibration_type.calib_Homography;
                break;

            case CalibrationMethod.Point9:
                MessageBox.Show(
                    "Click on 9 points in the scene image while the user is looking at the corresponding points in the field of view");
                METState.Current.EyeToScene_Mapping.CalibrationType = Calibration.calibration_type.calib_Polynomial;
                break;
            }
        }