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; }
//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(); }
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."); } }
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; }