예제 #1
0
        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;
            }
        }
예제 #2
0
        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;
            }
        }
예제 #3
0
        } /* 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 */
예제 #4
0
        } /* 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 */
예제 #5
0
        } /* 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 */