public PredictionBreakDownDisplay(PicesDataBase _dbConn, PicesDataBaseImage _image, PicesRaster _raster, TrainingModel2 _trainingModel, PicesInstrumentData _instrumentData, /*!< Instrument data that goes with image, if null will read from database. */ PicesRunLog _runLog ) { if (_runLog == null) { runLog = new PicesRunLog(); } else { runLog = _runLog; } if (_image == null) { return; } fileName = _image.ImageFileName; instrumentData = _instrumentData; trainingModel = _trainingModel; PicesRaster raster = _raster; if (_dbConn != null) { if (raster == null) { raster = _dbConn.ImageFullSizeFind(fileName); } if (instrumentData == null) { instrumentData = _dbConn.InstrumentDataGetByScanLine(_image.SipperFileName, _image.TopLeftRow); } dbFeatureVector = _dbConn.FeatureDataRecLoad(fileName); } if (raster == null) { return; } //raster = raster.ConnectedComponent (); featureCalcImages = new PicesRasterList(); featureVector = new PicesFeatureVector(raster, fileName, featureCalcImages, runLog); if (instrumentData != null) { featureVector.AddInstrumentData(instrumentData); } InitializeComponent(); }
} /* LoadImageGrid */ private void UpdateDetailProbabilityDisplay(String fileName) { if (fileName == null) { return; } curSelImageFileName = fileName; String fullFileName = null; if ((fileName.Length > 1) && (fileName[1] == ':')) { fullFileName = fileName; } else { fullFileName = OSservices.AddSlash(rootDir) + fileName; } if (!File.Exists(fullFileName)) { String fn = OSservices.GetRootName(fileName) + ".bmp"; fullFileName = OSservices.LookForFile(fn, rootDir); } Prediction prediction = GetPrediction(fileName); // We need to call 'PredictProbabilities' twice. Once to get the intermediate images and the // second time to perform prediction using the FeatureVector that was used in the original // prediction. It has to be done this way because the version of 'PredictProbabilities' that // derives the FeatureVector from an image does not always have access of instrumentation data. PicesRasterList featureCalcImages = new PicesRasterList(); PicesPredictionList guesses2 = prediction.trainModel.PredictProbabilities(fullFileName, featureCalcImages); // Perform Prediction using original FeatureVector. PicesPredictionList guesses = prediction.trainModel.PredictProbabilities(prediction.fv); ImageFileName.Text = fileName; if (guesses == null) { return; } ClassificationProbabilities.Rows.Clear(); foreach (PicesPrediction p in guesses) { Object[] data = new Object[3]; data[0] = p.ClassName; data[1] = p.Probability; data[2] = p.Votes; ClassificationProbabilities.Rows.Add(data); } FeatureCalcImages.Rows.Clear(); if ((featureCalcImages == null) || (featureCalcImages.Count < 1)) { return; } for (int x = 0; x < featureCalcImages.Count; x++) { Object[] data = new Object[2]; data[0] = featureCalcImages[x].BuildBitmap(); data[1] = featureCalcImages[x].FileName; FeatureCalcImages.Rows.Add(data); } } /* UpdateDetailProbabilityDisplay */