private emCEDDAlgo GetSelectedCEDDAlgo() { emCEDDAlgo selectAlgo = emCEDDAlgo.BKTree; if (!cmbCeddAlgoType.CheckAccess()) { cmbCeddAlgoType.Dispatcher.Invoke((Action)(() => selectAlgo = (emCEDDAlgo)cmbCeddAlgoType.SelectedIndex)); } else { if (cmbCeddAlgoType.SelectedIndex > -1) { selectAlgo = (emCEDDAlgo)cmbCeddAlgoType.SelectedIndex; } } return(selectAlgo); }
private void QueryImage(string queryImagePath) { try { ImageList.ItemsSource = null; if (!string.IsNullOrEmpty(queryImagePath)) { object setting = null; QueryImageFullPath = queryImagePath; IImageQuery imageQuery = null; switch (SelectedAlgo) { case emAlgo.Undetermined: MessageBox.Show("Please select Algorithm for indexing"); return; case emAlgo.pHash: imageQuery = new pHashQuery(); QueryBinaryAlgo(imageQuery, queryImagePath, setting); break; case emAlgo.RBGHistogram: imageQuery = new RGBProjectQuery(); QueryBinaryAlgo(imageQuery, queryImagePath, setting); break; case emAlgo.bhattacharyya: imageQuery = new BhattacharyyaQuery(); QueryBinaryAlgo(imageQuery, queryImagePath, setting); break; case emAlgo.CEDD: emCEDDAlgo selectedCeddAlgo = GetSelectedCEDDAlgo(); if (selectedCeddAlgo == emCEDDAlgo.BKTree) { imageQuery = new CEDDQuery2(); } else { imageQuery = new CEDDQuery(); } int goodMatchDistance = nudCEDDGoodMatchThreshold.Value.Value; QueryBinaryAlgo(imageQuery, queryImagePath, goodMatchDistance); break; case emAlgo.SURF: case emAlgo.AccordSurf: case emAlgo.Locate: QueryBgWorker.RunWorkerAsync(); break; default: MessageBox.Show("Algorithm not currently supported"); return; } } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error in Image Query", MessageBoxButton.OK, MessageBoxImage.Error); } }
private void IndexBgWorker_DoWork(object sender, DoWorkEventArgs e) { try { WriteIndexStatus("Indexing..."); IIndexer indexer = null; object setting = null; SurfSettings surfSetting; LocateSettings locateSetting; switch (SelectedAlgo) { case emAlgo.Undetermined: MessageBox.Show("Please select Algorithm for indexing"); return; case emAlgo.pHash: indexer = new PHashIndexer(); BinaryAlgoIndexing(indexer, setting); break; case emAlgo.RBGHistogram: indexer = new RGBProjectionIndexer(); BinaryAlgoIndexing(indexer, setting); break; case emAlgo.bhattacharyya: indexer = new BhattacharyyaIndexer(); BinaryAlgoIndexing(indexer, setting); break; case emAlgo.CEDD: emCEDDAlgo selectedCeddAlgo = GetSelectedCEDDAlgo(); if (selectedCeddAlgo == emCEDDAlgo.BKTree) { indexer = new CEDDIndexer2(); } else { indexer = new CEDDIndexer(); } BinaryAlgoIndexing(indexer, setting); break; case emAlgo.SURF: surfSetting = (e.Argument as SurfSettings); if (surfSetting == null) { MessageBox.Show("SurfSetting not supplied"); return; } ; SurfAlgoIndexing(surfSetting); break; case emAlgo.AccordSurf: surfSetting = (e.Argument as SurfSettings); if (surfSetting == null) { MessageBox.Show("SurfSetting not supplied"); return; } ; AccordSurfAlgoIndexing(surfSetting); break; case emAlgo.Locate: locateSetting = (e.Argument as LocateSettings); LocateAlgoIndexing(locateSetting); break; default: MessageBox.Show("Algorithm not currently supported"); return; } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); throw; } }