Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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;
            }
        }