private void SelectClassButtom_Click(object sender, EventArgs e) { String rootDir = ""; PicesClassList activeClasses = null; if (ActiveTrainingLibraries.Model1() != null) { rootDir = ActiveTrainingLibraries.Model1().RootDir; activeClasses = ActiveTrainingLibraries.Model1().MLClasses(); } if (classes == null) { classes = dbConn.MLClassLoadList(); } SelectAPicesClass sapc = new SelectAPicesClass(classes, rootDir, activeClasses); if (!String.IsNullOrEmpty(ValidatedClassName.Text)) { sapc.SelectedClass = PicesClassList.GetUniqueClass(ValidatedClassName.Text, ""); } sapc.ShowDialog(this); if (sapc.SelectionMade && (sapc.SelectedClass != null)) { PicesClass validatdClass = sapc.SelectedClass; ValidatedClassName.Text = validatdClass.Name; image.ValidatedClass = validatdClass; dbConn.ImagesUpdateValidatedClass(image.ImageFileName, validatdClass); classUserValidatesAs = validatdClass; } }
private void BreakDownTrainingLibrary2Button_Click(object sender, EventArgs e) { if (ActiveTrainingLibraries.Model2() == null) { return; } if (ActiveTrainingLibraries.Model2().ModelType == TrainingModel2.ModelTypes.Dual) { PredictionBreakDownDisplayDual pbdd = new PredictionBreakDownDisplayDual(dbConn, image, raster, ActiveTrainingLibraries.Model2(), instrumentData, runLog ); pbdd.ShowDialog(); pbdd = null; } else { PredictionBreakDownDisplay pbdd = new PredictionBreakDownDisplay(dbConn, image, raster, ActiveTrainingLibraries.Model2(), instrumentData, runLog); pbdd.ShowDialog(); pbdd = null; } }
} /* LoadPlanktonImage */ private void AddImageToTraningLibraries() { if (!ActiveTrainingLibraries.ModelsAreAvailable()) { MessageBox.Show("There are no selected Training Models to add Image to."); return; } if (image.ValidatedClass == null) { MessageBox.Show("No Validated Class Selected."); return; } TrainingModel2 tm1 = ActiveTrainingLibraries.Model1(); if (tm1 == null) { tm1 = ActiveTrainingLibraries.Model2(); } if (tm1 == null) { MessageBox.Show("No active training library specified."); return; } if (!tm1.IncludesClass(image.ValidatedClass)) { MessageBox.Show("Training Model[" + tm1.ModelName + "] does not include a definition for class[" + image.ValidatedClass.Name + "].", "ImageViewer.AddImageToTraningLibraries"); } else { try { tm1.AddImageToTrainingLibray(image.ImageFileName, raster, image.ValidatedClass, true); } catch (Exception e) { MessageBox.Show("Error adding image to TrainingModel2[" + tm1.ModelName + "]" + "\n\n" + e.ToString(), "ImageViewer.AddImageToTraningLibraries"); } } } /* AddImageToTraningLibraries */
} /* UpdatedataFields*/ private void MakePredictions() { if (!ActiveTrainingLibraries.ModelsAreAvailable()) { // Since there are NO training models loaded; there is no point doing the work for a prediction. return; } featureVector = dbConn.FeatureDataRecLoad(image); if (featureVector == null) { featureVector = new PicesFeatureVector(raster, image.ImageFileName, null, runLog); // Since we had to compute the FeatureDatya from the raster we now need to // get the instrument data that matches it. if (instrumentData != null) { featureVector.AddInstrumentData(instrumentData); } dbConn.FeatureDataInsertRow(image.SipperFileName, featureVector); } float esd = 0.0f; float eBv = 0.0f; float filledArea = image.PixelCount; float cropWidth = 3800.0f; // (3900.0f - 200.0f); float flowRate2 = 0.5f; if (featureVector != null) { filledArea = featureVector.FilledArea; } if (sipperFile != null) { scanRate = sipperFile.ScanRate; } esd = (float)(2.0 * Math.Sqrt(filledArea * (0.096 / cropWidth) * 1000.0 * (flowRate1 / sipperFile.ScanRate) * 1000.0 / 3.1415926)); eBv = (float)((4.0 / 3.0) * Math.PI * Math.Pow(Math.Sqrt(filledArea * (chamberWidth / cropWidth) * 1000 * (flowRate1 / scanRate) * 1000.0 / Math.PI), 3)); PicesPrediction model1Prediction1 = new PicesPrediction(null, 0, 0.0f); PicesPrediction model1Prediction2 = new PicesPrediction(null, 0, 0.0f); PicesPrediction model2Prediction1 = new PicesPrediction(null, 0, 0.0f); PicesPrediction model2Prediction2 = new PicesPrediction(null, 0, 0.0f); ActiveTrainingLibraries.MakePredictions(featureVector, ref model1Prediction1, ref model1Prediction2, ref model2Prediction1, ref model2Prediction2, runLog ); if (model1Prediction1 != null) { Lib1Pred1Class.Text = model1Prediction1.ClassName; Lib1Pred1Prob.Text = model1Prediction1.Probability.ToString("##0.00%"); Lib1Pred1Votes.Text = model1Prediction1.Votes.ToString("#,##0"); } if (model1Prediction2 != null) { Lib1Pred2Class.Text = model1Prediction2.ClassName; Lib1Pred2Prob.Text = model1Prediction2.Probability.ToString("##0.00%"); Lib1Pred2Votes.Text = model1Prediction2.Votes.ToString("#,##0"); } if (model2Prediction1 != null) { Lib2Pred1Class.Text = model2Prediction1.ClassName; Lib2Pred1Prob.Text = model2Prediction1.Probability.ToString("##0.00%"); Lib2Pred1Votes.Text = model2Prediction1.Votes.ToString("#,##0"); } if (model1Prediction2 != null) { Lib2Pred2Class.Text = model2Prediction2.ClassName; Lib2Pred2Prob.Text = model2Prediction2.Probability.ToString("##0.00%"); Lib2Pred2Votes.Text = model2Prediction2.Votes.ToString("#,##0"); } if (featureVector != null) { AreaMMSquare.Text = featureVector.AreaMMSquare.ToString("#,##0.000"); } ESD.Text = esd.ToString("#,##0.00"); EBv.Text = eBv.ToString("##0.0000"); return; } /* MakePredictions */
} /* PerformAllOperations */ private void MakePredictions() { pred1ClassName.Text = ""; pred2ClassName.Text = ""; BlobDetector bd = new BlobDetector(raster, 20); BlobList blobs = bd.ExtractBlobs(); if ((blobs == null) || (blobs.Count < 1)) { return; } Blob largestBlob = blobs.LocateLargestBlob(); if (largestBlob == null) { return; } byte[][] largestRaster = bd.ExtractedBlobImage(largestBlob); PicesRunLog runLog = new PicesRunLog(); PicesRaster picesRaster = new PicesRaster(largestRaster); //PicesPredictionList trainLibrary1Predictions = null; //PicesPredictionList trainLibrary2Predictions = null; //ActiveTrainingLibraries.MakePredictions (picesRaster, // instrumentData, // imageFileName, // ref trainLibrary1Predictions, // ref trainLibrary2Predictions, // runLog // ); picesRaster.FileName = imageFileName; PicesPrediction model1Prediction1 = new PicesPrediction(null, 0, 0.0f); PicesPrediction model1Prediction2 = new PicesPrediction(null, 0, 0.0f); PicesPrediction model2Prediction1 = new PicesPrediction(null, 0, 0.0f); PicesPrediction model2Prediction2 = new PicesPrediction(null, 0, 0.0f); ActiveTrainingLibraries.MakePredictions(picesRaster, ref model1Prediction1, ref model1Prediction2, ref model2Prediction1, ref model2Prediction2, runLog ); if (model1Prediction1 != null) { TrainLib1Name.Text = ActiveTrainingLibraries.Model1Name; pred1Prob.Text = model1Prediction1.Probability.ToString("p"); pred1ClassName.Text = model1Prediction1.ClassName; this.Text = model1Prediction1.ClassName; if (model1Prediction2 != null) { pred2Prob.Text = model1Prediction2.Probability.ToString("p"); pred2ClassName.Text = model1Prediction2.ClassName; } } if (model2Prediction1 != null) { TrainLib2Name.Text = ActiveTrainingLibraries.Model2Name; lib2Pred1Prob.Text = model2Prediction1.Probability.ToString("p"); lib2Pred1ClassName.Text = model2Prediction1.ClassName; if (model2Prediction2 != null) { lib2Pred2Prob.Text = model2Prediction2.Probability.ToString("p"); lib2Pred2ClassName.Text = model2Prediction2.ClassName; } } picesRaster = null; blobs.Dispose(); largestBlob.Dispose(); bd.Dispose(); bd = null; } /* MakePredictions */