Exemplo n.º 1
0
        private void databaseAddNewAnnotation(AnnoScheme.TYPE annoType)
        {
            AnnoList annoList = new AnnoList();

            annoList.Meta.Role = DatabaseHandler.LoadRoles(null);
            if (annoList.Meta.Role == null)
            {
                return;
            }

            string annoScheme = DatabaseHandler.SelectAnnotationScheme(null);

            if (annoScheme == null)
            {
                return;
            }

            annoList.Scheme = DatabaseHandler.GetAnnotationScheme(annoScheme, annoType);
            annoList.Scheme.Labels.Add(new AnnoScheme.Label("GARBAGE", Colors.Black));

            IMongoDatabase database = DatabaseHandler.Database;

            ObjectId annotatid = DatabaseHandler.GetObjectID(database, DatabaseDefinitionCollections.Annotators, "name", Properties.Settings.Default.MongoDBUser);

            annoList.Meta.Annotator         = Properties.Settings.Default.MongoDBUser;
            annoList.Meta.AnnotatorFullName = DatabaseHandler.FetchDBRef(database, DatabaseDefinitionCollections.Annotators, "fullname", annotatid);
            addAnnoTier(annoList);
            control.annoListControl.editComboBox.SelectedIndex = 0;
        }
        private void Edit_Click(object sender, RoutedEventArgs e)
        {
            Brush  col1 = null;
            Brush  col2 = null;
            string sr   = null;
            string min  = null;
            string max  = null;

            AnnoScheme a = DatabaseHandler.GetAnnotationScheme(DataBaseResultsBox.SelectedItem.ToString(), annoList.Scheme.Type);

            AnnoScheme.TYPE annoType = a.Type;

            col1 = new SolidColorBrush(a.MinOrBackColor);

            if (annoType == AnnoScheme.TYPE.DISCRETE)
            {
                usedlabels = new HashSet <AnnoScheme.Label>();

                foreach (AnnoScheme.Label item in a.Labels)
                {
                    bool detected = false;
                    foreach (AnnoScheme.Label p in usedlabels)
                    {
                        if (p.Name == item.Name)
                        {
                            detected = true;
                        }
                    }

                    if (detected == false)
                    {
                        usedlabels.Add(item);
                    }
                }
            }
            else if (annoType == AnnoScheme.TYPE.FREE)
            {
                col1 = new SolidColorBrush(a.MinOrBackColor);
            }
            else if (annoType == AnnoScheme.TYPE.CONTINUOUS)
            {
                col2 = new SolidColorBrush(a.MaxOrForeColor);
                sr   = a.SampleRate.ToString();
                min  = a.MinScore.ToString();
                max  = a.MaxScore.ToString();
            }

            storeAnnotationSchemetoDatabase(a.Name, usedlabels, annoType, col1, col2, sr, min, max);
        }
Exemplo n.º 3
0
        private void OkButton_Click(object sender, RoutedEventArgs e)
        {
            DialogResult = true;

            if (cmlRadioButton.IsChecked == true)
            {
                CMLScheme cmlScheme = (CMLScheme)cmlCombobox.SelectedItem;
                Scheme         = AnnoList.LoadfromFile(cmlScheme.Path).Scheme;
                LoadedFromFile = true;
            }
            else
            {
                AnnoScheme.TYPE annoType = AnnoScheme.TYPE.FREE;

                if (freeRadioButton.IsChecked == true)
                {
                    annoType = AnnoScheme.TYPE.FREE;
                }
                else if (discreteRadioButton.IsChecked == true)
                {
                    annoType = AnnoScheme.TYPE.DISCRETE;
                }
                else if (continuousRadioButton.IsChecked == true)
                {
                    annoType = AnnoScheme.TYPE.CONTINUOUS;
                }

                else if (pointRadioButton.IsChecked == true)
                {
                    annoType = AnnoScheme.TYPE.POINT;
                }

                Scheme.Type = annoType;

                if (Scheme.Type == AnnoScheme.TYPE.CONTINUOUS)
                {
                    Scheme.MinScore       = 0.0;
                    Scheme.MaxScore       = 1.0;
                    Scheme.MinOrBackColor = Defaults.Colors.GradientMin;
                    Scheme.MaxOrForeColor = Defaults.Colors.GradientMax;
                }
                else if (Scheme.Type == AnnoScheme.TYPE.POINT)
                {
                    Scheme.NumberOfPoints = 1;
                    Scheme.MaxOrForeColor = Colors.Green;
                }
            }
        }
Exemplo n.º 4
0
        public void geometricOverlayUpdate(AnnoListItem item, AnnoScheme.TYPE type, int pos = -1)
        {
            WriteableBitmap overlay = null;

            IMedia video = mediaList.GetFirstVideo();

            if (video != null)
            {
                overlay = video.GetOverlay();
            }
            else
            {
                return;
            }

            overlay.Lock();
            overlay.Clear();

            switch (type)
            {
            case AnnoScheme.TYPE.POINT:
                foreach (PointListItem p in item.Points)
                {
                    if (p.XCoord != -1 && p.YCoord != -1)
                    {
                        Color color = item.Color;
                        //color.A = 128;
                        overlay.FillEllipseCentered((int)p.XCoord, (int)p.YCoord, 1, 1, color);
                    }
                }
                break;

            case AnnoScheme.TYPE.POLYGON:
                break;

            case AnnoScheme.TYPE.GRAPH:
                break;

            case AnnoScheme.TYPE.SEGMENTATION:
                break;
            }

            overlay.Unlock();
        }
Exemplo n.º 5
0
        public AnnoTierNewSchemeWindow(double defaultSr)
        {
            InitializeComponent();

            Scheme = new AnnoScheme()
            {
                SampleRate = defaultSr
            };
            LoadedFromFile = false;

            string schemesDir = Properties.Settings.Default.CMLDirectory + "\\" +
                                Defaults.CML.SchemeFolderName + "\\";

            if (Directory.Exists(schemesDir))
            {
                foreach (string schemeDir in Directory.GetDirectories(schemesDir))
                {
                    foreach (string schemeFile in Directory.GetFiles(schemeDir, "*.annotation"))
                    {
                        AnnoScheme.TYPE type      = (AnnoScheme.TYPE)Enum.Parse(typeof(AnnoScheme.TYPE), System.IO.Path.GetFileName(schemeDir).ToUpper());
                        CMLScheme       cmlScheme = new CMLScheme()
                        {
                            Path = schemeFile, Name = System.IO.Path.GetFileNameWithoutExtension(schemeFile), Type = type
                        };
                        cmlCombobox.Items.Add(cmlScheme);
                    }
                }
            }

            if (cmlCombobox.Items.Count > 0)
            {
                cmlCombobox.SelectedIndex = 0;
            }
            else
            {
                cmlRadioButton.Visibility = Visibility.Collapsed;
                cmlSeparator.Visibility   = Visibility.Collapsed;
            }
        }
 private void Button_Click_2(object sender, RoutedEventArgs e)
 {
     DialogResult = true;
     annotype     = AnnoScheme.TYPE.CONTINUOUS;
 }
 private void Button_Click_1(object sender, RoutedEventArgs e)
 {
     DialogResult = true;
     annotype     = AnnoScheme.TYPE.DISCRETE;
 }
        public DatabaseAnnoSchemeWindow(string name = null, HashSet <AnnoScheme.Label> _usedlabels = null, AnnoScheme.TYPE isDiscrete = AnnoScheme.TYPE.DISCRETE, Brush mincolor = null, Brush maxcolor = null, string samplerate = null, string min = null, string max = null)
        {
            InitializeComponent();
            scheme_colorpickermin.SelectedColor = Colors.Blue;
            scheme_colorpickermax.SelectedColor = Colors.Red;

            if (isDiscrete == AnnoScheme.TYPE.DISCRETE || isDiscrete == AnnoScheme.TYPE.FREE)
            {
                scheme_colorpickermin.SelectedColor = Colors.LightYellow;
            }
            scheme_max.Text  = (1.0).ToString();
            scheme_min.Text  = (0.0).ToString();
            scheme_fps.Text  = (25).ToString();
            scheme_name.Text = "NewAnnotationType";

            this.usedlabels = _usedlabels;

            labelcolors = new List <AnnoScheme.Label>();

            if (name != null)
            {
                scheme_name.Text = name;
            }

            if (isDiscrete == AnnoScheme.TYPE.DISCRETE)
            {
                scheme_type.SelectedIndex = 0;
            }
            else if (isDiscrete == AnnoScheme.TYPE.FREE)
            {
                scheme_type.SelectedIndex = 1;
            }
            else if (isDiscrete == AnnoScheme.TYPE.CONTINUOUS)
            {
                scheme_type.SelectedIndex = 2;
            }

            if (mincolor != null)
            {
                scheme_colorpickermin.SelectedColor = (mincolor as SolidColorBrush).Color;
            }
            if (maxcolor != null)
            {
                scheme_colorpickermax.SelectedColor = (maxcolor as SolidColorBrush).Color;
            }
            if (samplerate != null)
            {
                scheme_fps.Text = samplerate;
            }
            if (min != null)
            {
                scheme_min.Text = min;
            }
            if (max != null)
            {
                scheme_max.Text = max;
            }

            if (usedlabels != null)
            {
                items = new List <AnnoScheme.Label>();
                foreach (AnnoScheme.Label lp in usedlabels)
                {
                    items.Add(new AnnoScheme.Label(lp.Name, lp.Color)
                    {
                        Name = lp.Name, Color = lp.Color
                    });
                    labelcolors.Add(new AnnoScheme.Label(lp.Name, lp.Color));
                }

                AnnotationResultBox.ItemsSource = items;
            }
        }
        private void storeAnnotationSchemetoDatabase(string name = null, HashSet <AnnoScheme.Label> _usedlabels = null, AnnoScheme.TYPE isDiscrete = AnnoScheme.TYPE.DISCRETE, Brush col1 = null, Brush col2 = null, string sr = null, string min = null, string max = null)
        {
            DatabaseAnnoSchemeWindow dbas = new DatabaseAnnoSchemeWindow(name, usedlabels, annoList.Scheme.Type, col1, col2, sr, min, max);

            dbas.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            dbas.ShowDialog();

            if (dbas.DialogResult == true)
            {
                DataBaseResultsBox.Items.Remove(name);
                DataBaseResultsBox.Items.Add(dbas.GetName());
                DataBaseResultsBox.SelectedItem = dbas.GetName();

                var database = mongo.GetDatabase(Properties.Settings.Default.DatabaseName);
                var builder  = Builders <BsonDocument> .Filter;
                var filter   = builder.Eq("name", DataBaseResultsBox.SelectedItem.ToString());

                BsonDocument document         = new BsonDocument();
                BsonElement  documentName     = new BsonElement("name", dbas.GetName());
                BsonElement  documentType     = new BsonElement("type", dbas.GetType().ToUpper());
                BsonElement  documentIsValid  = new BsonElement("isValid", true);
                BsonElement  documentSr       = new BsonElement("sr", dbas.GetFps());
                BsonElement  documentMin      = new BsonElement("min", dbas.GetMin());
                BsonElement  documentMax      = new BsonElement("max", dbas.GetMax());
                BsonElement  documentMinColor = new BsonElement("min_color", dbas.GetColorMin());
                BsonElement  documentColor    = new BsonElement("color", dbas.GetColorMin());
                BsonElement  documentMaxColor = new BsonElement("max_color", dbas.GetColorMax());

                int index = 0;
                List <AnnoScheme.Label> labelList = dbas.GetLabelColorPairs();

                BsonArray labels = new BsonArray();

                foreach (AnnoScheme.Label label in labelList)
                {
                    labels.Add(new BsonDocument()
                    {
                        { "id", index++ }, { "name", label.Name }, { "color", label.Color.ToString() }, { "isValid", true }
                    });
                }

                document.Add(documentName);
                document.Add(documentType);

                if (dbas.GetType().ToUpper() == "DISCRETE")
                {
                    document.Add(documentColor);
                    document.Add("labels", labels);
                }
                else if (dbas.GetType().ToUpper() == "FREE")
                {
                    document.Add(documentColor);
                }
                else
                {
                    document.Add(documentSr);
                    document.Add(documentMin);
                    document.Add(documentMax);
                    document.Add(documentMinColor);
                    document.Add(documentMaxColor);
                }
                document.Add(documentIsValid);

                var           coll     = database.GetCollection <BsonDocument>(DatabaseDefinitionCollections.Schemes);
                var           filterup = builder.Eq("name", name);
                UpdateOptions uo       = new UpdateOptions();
                uo.IsUpsert = true;
                var result = coll.ReplaceOne(filterup, document, uo);

                // coll.InsertOne(d);
            }
        }
Exemplo n.º 10
0
        public static AnnoScheme GetAnnotationScheme(string annoName, AnnoScheme.TYPE annoType)
        {
            MongoClient    mongo    = new MongoClient(ServerConnectionString);
            IMongoDatabase database = mongo.GetDatabase(Properties.Settings.Default.DatabaseName);

            AnnoScheme scheme = new AnnoScheme();

            scheme.Type = annoType;

            var annoSchemes = database.GetCollection <BsonDocument>(DatabaseDefinitionCollections.Schemes);
            var builder     = Builders <BsonDocument> .Filter;

            FilterDefinition <BsonDocument> annoSchemeFilter = builder.Eq("name", annoName) & builder.Eq("type", annoType.ToString());
            BsonDocument annoSchemeDocument = null;

            try
            {
                annoSchemeDocument = annoSchemes.Find(annoSchemeFilter).Single();
                if (annoSchemeDocument["type"].ToString() == annoType.ToString())
                {
                    scheme.Name = annoSchemeDocument["name"].ToString();
                    if (scheme.Type == AnnoScheme.TYPE.CONTINUOUS)
                    {
                        scheme.MinScore       = annoSchemeDocument["min"].ToDouble();
                        scheme.MaxScore       = annoSchemeDocument["max"].ToDouble();
                        scheme.SampleRate     = annoSchemeDocument["sr"].ToDouble();
                        scheme.MinOrBackColor = (Color)ColorConverter.ConvertFromString(annoSchemeDocument["min_color"].ToString());
                        scheme.MaxOrForeColor = (Color)ColorConverter.ConvertFromString(annoSchemeDocument["max_color"].ToString());
                    }
                    else if (scheme.Type == AnnoScheme.TYPE.DISCRETE)
                    {
                        scheme.MinOrBackColor = (Color)ColorConverter.ConvertFromString(annoSchemeDocument["color"].ToString());
                        BsonArray schemeLabelsArray = annoSchemeDocument["labels"].AsBsonArray;
                        string    SchemeLabel       = "";
                        string    SchemeColor       = "#000000";
                        for (int j = 0; j < schemeLabelsArray.Count; j++)
                        {
                            try
                            {
                                if (schemeLabelsArray[j]["isValid"].AsBoolean == true)
                                {
                                    SchemeLabel = schemeLabelsArray[j]["name"].ToString();
                                    SchemeColor = schemeLabelsArray[j]["color"].ToString();
                                    AnnoScheme.Label lcp = new AnnoScheme.Label(schemeLabelsArray[j]["name"].ToString(), (Color)ColorConverter.ConvertFromString(schemeLabelsArray[j]["color"].ToString()));
                                    scheme.Labels.Add(lcp);
                                }
                            }
                            catch
                            {
                                SchemeLabel = schemeLabelsArray[j]["name"].ToString();
                                SchemeColor = schemeLabelsArray[j]["color"].ToString();
                                AnnoScheme.Label lcp = new AnnoScheme.Label(schemeLabelsArray[j]["name"].ToString(), (Color)ColorConverter.ConvertFromString(schemeLabelsArray[j]["color"].ToString()));
                                scheme.Labels.Add(lcp);
                            }
                        }
                    }
                    else if (scheme.Type == AnnoScheme.TYPE.FREE)
                    {
                        scheme.MinOrBackColor = (Color)ColorConverter.ConvertFromString(annoSchemeDocument["color"].ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                MessageTools.Warning(ex.ToString());
            }

            return(scheme);
        }
Exemplo n.º 11
0
        private void navigatorNewAnno_Click(object sender, RoutedEventArgs e)
        {
            if (Time.TotalDuration > 0)
            {
                AnnoTierNewSchemeWindow dialog = new AnnoTierNewSchemeWindow();
                dialog.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                dialog.ShowDialog();

                if (dialog.DialogResult == true)
                {
                    AnnoScheme.TYPE annoType = dialog.Result();

                    if (DatabaseLoaded)
                    {
                        databaseAddNewAnnotation(annoType);
                    }
                    else
                    {
                        if (annoType == AnnoScheme.TYPE.FREE)
                        {
                            AnnoTierNewFreeSchemeWindow dialog2 = new AnnoTierNewFreeSchemeWindow();
                            dialog2.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                            dialog2.ShowDialog();

                            if (dialog2.DialogResult == true)
                            {
                                AnnoScheme annoScheme = dialog2.Result;
                                AnnoList   annoList   = new AnnoList()
                                {
                                    Scheme = annoScheme
                                };
                                addAnnoTier(annoList);
                            }
                        }
                        else if (annoType == AnnoScheme.TYPE.DISCRETE)
                        {
                            AnnoTierNewDiscreteSchemeWindow dialog2 = new AnnoTierNewDiscreteSchemeWindow();
                            dialog2.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                            dialog2.ShowDialog();

                            if (dialog2.DialogResult == true)
                            {
                                AnnoList annoList = dialog2.GetAnnoList();
                                addAnnoTier(annoList);
                            }
                        }
                        else if (annoType == AnnoScheme.TYPE.CONTINUOUS)
                        {
                            double defaultSr = 25.0;

                            foreach (IMedia m in mediaList.Medias)
                            {
                                if (m.IsVideo())
                                {
                                    defaultSr = m.GetSampleRate();
                                    break;
                                }
                            }

                            AnnoTierNewContinuousSchemeWindow.Input input = new AnnoTierNewContinuousSchemeWindow.Input()
                            {
                                SampleRate = defaultSr, MinScore = 0.0, MaxScore = 1.0, MinColor = Colors.LightBlue, MaxColor = Colors.Red
                            };
                            AnnoTierNewContinuousSchemeWindow dialog2 = new AnnoTierNewContinuousSchemeWindow(input);
                            dialog2.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                            dialog2.ShowDialog();
                            if (dialog2.DialogResult == true)
                            {
                                AnnoScheme annoScheme = dialog2.Result;
                                AnnoList   annoList   = new AnnoList()
                                {
                                    Scheme = annoScheme
                                };
                                addAnnoTier(annoList);
                            }
                        }
                    }
                }
            }
            else
            {
                MessageTools.Warning("Nothing to annotate, load some data first.");
            }
        }