private void doLocalization(FaceRecognitionTask task)
        {
            task.prepareLocalization();
            //retrieve from the Config-file if the student algorithms should be used (if not set, use default)

            task.executeLocalizationStep1(("false".Equals(ConfigManager.GetSetting("step2_1UsesDefault")) ? true : false));
            log("Localization step 1: successful!");
            pictureBox4.Image = task.localizationDebug;

            task.executeLocalizationStep2(("false".Equals(ConfigManager.GetSetting("step2_2UsesDefault")) ? true : false));
            log("Localization step 2: successful!");
            pictureBox4.Image = task.localizationDebug;

            task.executeLocalizationStep3(("false".Equals(ConfigManager.GetSetting("step2_3UsesDefault")) ? true : false));
            log("Localization step 3: successful!");
            pictureBox4.Image = task.localizationDebug;


            task.executeLocalizationStep4(("false".Equals(ConfigManager.GetSetting("step2_4UsesDefault")) ? true : false));
            log("Localization step 4: successful!");
            pictureBox4.Image = task.localizationDebug;

            task.executeLocalizationStep5(("false".Equals(ConfigManager.GetSetting("step2_5UsesDefault")) ? true : false));
            log("Localization step 5: successful!");
            pictureBox4.Image = task.localizationDebug;
        }
        private double[] doFaceRecognitionTask(Image image)
        {
            //retrieve from the Config-file if the student image shell should be used (if not set, use default)
            FaceRecognitionTask.setImageImplementation(("false".Equals(ConfigManager.GetSetting("shellUsesDefault")) ? true : false));
            FaceRecognitionTask task = new FaceRecognitionTask(new Bitmap(image));


            try {
                doPreProcessing(task);

                doLocalization(task);

                doExtraction(task);

                if (!task.executePostProcessing())
                {
                    throw new FaceRecognitionTask.FaceRecognitionException("Post-processing: failed!");
                }

                if (!task.executeRepresentation())
                {
                    throw new FaceRecognitionTask.FaceRecognitionException("Representation: failed!");
                }
                else
                {
                    return(task.getFacialParameters());
                }
            } catch (FaceRecognitionTask.FaceRecognitionException e) {
                log("Exception during face recognition:");
                log(e.Message);
            } finally {
                task.dispose();
            }
            return(null);
        }
        private void doPreProcessing(FaceRecognitionTask task)
        {
            //retrieve from the Config-file if the student algorithms should be used (if not set, use default)

            task.executePreProcessingStep1(("false".Equals(ConfigManager.GetSetting("step1_1UsesDefault")) ? true : false));
            log("PreProcessing step 1: successful!");

            task.executePreProcessingStep2(("false".Equals(ConfigManager.GetSetting("step1_2UsesDefault")) ? true : false));
            log("PreProcessing step 2: successful!");
            pictureBox2.Image = task.preProcessing2;

            task.executePreProcessingStep3(("false".Equals(ConfigManager.GetSetting("step1_3UsesDefault")) ? true : false));
            log("PreProcessing step 3: successful!");

            task.executePreProcessingStep4(("false".Equals(ConfigManager.GetSetting("step1_4UsesDefault")) ? true : false));
            log("PreProcessing step 4: successful!");
            pictureBox3.Image = task.preProcessing4;
        }
Exemple #4
0
        //using this you can select a different TestSet-file
        private void browseButton_Click(object sender, EventArgs e)
        {
            FileDialog fileDialog = new OpenFileDialog();

            fileDialog.Filter       = "All Types|*.*";
            fileDialog.AddExtension = true;

            Console.WriteLine("::::" + ConfigManager.GetSetting("testSetPath"));

            if (fileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                ConfigManager.UpdateSetting("testSetPath", fileDialog.FileName);
                TestsetManagerForm_Load(null, null);
                fileDialog.RestoreDirectory = true;
            }

            //loadItemsIntoListBox();
        }
Exemple #5
0
        private void TestsetManagerForm_Load(object sender, EventArgs e)
        {
            string testSetPath = string.Empty;

            testSetPath = ConfigManager.GetSetting("testSetPath");
            //Console.WriteLine("load ...");

            //read test set
            if (oldTestSet == null)
            {
                //Console.WriteLine("hit");
                oldTestSet     = TestSetFile.readFromFile();
                currentTestSet = (TestSetFile)oldTestSet.Clone();
            }

            //display test set
            loadItemsIntoListBox();
        }
        private void executeFaceRecognition()
        {
            //array containing the 16 facial parameters resulting from the program
            double[] facialParamters = doFaceRecognitionTask(mainPictureBox.Image);

            //When the algorithm is unsuccesful, the facial parameters can be null
            if (facialParamters != null)
            {
                //Gezicht inscannen
                if (scanRadioButton.Checked == true)
                {
                    //retrieve the TestSet-file location, if it doesn't exist create it and save the (new) path in the config-file
                    if ((ConfigManager.GetSetting("testSetPath") != null || ConfigManager.GetSetting("testSetPath") != ""))
                    {
                        TestSetFile tsf     = TestSetFile.readFromFile();
                        string      imgPath = saveImageToTestSetDir(mainPictureBox.Image, (nameTextBox.Text == "" ? "<unknown>" : nameTextBox.Text));
                        tsf.testSets.Add(new TestSet((nameTextBox.Text == "" ? "<unknown>" : nameTextBox.Text), facialParamters, imgPath));
                        tsf.writeToFile();

                        log(imgPath);
                        log("inscannen succesvol.");
                    }
                }

                //Gezicht vergelijken
                else if (recognizeRadioButton.Checked == true || sequenceRadioButton.Checked == true)
                {
                    //retrieve the TestSet-file location form the config-file, if it doesn't exist do nothing
                    if ((ConfigManager.GetSetting("testSetPath") != null || ConfigManager.GetSetting("testSetPath") != ""))
                    {
                        string bestMatchName       = "";
                        double bestMatchDifference = 999;
                        string bestMatchPath       = "";

                        //compare the facial parameters to each item in the TestSet-file
                        TestSetFile tsf = TestSetFile.readFromFile();
                        foreach (TestSet ts in tsf.testSets)
                        {
                            double difference = 0;
                            for (int i = 0; i < ts.Parameters.Length; i++)
                            {
                                difference += Math.Abs(ts.Parameters[i] - facialParamters[i]);
                            }
                            //the representation is currently compared by the average difference in values
                            difference /= facialParamters.Length;

                            if (difference < bestMatchDifference)
                            {
                                bestMatchDifference = difference;
                                bestMatchName       = ts.Name;
                                bestMatchPath       = ts.ImagePath;
                            }
                        }
                        if (tsf.testSets.Count < 1 || bestMatchPath == null)
                        {
                            //Test set is empty!
                            log("TestSet is leeg. Scan eerst een aantal gezichten in! ");
                        }
                        else
                        {
                            resultPictureBox.Image = new Bitmap(bestMatchPath);
                            log("Best match is: " + bestMatchName + "  (gemiddeld verschil:" + bestMatchDifference + ")");
                        }
                    }
                    else
                    {
                        log("Testset-file bestaat niet of is niet gevonden.");
                    }
                }

                for (int i = 0; i < facialParamters.Length; i++)
                {
                    //uncomment if you want to print the found facial parameters in the feedbackTextBox
                    //log("param#" + (i + 1) + ": " + facialParamters[i]);
                }
            }
            else
            {
                log("Geen facial parameters beschikbaar.");
                log("Match berekenen is mislukt.");
            }
        }
Exemple #7
0
        private void loadOptions()
        {
            bool shellUsesDefault = true;

            bool step1_1UsesDefault = true;
            bool step1_2UsesDefault = true;
            bool step1_3UsesDefault = true;
            bool step1_4UsesDefault = true;

            bool step2_1UsesDefault = true;
            bool step2_2UsesDefault = true;
            bool step2_3UsesDefault = true;
            bool step2_4UsesDefault = true;
            bool step2_5UsesDefault = true;

            bool step3_1UsesDefault = true;
            bool step3_2UsesDefault = true;
            bool step3_3UsesDefault = true;

            //attempt to retrieve all the parameters from the config-file, xxxUsesDefault is true by default
            //unless the config-file has different information.

            shellUsesDefault = ("false".Equals(ConfigManager.GetSetting("shellUsesDefault")) ? false : true);

            step1_1UsesDefault = ("false".Equals(ConfigManager.GetSetting("step1_1UsesDefault")) ? false : true);
            step1_2UsesDefault = ("false".Equals(ConfigManager.GetSetting("step1_2UsesDefault")) ? false : true);
            step1_3UsesDefault = ("false".Equals(ConfigManager.GetSetting("step1_3UsesDefault")) ? false : true);
            step1_4UsesDefault = ("false".Equals(ConfigManager.GetSetting("step1_4UsesDefault")) ? false : true);

            step2_1UsesDefault = ("false".Equals(ConfigManager.GetSetting("step2_1UsesDefault")) ? false : true);
            step2_2UsesDefault = ("false".Equals(ConfigManager.GetSetting("step2_2UsesDefault")) ? false : true);
            step2_3UsesDefault = ("false".Equals(ConfigManager.GetSetting("step2_3UsesDefault")) ? false : true);
            step2_4UsesDefault = ("false".Equals(ConfigManager.GetSetting("step2_4UsesDefault")) ? false : true);
            step2_5UsesDefault = ("false".Equals(ConfigManager.GetSetting("step2_5UsesDefault")) ? false : true);

            step3_1UsesDefault = ("false".Equals(ConfigManager.GetSetting("step3_1UsesDefault")) ? false : true);
            step3_2UsesDefault = ("false".Equals(ConfigManager.GetSetting("step3_2UsesDefault")) ? false : true);
            step3_3UsesDefault = ("false".Equals(ConfigManager.GetSetting("step3_3UsesDefault")) ? false : true);

            //ImageShells
            radioButtonShellDefault.Checked = shellUsesDefault;
            radioButtonShellStudent.Checked = !shellUsesDefault;

            //Step 1
            radioButton1D1.Checked = step1_1UsesDefault;
            radioButton1S1.Checked = !step1_1UsesDefault;

            radioButton1D2.Checked = step1_2UsesDefault;
            radioButton1S2.Checked = !step1_2UsesDefault;

            radioButton1D3.Checked = step1_3UsesDefault;
            radioButton1S3.Checked = !step1_3UsesDefault;

            radioButton1D4.Checked = step1_4UsesDefault;
            radioButton1S4.Checked = !step1_4UsesDefault;

            //Step 2
            radioButton2D1.Checked = step2_1UsesDefault;
            radioButton2S1.Checked = !step2_1UsesDefault;

            radioButton2D2.Checked = step2_2UsesDefault;
            radioButton2S2.Checked = !step2_2UsesDefault;

            radioButton2D3.Checked = step2_3UsesDefault;
            radioButton2S3.Checked = !step2_3UsesDefault;

            radioButton2D4.Checked = step2_4UsesDefault;
            radioButton2S4.Checked = !step2_4UsesDefault;

            radioButton2D5.Checked = step2_5UsesDefault;
            radioButton2S5.Checked = !step2_5UsesDefault;

            //Step 3
            radioButton3D1.Checked = step3_1UsesDefault;
            radioButton3S1.Checked = !step3_1UsesDefault;

            radioButton3D2.Checked = step3_2UsesDefault;
            radioButton3S2.Checked = !step3_2UsesDefault;

            radioButton3D3.Checked = step3_3UsesDefault;
            radioButton3S3.Checked = !step3_3UsesDefault;
        }