Example #1
0
        // Add new glyph collection
        private void newToolStripMenuItem_Click(object sender, EventArgs e)
        {
            NewGlyphCollectionForm newCollectionForm = new NewGlyphCollectionForm(glyphDatabases.GetDatabaseNames( ));

            if (newCollectionForm.ShowDialog( ) == DialogResult.OK)
            {
                string name = newCollectionForm.CollectionName;
                int    size = newCollectionForm.GlyphSize;

                GlyphDatabase db = new GlyphDatabase(size);

                try
                {
                    glyphDatabases.AddGlyphDatabase(name, db);

                    // add new item to list view
                    ListViewItem lvi = glyphCollectionsList.Items.Add(name);
                    lvi.SubItems.Add(string.Format("{0}x{1}", size, size));
                    lvi.Name = name;
                }
                catch
                {
                    ShowErrorBox(string.Format("A glyph database with the name '{0}' already exists.", name));
                }
            }
        }
Example #2
0
 /// <summary>
 /// Initialises the GlyphDatabase and the GlyphRecogniser, used
 /// to detect any Glyphs in a given Bitmap image provided by the device used.
 /// </summary>
 /// <param name="windowHandle"></param>
 public GlyphsInput(String windowName)
     : base(windowName)
 {
     glyphDatabase = new GlyphDatabase(5);
     recognizer = new GlyphRecognizer(glyphDatabase);
     imageAvailable = false;
 }
        // Load information about databases and glyphs from XML reader
        public void Load( XmlTextReader xmlIn )
        {
            // read to the first node
            xmlIn.Read( );

            int startingDept = xmlIn.Depth;

            while ( ( xmlIn.Name == databaseTag ) && ( xmlIn.NodeType == XmlNodeType.Element ) && ( xmlIn.Depth >= startingDept ) )
            {
                string name = xmlIn.GetAttribute( nameAttr );
                int size = int.Parse( xmlIn.GetAttribute( sizeAttr ) );
                int count = int.Parse( xmlIn.GetAttribute( countAttr ) );

                // create new database and add it to collection
                GlyphDatabase db = new GlyphDatabase( size );
                AddGlyphDatabase( name, db );

                if ( count > 0 )
                {
                    // read all glyphs
                    for ( int i = 0; i < count; i++ )
                    {
                        // read to the next glyph node
                        xmlIn.Read( );

                        string glyphName = xmlIn.GetAttribute( nameAttr );
                        string glyphStrData = xmlIn.GetAttribute( dataAttr );

                        // create new glyph and add it database
                        Glyph glyph = new Glyph( glyphName, GlyphDataFromString( glyphStrData, size ) );
                        db.Add( glyph );

                        // read visualization params
                        GlyphVisualizationData visualization = new GlyphVisualizationData( Color.Red );

                        visualization.ImageName = xmlIn.GetAttribute( iconAttr );
                        visualization.ModelName = xmlIn.GetAttribute( modelAttr );

                        string colorStr = xmlIn.GetAttribute( colorAttr );

                        if ( colorStr != null )
                        {
                            string[] rgbStr = colorStr.Split( ',' );

                            visualization.Color = Color.FromArgb(
                                int.Parse( rgbStr[0] ), int.Parse( rgbStr[1] ), int.Parse( rgbStr[2] ) );
                        }

                        glyph.UserData = visualization;
                    }

                    // read to the end tag
                    xmlIn.Read( );
                }

                // read to the next node
                xmlIn.Read( );
            }
        }
        // Load information about databases and glyphs from XML reader
        public void Load(XmlTextReader xmlIn)
        {
            // read to the first node
            xmlIn.Read( );

            int startingDept = xmlIn.Depth;

            while ((xmlIn.Name == databaseTag) && (xmlIn.NodeType == XmlNodeType.Element) && (xmlIn.Depth >= startingDept))
            {
                string name  = xmlIn.GetAttribute(nameAttr);
                int    size  = int.Parse(xmlIn.GetAttribute(sizeAttr));
                int    count = int.Parse(xmlIn.GetAttribute(countAttr));

                // create new database and add it to collection
                GlyphDatabase db = new GlyphDatabase(size);
                AddGlyphDatabase(name, db);

                if (count > 0)
                {
                    // read all glyphs
                    for (int i = 0; i < count; i++)
                    {
                        // read to the next glyph node
                        xmlIn.Read( );

                        string glyphName    = xmlIn.GetAttribute(nameAttr);
                        string glyphStrData = xmlIn.GetAttribute(dataAttr);

                        // create new glyph and add it database
                        Glyph glyph = new Glyph(glyphName, GlyphDataFromString(glyphStrData, size));
                        db.Add(glyph);

                        // read visualization params
                        GlyphVisualizationData visualization = new GlyphVisualizationData(Color.Red);

                        visualization.ImageName = xmlIn.GetAttribute(iconAttr);
                        visualization.ModelName = xmlIn.GetAttribute(modelAttr);

                        string colorStr = xmlIn.GetAttribute(colorAttr);

                        if (colorStr != null)
                        {
                            string[] rgbStr = colorStr.Split(',');

                            visualization.Color = Color.FromArgb(
                                int.Parse(rgbStr[0]), int.Parse(rgbStr[1]), int.Parse(rgbStr[2]));
                        }

                        glyph.UserData = visualization;
                    }

                    // read to the end tag
                    xmlIn.Read( );
                }

                // read to the next node
                xmlIn.Read( );
            }
        }
Example #5
0
        public Form1()
        {
            InitializeComponent();

            var databaseBuilder = new GlyphDatabaseBuilder();
            _glyphDatabase = databaseBuilder.Database;

            _imageProcessor = new GlyphImageProcessor(_glyphDatabase);
        }
Example #6
0
        public Form1()
        {
            InitializeComponent();

            var databaseBuilder = new GlyphDatabaseBuilder();

            _glyphDatabase = databaseBuilder.Database;

            _imageProcessor = new GlyphImageProcessor(_glyphDatabase);
        }
Example #7
0
        public FindDisplay()
        {
            // create glyph database for 5x5 glyphs
            var glyphDatabase = new GlyphDatabase(5);

            try
            {
                using (var stream = new StreamReader("Resources/TagDefinitions.txt"))
                {
                    String line;
                    do
                    {
                        line = stream.ReadLine();
                        if (line != null)
                        {
                            var tokens = line.Split(' ');
                            var tagId  = tokens[0];
                            var code   = tokens[1];

                            var matrix = new byte[5, 5];

                            var i = 0;
                            for (var y = 0; y < 5; y++)
                            {
                                for (var x = 0; x < 5; x++)
                                {
                                    matrix[y, x] = byte.Parse(code.Substring(i++, 1));
                                }
                            }
                            glyphDatabase.Add(new Glyph(tagId, matrix));
                        }
                    } while (line != null);
                }

                _glyphRecognizer = new GlyphRecognizer(glyphDatabase)
                {
                    MaxNumberOfGlyphsToSearch = 1
                };
                _glyphTable = new GlyphMetadata[glyphDatabase.Count];

                PropertyChanged += (s, e) =>
                {
                    switch (e.PropertyName)
                    {
                    case MinFramesPropertyName:
                        _glyphTable = new GlyphMetadata[glyphDatabase.Count];
                        break;
                    }
                };
            }
            catch (Exception e)
            {
                LogFormat(e + e.Message + e.StackTrace);
            }
        }
 // Add glyph database to collection
 public void AddGlyphDatabase(string name, GlyphDatabase db)
 {
     if (!dbs.ContainsKey(name))
     {
         dbs.Add(name, db);
     }
     else
     {
         throw new ApplicationException("A glyph database with such name already exists : " + name);
     }
 }
Example #9
0
 // Add glyph database to collection
 public void AddGlyphDatabase( string name, GlyphDatabase db )
 {
     if ( !dbs.ContainsKey( name ) )
     {
         dbs.Add( name, db );
     }
     else
     {
         throw new ApplicationException( "A glyph database with such name already exists : " + name );
     }
 }
Example #10
0
        public GlyphDecoder()
        {
            // create glyph database for 5x5 glyphs
            GlyphDatabase glyphDatabase = new GlyphDatabase(5);

            try
            {
                using (StreamReader sr = new StreamReader("Resources/TagDefinitions.txt"))
                {
                    String line;
                    do
                    {
                        line = sr.ReadLine();
                        if (line != null)
                        {
                            var tokens = line.Split(' ');
                            var tagID  = tokens[0];
                            var code   = tokens[1];

                            var matrix = new byte[5, 5];

                            int i = 0;
                            for (int y = 0; y < 5; y++)
                            {
                                for (int x = 0; x < 5; x++)
                                {
                                    matrix[y, x] = byte.Parse(code.Substring(i++, 1));
                                }
                            }
                            glyphDatabase.Add(new Glyph(tagID, matrix));
                        }
                    } while (line != null);
                }

                _glyphRecognizer = new GlyphRecognizer(glyphDatabase);
                _glyphRecognizer.MaxNumberOfGlyphsToSearch = GLYPHSTOSEARCHFOR;

                PropertyChanged += (s, e) =>
                {
                    switch (e.PropertyName)
                    {
                    case MinFramesPropertyName:
                        _glyphTable = new GlyphMetadata[GLYPHCOUNT];
                        break;
                    }
                };
            }
            catch (Exception e)
            {
                LogFormat(e + e.Message + e.StackTrace);
            }
        }
Example #11
0
        //public MainWindow()
        //{
        //    WindowInit();
        //}

        private void WindowInit(Gallery currentGallery)
        {
            InitializeComponent();
            CurrentGallery = currentGallery;
            FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

            camera           = new VideoCaptureDevice(videoDevices[0].MonikerString);
            camera.NewFrame += new NewFrameEventHandler(camera_NewFrame);
            camera.Start();
            glyphDatabase = new GlyphDatabase(5);

            //BoxVisual3D box = new BoxVisual3D();
            //Point3D position = new Point3D(3, 4, 5);
            //Point3D.Transform position = new TranslateTransform3D(new Vector3(3, 4, 5));
            //box.Center = position;
            //viewPort3d.Children.Add(box);
            //TranslateManipulator manipulator1 = new TranslateManipulator();
            //manipulator1.Bind(box);
            //manipulator1.Color = Colors.Red;
            //manipulator1.Direction = new Vector3D(1, 0, 0);
            //manipulator1.Diameter = 0.1;
            //manipulator1.Position = position;
            //viewPort3d.Children.Add(manipulator1);



            String           glyphInformationPath = CurrentGallery.UrlPrefix + "\\" + CurrentGallery.GlyphsInformation;
            String           json           = File.ReadAllText(@glyphInformationPath);
            dynamic          dynJson        = JsonConvert.DeserializeObject(json);
            List <HelpGlyph> glyphsFromJson = JsonConvert.DeserializeObject <List <HelpGlyph> >(json);

            createGlyphDatabase(glyphsFromJson);

            //glyphDatabase = new GlyphDatabase(5);
            //glyphDatabase.Add(new Glyph("glyph1", new byte[5,5]{
            //    {0,0,0,0,0},
            //    {0,0,1,0,0},
            //    {0,1,1,1,0},
            //    {0,0,0,1,0},
            //    {0,0,0,0,0}
            //}));
            //Za suzdavane na json s glyphs
            //String testJson = JsonConvert.SerializeObject(glyphDatabase);
            //Console.WriteLine(testJson);

            //Model3DGroup group = new ModelImporter().Load(@"C:\\deer-3ds.3ds");
            //mod = new FileModelVisual3D();
            //mod.ModelLoaded += new RoutedEventHandler(mod_ModelLoaded);
            //mod.Source = "C:\\deer-3ds.3ds";
        }
Example #12
0
        // Refresh the list displaying available databases of glyphss
        private void RefreshListOfGlyphDatabases( )
        {
            glyphCollectionsList.Items.Clear( );

            List <string> dbNames = glyphDatabases.GetDatabaseNames( );

            foreach (string name in dbNames)
            {
                GlyphDatabase db  = glyphDatabases[name];
                ListViewItem  lvi = glyphCollectionsList.Items.Add(name);
                lvi.Name = name;

                lvi.SubItems.Add(string.Format("{0}x{1}", db.Size, db.Size));
            }
        }
Example #13
0
        // Activate glyph database with the specified name
        private void ActivateGlyphDatabase(string name)
        {
            ListViewItem lvi;

            // deactivate previous database
            if (activeGlyphDatabase != null)
            {
                lvi = GetListViewItemByName(glyphCollectionsList, activeGlyphDatabaseName);

                if (lvi != null)
                {
                    Font font = new Font(lvi.Font, FontStyle.Regular);
                    lvi.Font = font;
                }
            }

            // activate new database
            activeGlyphDatabaseName = name;

            if (name != null)
            {
                try
                {
                    activeGlyphDatabase = glyphDatabases[name];

                    lvi = GetListViewItemByName(glyphCollectionsList, name);

                    if (lvi != null)
                    {
                        Font font = new Font(lvi.Font, FontStyle.Bold);
                        lvi.Font = font;
                    }
                }
                catch
                {
                }
            }
            else
            {
                activeGlyphDatabase = null;
            }

            // set the database to image processor ...
            imageProcessor.GlyphDatabase = activeGlyphDatabase;
            // ... and show it to user
            RefreshListOfGlyps( );
        }
Example #14
0
        public Form1()
        {
            InitializeComponent();

            AppGlobals.Form = this;

            var databaseBuilder = new GlyphDatabaseBuilder();
            _glyphDatabase = databaseBuilder.Database;

            _imageProcessor = new GlyphImageProcessor(_glyphDatabase);

            Task.Run(() =>
            {
                var engine = new RobotEngine();
                AppGlobals.Robot = new Robot(engine);
            });
        }
Example #15
0
        public Form1()
        {
            InitializeComponent();

            AppGlobals.Form = this;

            var databaseBuilder = new GlyphDatabaseBuilder();

            _glyphDatabase = databaseBuilder.Database;

            _imageProcessor = new GlyphImageProcessor(_glyphDatabase);

            Task.Run(() =>
            {
                var engine       = new RobotEngine();
                AppGlobals.Robot = new Robot(engine);
            });
        }
        public MainWindow()
        {
            InitializeComponent();


            GlyphDatabase glyphDatabase = new GlyphDatabase(5);

            glyphDatabase.Add(new Glyph("Glider", new byte[, ] {
                { 0, 0, 0, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 0, 1, 1, 0 },
                { 0, 0, 0, 0, 0 },
            }));
            _glyphRecognizer = new GlyphRecognizer(5);
            _glyphRecognizer.GlyphDatabase = glyphDatabase;

            InitializeCapturer();
            InitializeComboBox_Webcams();
            if (ComboBox_Webcams.Items.Count > 0)
            {
                ComboBox_Webcams.SelectedIndex = 0;
            }
        }
Example #17
0
        public GlyphDatabaseBuilder()
        {
            Database = new GlyphDatabase(5);

            // 1
            Database.Add(new Glyph("Влево", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            // 2
            Database.Add(new Glyph("Вправо", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 0, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            // 3
            Database.Add(new Glyph("Вперед", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 0, 1, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            // 4
            Database.Add(new Glyph("Назад", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 0, 0, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            // 5
            Database.Add(new Glyph("Бум", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 0, 0, 1, 0 },
                { 0, 0, 1, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            //// 6
            //Database.Add(new Glyph("Динозавр", new byte[,]
            //{
            //    {0, 0, 0, 0, 0},
            //    {0, 1, 1, 1, 0},
            //    {0, 1, 0, 1, 0},
            //    {0, 1, 1, 1, 0},
            //    {0, 0, 0, 0, 0}
            //}));

            //// 7
            //Database.Add(new Glyph("Корова", new byte[,]
            //{
            //    {0, 0, 0, 0, 0},
            //    {0, 1, 1, 1, 0},
            //    {0, 0, 1, 0, 0},
            //    {0, 1, 1, 1, 0},
            //    {0, 0, 0, 0, 0}
            //}));

            //// 8
            //Database.Add(new Glyph("Дельфин", new byte[,]
            //{
            //    {0, 0, 0, 0, 0},
            //    {0, 0, 1, 0, 0},
            //    {0, 1, 1, 0, 0},
            //    {0, 1, 1, 0, 0},
            //    {0, 0, 0, 0, 0}
            //}));
        }
 public GlyphImageProcessor(GlyphDatabase database)
 {
     _recognizer = new GlyphRecognizer(database);
 }
        public GlyphDatabaseBuilder()
        {
            Database = new GlyphDatabase(5);

            // 1
            Database.Add(new Glyph("Кролик", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 1, 1, 0, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 0, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            // 2
            Database.Add(new Glyph("Слон", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 1, 0, 0, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 0, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            // 3
            Database.Add(new Glyph("Белка", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 1, 0, 0},
                {0, 0, 1, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            // 4
            Database.Add(new Glyph("Динозавр", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 1, 1, 1, 0},
                {0, 1, 0, 1, 0},
                {0, 1, 1, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            // 5
            Database.Add(new Glyph("Корова", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 1, 1, 1, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 1, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            // 6
            Database.Add(new Glyph("Змея", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 0, 0, 0},
                {0, 1, 1, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            // 7
            Database.Add(new Glyph("Выхухоль", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 1, 0, 0},
                {0, 1, 1, 0, 0},
                {0, 0, 0, 0, 0}
            }));

            // 8
            Database.Add(new Glyph("Дельфин", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 1, 1, 1, 0},
                {0, 0, 0, 1, 0},
                {0, 0, 1, 1, 0},
                {0, 0, 0, 0, 0}
            }));
        }
Example #20
0
        public FindDisplay()
        {
            // create glyph database for 5x5 glyphs
            var glyphDatabase = new GlyphDatabase(5);

            try
            {
                using (var stream = new StreamReader("Resources/TagDefinitions.txt"))
                {
                    String line;
                    do
                    {
                        line = stream.ReadLine();
                        if (line != null)
                        {
                            var tokens = line.Split(' ');
                            var tagId = tokens[0];
                            var code = tokens[1];

                            var matrix = new byte[5, 5];

                            var i = 0;
                            for (var y = 0; y < 5; y++)
                            {
                                for (var x = 0; x < 5; x++)
                                {
                                    matrix[y, x] = byte.Parse(code.Substring(i++, 1));
                                }
                            }
                            glyphDatabase.Add(new Glyph(tagId, matrix));
                        }
                    } while (line != null);
                }

                _glyphRecognizer = new GlyphRecognizer(glyphDatabase)
                {
                    MaxNumberOfGlyphsToSearch = 1
                };
                _glyphTable = new GlyphMetadata[glyphDatabase.Count];

                PropertyChanged += (s, e) =>
                {
                    switch (e.PropertyName)
                    {
                        case MinFramesPropertyName:
                            _glyphTable = new GlyphMetadata[glyphDatabase.Count];
                            break;
                    }
                };

            }
            catch (Exception e)
            {
                LogFormat(e + e.Message + e.StackTrace);
            }
        }
Example #21
0
        // Add new glyph collection
        private void newToolStripMenuItem_Click( object sender, EventArgs e )
        {
            NewGlyphCollectionForm newCollectionForm = new NewGlyphCollectionForm( glyphDatabases.GetDatabaseNames( ) );

            if ( newCollectionForm.ShowDialog( ) == DialogResult.OK )
            {
                string name = newCollectionForm.CollectionName;
                int size = newCollectionForm.GlyphSize;

                GlyphDatabase db = new GlyphDatabase( size );

                try
                {
                    glyphDatabases.AddGlyphDatabase( name, db );

                    // add new item to list view
                    ListViewItem lvi = glyphCollectionsList.Items.Add( name );
                    lvi.SubItems.Add( string.Format( "{0}x{1}", size, size ) );
                    lvi.Name = name;
                }
                catch
                {
                    ShowErrorBox( string.Format( "A glyph database with the name '{0}' already exists.", name ) );
                }
            }
        }
Example #22
0
        /// <summary>
        /// Refresh the list displaying available databases of glyphss
        /// </summary>
        private void LoadGlyphDatabases5()
        {
            const string dbName = "ExampleSize5";
            const int glyphSize = 5;

            // Create glyph.
            string glyphName1 = "Test1";
            byte[,] glyphData1 = new byte[glyphSize, glyphSize]
            {
                {0, 0, 0, 0, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 1, 1, 0},
                {0, 1, 0, 0, 0},
                {0, 0, 0, 0, 0}
            };

            Glyph testGlyph1 = new Glyph(glyphName1, glyphData1);
            testGlyph1.UserData = new GlyphVisualizationData(Color.Purple);

            // Create glyph.
            string glyphName2 = "Test2";
            byte[,] glyphData2 = new byte[glyphSize, glyphSize]
            {
                {0, 0, 0, 0, 0},
                {0, 1, 0, 1, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 0, 0, 0},
                {0, 0, 0, 0, 0}
            };

            Glyph testGlyph2 = new Glyph(glyphName2, glyphData2);
            testGlyph2.UserData = new GlyphVisualizationData(Color.Blue);

            // Create glyph.
            string glyphName3 = "Test3";
            byte[,] glyphData3 = new byte[glyphSize, glyphSize]
            {
                {0, 0, 0, 0, 0},
                {0, 1, 0, 1, 0},
                {0, 0, 1, 0, 0},
                {0, 0, 1, 1, 0},
                {0, 0, 0, 0, 0}
            };

            Glyph testGlyph3 = new Glyph(glyphName3, glyphData3);
            testGlyph3.UserData = new GlyphVisualizationData(Color.Green);

            // Create database.
            GlyphDatabase lGlyphDatabase = new GlyphDatabase(glyphSize);

            // Add glyph to database.
            lGlyphDatabase.Add(testGlyph1);
            lGlyphDatabase.Add(testGlyph2);
            lGlyphDatabase.Add(testGlyph3);

            // Add database.
            this.glyphDatabases.AddGlyphDatabase(dbName, lGlyphDatabase);

            this.recognizer = new GlyphRecognizer(glyphSize);

            // set the database to image processor ...
            this.recognizer.GlyphDatabase = this.glyphDatabases[dbName]; ;
        }
Example #23
0
        /// <summary>
        /// Refresh the list displaying available databases of glyphss
        /// </summary>
        private void LoadGlyphDatabases12()
        {
            const int glyphSize = 12;

            // Create glyph.
            string glyphName4 = "Test4";
            byte[,] glyphData4 = new byte[glyphSize, glyphSize]
            {
                {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
                {0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0},
                {0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0},
                {0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0},
                {0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0},
                {0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0},
                {0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0},
                {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
                {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
            };
            Glyph testGlyph4 = new Glyph(glyphName4, glyphData4);
            testGlyph4.UserData = new GlyphVisualizationData(Color.Purple);

            // Create database.
            const string dbName = "ExampleSize12";

            // Create database.
            GlyphDatabase lGlyphDatabase = new GlyphDatabase(glyphSize);

            // Add glyph to database.
            lGlyphDatabase.Add(testGlyph4);

            // Add database.
            this.glyphDatabases.AddGlyphDatabase(dbName, lGlyphDatabase);

            this.recognizer = new GlyphRecognizer(glyphSize);

            // set the database to image processor ...
            this.recognizer.GlyphDatabase = this.glyphDatabases[dbName];
        }
        public GlyphDatabaseBuilder()
        {
            Database = new GlyphDatabase(5);

            // 1
            Database.Add(new Glyph("Влево", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 1, 1, 0, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 0, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            // 2
            Database.Add(new Glyph("Вправо", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 1, 0, 0, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 0, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            // 3
            Database.Add(new Glyph("Вперед", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 1, 0, 0},
                {0, 0, 1, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            // 4
            Database.Add(new Glyph("Назад", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 0, 1, 0, 0},
                {0, 1, 0, 0, 0},
                {0, 1, 1, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            // 5
            Database.Add(new Glyph("Бум", new byte[,]
            {
                {0, 0, 0, 0, 0},
                {0, 1, 1, 1, 0},
                {0, 0, 0, 1, 0},
                {0, 0, 1, 1, 0},
                {0, 0, 0, 0, 0}
            }));

            //// 6
            //Database.Add(new Glyph("Динозавр", new byte[,]
            //{
            //    {0, 0, 0, 0, 0},
            //    {0, 1, 1, 1, 0},
            //    {0, 1, 0, 1, 0},
            //    {0, 1, 1, 1, 0},
            //    {0, 0, 0, 0, 0}
            //}));

            //// 7
            //Database.Add(new Glyph("Корова", new byte[,]
            //{
            //    {0, 0, 0, 0, 0},
            //    {0, 1, 1, 1, 0},
            //    {0, 0, 1, 0, 0},
            //    {0, 1, 1, 1, 0},
            //    {0, 0, 0, 0, 0}
            //}));

            //// 8
            //Database.Add(new Glyph("Дельфин", new byte[,]
            //{
            //    {0, 0, 0, 0, 0},
            //    {0, 0, 1, 0, 0},
            //    {0, 1, 1, 0, 0},
            //    {0, 1, 1, 0, 0},
            //    {0, 0, 0, 0, 0}
            //}));
        }
Example #25
0
        // Activate glyph database with the specified name
        private void ActivateGlyphDatabase(string name)
        {
            ListViewItem lvi;
            if (activeGlyphDatabase != null)
            {
                lvi = GetListViewItemByName(glyphCollectionsList, activeGlyphDatabaseName);

                if (lvi != null)
                {
                    Font font = new Font(lvi.Font, FontStyle.Regular);
                    lvi.Font = font;
                }
            }
            activeGlyphDatabaseName = name;
            if (name != null)
            {
                try
                {
                    activeGlyphDatabase = glyphDatabases[name];
                    lvi = GetListViewItemByName(glyphCollectionsList, name);
                    if (lvi != null)
                    {
                        Font font = new Font(lvi.Font, FontStyle.Bold);
                        lvi.Font = font;
                    }
                }
                catch
                {
                }
            }
            else
            {
                activeGlyphDatabase = null;
            }
            imageProcessor.GlyphDatabase = activeGlyphDatabase;
            RefreshListOfGlyps();
        }
        public GlyphDatabaseBuilder()
        {
            Database = new GlyphDatabase(5);

            // 1
            Database.Add(new Glyph("Кролик", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            // 2
            Database.Add(new Glyph("Слон", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 0, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            // 3
            Database.Add(new Glyph("Белка", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 0, 1, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            // 4
            Database.Add(new Glyph("Динозавр", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            // 5
            Database.Add(new Glyph("Корова", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            // 6
            Database.Add(new Glyph("Змея", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 0, 0, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            // 7
            Database.Add(new Glyph("Выхухоль", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 0, 0, 0, 0 }
            }));


            // 8
            Database.Add(new Glyph("Дельфин", new byte[, ]
            {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 0, 0, 1, 0 },
                { 0, 0, 1, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="GlyphRecognizer"/> class.
 /// </summary>
 /// 
 /// <param name="glyphDatabase"><see cref="GlyphRecognizer">Database of glyphs</see> to recognize.</param>
 /// 
 public GlyphRecognizer( GlyphDatabase glyphDatabase )
     : this()
 {
     GlyphDatabase = glyphDatabase;
 }
Example #28
0
        // Activate glyph database with the specified name
        private void ActivateGlyphDatabase( string name )
        {
            ListViewItem lvi;

            // deactivate previous database
            if ( activeGlyphDatabase != null )
            {
                lvi = GetListViewItemByName( glyphCollectionsList, activeGlyphDatabaseName );

                if ( lvi != null )
                {
                    Font font = new Font( lvi.Font, FontStyle.Regular );
                    lvi.Font = font;
                }
            }

            // activate new database
            activeGlyphDatabaseName = name;

            if ( name != null )
            {
                try
                {
                    activeGlyphDatabase = glyphDatabases[name];

                    lvi = GetListViewItemByName( glyphCollectionsList, name );

                    if ( lvi != null )
                    {
                        Font font = new Font( lvi.Font, FontStyle.Bold );
                        lvi.Font = font;
                    }
                }
                catch
                {
                }
            }
            else
            {
                activeGlyphDatabase = null;
            }

            // set the database to image processor ...
            imageProcessor.GlyphDatabase = activeGlyphDatabase;
            // ... and show it to user
            RefreshListOfGlyps( );
        }
Example #29
0
        public GlyphImageProcessor(int size)
        {
            recognizer = new GlyphRecognizer(size);

            GlyphVisualizationData visualizationData;

            byte[,] data;
            GlyphDatabase gDB = new GlyphDatabase(5);



            if (size == 5)
            {
                #region Monitors

                //Monitor 1

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 1;
                data[1, 3] = 0;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 1;
                data[2, 3] = 0;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;


                Glyph S1 = new Glyph("Monitor1", data);
                visualizationData = new GlyphVisualizationData(Color.Red);
                S1.UserData       = visualizationData;

                //Monitor 2

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 1;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 1;
                data[2, 3] = 0;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;


                Glyph S2 = new Glyph("Monitor2", data);
                visualizationData = new GlyphVisualizationData(Color.Red);
                S2.UserData       = visualizationData;

                //Monitor 3

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 0;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 1;
                data[2, 2] = 1;
                data[2, 3] = 0;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;


                Glyph S3 = new Glyph("Monitor3", data);
                visualizationData = new GlyphVisualizationData(Color.Red);
                S3.UserData       = visualizationData;

                //Monitor 4

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 1;
                data[1, 3] = 1;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 1;
                data[2, 3] = 0;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;


                Glyph S4 = new Glyph("Monitor4", data);
                visualizationData = new GlyphVisualizationData(Color.Red);
                S4.UserData       = visualizationData;

                //Monitor 5

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 1;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 1;
                data[2, 3] = 1;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;


                Glyph S5 = new Glyph("Monitor5", data);
                visualizationData = new GlyphVisualizationData(Color.Red);
                S5.UserData       = visualizationData;

                //Monitor 6

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 1;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 1;
                data[2, 3] = 1;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 1;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;


                Glyph S6 = new Glyph("Monitor6", data);
                visualizationData = new GlyphVisualizationData(Color.Red);
                S6.UserData       = visualizationData;

                //Monitor 7

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 1;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 1;
                data[2, 3] = 0;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;


                Glyph S7 = new Glyph("Monitor7", data);
                visualizationData = new GlyphVisualizationData(Color.Red);
                S7.UserData       = visualizationData;

                //Monitor 8

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 1;
                data[1, 3] = 1;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 0;
                data[2, 3] = 1;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 1;
                data[3, 2] = 1;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;


                Glyph S8 = new Glyph("Monitor8", data);
                visualizationData = new GlyphVisualizationData(Color.Red);
                S8.UserData       = visualizationData;

                //Monitor 9

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 0;
                data[1, 2] = 1;
                data[1, 3] = 0;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 1;
                data[2, 2] = 0;
                data[2, 3] = 1;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 1;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;


                Glyph S9 = new Glyph("Monitor9", data);
                visualizationData = new GlyphVisualizationData(Color.Red);
                S9.UserData       = visualizationData;

                //Monitor 10

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 1;
                data[1, 3] = 1;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 1;
                data[2, 2] = 0;
                data[2, 3] = 0;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 1;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;


                Glyph S10 = new Glyph("Monitor10", data);
                visualizationData = new GlyphVisualizationData(Color.Red);
                S10.UserData      = visualizationData;



                #endregion Monitors

                #region Roomba glyph
                //Roomba

                data       = new byte[5, 5];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 1;
                data[1, 4] = 0;

                data[2, 0] = 0;
                data[2, 1] = 1;
                data[2, 2] = 1;
                data[2, 3] = 1;
                data[2, 4] = 0;

                data[3, 0] = 0;
                data[3, 1] = 1;
                data[3, 2] = 1;
                data[3, 3] = 1;
                data[3, 4] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;
                Glyph roomba = new Glyph("Roomba", data);
                visualizationData = new GlyphVisualizationData(Color.Yellow);
                roomba.UserData   = visualizationData;
                #endregion Roomba glyph
                gDB = new GlyphDatabase(5);
                gDB.Add(S1);
                gDB.Add(S2);
                gDB.Add(S3);
                gDB.Add(S4);
                gDB.Add(S5);
                gDB.Add(S6);
                gDB.Add(S7);
                gDB.Add(S8);
                gDB.Add(S9);
                gDB.Add(S10);
                gDB.Add(roomba);
            }
            else if (size == 6)
            {
                Color MarkerColor = Color.GreenYellow;
                #region Objects 6*6 glype

                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 0;
                data[1, 2] = 1;
                data[1, 3] = 0;
                data[1, 4] = 1;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 1;
                data[2, 2] = 0;
                data[2, 3] = 1;
                data[2, 4] = 0;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 1;
                data[3, 3] = 0;
                data[3, 4] = 1;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 1;
                data[4, 2] = 0;
                data[4, 3] = 1;
                data[4, 4] = 1;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o1 = new Glyph("Marker_6_1", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o1.UserData       = visualizationData;



                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 0;
                data[1, 4] = 1;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 0;
                data[2, 3] = 1;
                data[2, 4] = 0;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 1;
                data[3, 3] = 0;
                data[3, 4] = 1;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 1;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 1;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o2 = new Glyph("Marker_6_2", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o2.UserData       = visualizationData;



                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 0;
                data[1, 2] = 1;
                data[1, 3] = 1;
                data[1, 4] = 0;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 1;
                data[2, 3] = 0;
                data[2, 4] = 1;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 1;
                data[3, 2] = 0;
                data[3, 3] = 0;
                data[3, 4] = 0;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 1;
                data[4, 3] = 1;
                data[4, 4] = 0;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o3 = new Glyph("Marker_6_3", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o3.UserData       = visualizationData;

                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 1;
                data[1, 4] = 0;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 1;
                data[2, 3] = 1;
                data[2, 4] = 0;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 1;
                data[3, 3] = 1;
                data[3, 4] = 0;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 1;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 1;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o4 = new Glyph("Marker_6_4", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o4.UserData       = visualizationData;


                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 0;
                data[1, 4] = 1;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 1;
                data[2, 2] = 1;
                data[2, 3] = 0;
                data[2, 4] = 1;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 1;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 0;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 1;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o5 = new Glyph("Marker_6_5", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o5.UserData       = visualizationData;

                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 0;
                data[1, 4] = 1;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 0;
                data[2, 3] = 1;
                data[2, 4] = 1;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 1;
                data[3, 3] = 0;
                data[3, 4] = 1;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 1;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o6 = new Glyph("Marker_6_6", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o6.UserData       = visualizationData;

                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 0;
                data[1, 2] = 1;
                data[1, 3] = 0;
                data[1, 4] = 0;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 1;
                data[2, 2] = 1;
                data[2, 3] = 1;
                data[2, 4] = 0;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 1;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 1;
                data[4, 2] = 0;
                data[4, 3] = 0;
                data[4, 4] = 0;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o7 = new Glyph("Marker_6_7", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o7.UserData       = visualizationData;


                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 1;
                data[1, 3] = 0;
                data[1, 4] = 0;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 1;
                data[2, 3] = 0;
                data[2, 4] = 0;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 1;
                data[3, 3] = 1;
                data[3, 4] = 1;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 1;
                data[4, 3] = 0;
                data[4, 4] = 0;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o8 = new Glyph("Marker_6_8", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o8.UserData       = visualizationData;

                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 0;
                data[1, 4] = 1;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 0;
                data[2, 2] = 1;
                data[2, 3] = 1;
                data[2, 4] = 0;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 1;
                data[3, 2] = 0;
                data[3, 3] = 1;
                data[3, 4] = 0;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 0;
                data[4, 2] = 1;
                data[4, 3] = 0;
                data[4, 4] = 1;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o9 = new Glyph("Marker_6_9", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o9.UserData       = visualizationData;

                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 0;
                data[1, 2] = 1;
                data[1, 3] = 0;
                data[1, 4] = 1;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 1;
                data[2, 2] = 1;
                data[2, 3] = 1;
                data[2, 4] = 1;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 0;
                data[3, 2] = 1;
                data[3, 3] = 1;
                data[3, 4] = 0;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 1;
                data[4, 2] = 0;
                data[4, 3] = 1;
                data[4, 4] = 1;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o10 = new Glyph("Marker_6_10", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o10.UserData      = visualizationData;


                data       = new byte[6, 6];
                data[0, 0] = 0;
                data[0, 1] = 0;
                data[0, 2] = 0;
                data[0, 3] = 0;
                data[0, 4] = 0;
                data[0, 5] = 0;

                data[1, 0] = 0;
                data[1, 1] = 1;
                data[1, 2] = 0;
                data[1, 3] = 0;
                data[1, 4] = 1;
                data[1, 5] = 0;

                data[2, 0] = 0;
                data[2, 1] = 1;
                data[2, 2] = 0;
                data[2, 3] = 0;
                data[2, 4] = 1;
                data[2, 5] = 0;

                data[3, 0] = 0;
                data[3, 1] = 1;
                data[3, 2] = 0;
                data[3, 3] = 0;
                data[3, 4] = 1;
                data[3, 5] = 0;

                data[4, 0] = 0;
                data[4, 1] = 1;
                data[4, 2] = 1;
                data[4, 3] = 1;
                data[4, 4] = 1;
                data[4, 5] = 0;

                data[5, 0] = 0;
                data[5, 1] = 0;
                data[5, 2] = 0;
                data[5, 3] = 0;
                data[5, 4] = 0;
                data[5, 5] = 0;

                Glyph o11 = new Glyph("Marker_6_11", data);
                visualizationData = new GlyphVisualizationData(MarkerColor);
                o11.UserData      = visualizationData;
                #endregion objects 6*6 glyph


                gDB = new GlyphDatabase(6);
                gDB.Add(o1);
                gDB.Add(o2);
                gDB.Add(o3);
                gDB.Add(o4);
                gDB.Add(o5);
                gDB.Add(o6);
                gDB.Add(o7);
                gDB.Add(o8);
                gDB.Add(o9);
                gDB.Add(o10);
                gDB.Add(o11);
            }



            GlyphDatabase = gDB;
        }
        // Used to create the glyphs and the GRATF glyph recognizer
        private void CreateGlyphRecognizer()
        {
            GlyphDatabase glyphDatabase = new GlyphDatabase(5);

            // Create glyph database for 5x5 glyphs. Ones represent white squares, 0 black.
            // Note that the ID needs to match the name of the robot

            glyphDatabase.Add(new Glyph("0", new byte[5, 5] {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 0, 0, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            glyphDatabase.Add(new Glyph("1", new byte[5, 5] {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 0, 1, 1, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            glyphDatabase.Add(new Glyph("2", new byte[5, 5] {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            glyphDatabase.Add(new Glyph("3", new byte[5, 5] {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 0, 1, 1, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            glyphDatabase.Add(new Glyph("4", new byte[5, 5] {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            glyphDatabase.Add(new Glyph("5", new byte[5, 5] {
                { 0, 0, 0, 0, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 0, 1, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            glyphDatabase.Add(new Glyph("6", new byte[5, 5] {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            glyphDatabase.Add(new Glyph("7", new byte[5, 5] {
                { 0, 0, 0, 0, 0 },
                { 0, 0, 1, 1, 0 },
                { 0, 1, 1, 0, 0 },
                { 0, 1, 0, 0, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            glyphDatabase.Add(new Glyph("8", new byte[5, 5] {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 1, 1, 0 },
                { 0, 1, 0, 0, 0 },
                { 0, 1, 0, 1, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            glyphDatabase.Add(new Glyph("9", new byte[5, 5] {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 0, 0, 0 },
                { 0, 0, 0, 1, 0 },
                { 0, 0, 1, 0, 0 },
                { 0, 0, 0, 0, 0 }
            }));

            recognizer = new GlyphRecognizer(glyphDatabase);
            recognizer.MaxNumberOfGlyphsToSearch = glyphDatabase.Count;
        }
        private void initGlyphs()
        {
            database = new GlyphDatabase(5);

            Glyph glyph1 = new Glyph("1    ", new byte[,] { {0, 0, 0, 0, 0},
                                                            {0, 0, 1, 1, 0},
                                                            {0, 1, 0, 1, 0},
                                                            {0, 0, 1, 0, 0},
                                                            {0, 0, 0, 0, 0} });

            Glyph glyph2 = new Glyph("2    ", new byte[,] { {0, 0, 0, 0, 0},
                                                            {0, 1, 0, 1, 0},
                                                            {0, 1, 1, 1, 0},
                                                            {0, 0, 1, 0, 0},
                                                            {0, 0, 0, 0, 0} });
            database.Add(glyph1);
            database.Add(glyph2);

            recogniser = new GlyphRecognizer(database);
        }
Example #32
0
        public GlyphDecoder()
        {
            // create glyph database for 5x5 glyphs
            GlyphDatabase glyphDatabase = new GlyphDatabase(5);

            try
            {
                using (StreamReader sr = new StreamReader("Resources/TagDefinitions.txt"))
                {
                    String line;
                    do
                    {
                        line = sr.ReadLine();
                        if (line != null)
                        {
                            var tokens = line.Split(' ');
                            var tagID = tokens[0];
                            var code = tokens[1];

                            var matrix = new byte[5, 5];

                            int i = 0;
                            for (int y = 0; y < 5; y++)
                            {
                                for (int x = 0; x < 5; x++)
                                {
                                    matrix[y, x] = byte.Parse(code.Substring(i++, 1));
                                }
                            }
                            glyphDatabase.Add(new Glyph(tagID, matrix));
                        }
                    } while (line != null);
                }

                _glyphRecognizer = new GlyphRecognizer(glyphDatabase);
                _glyphRecognizer.MaxNumberOfGlyphsToSearch = GLYPHSTOSEARCHFOR;

                PropertyChanged += (s, e) =>
                {
                    switch (e.PropertyName)
                    {
                        case MinFramesPropertyName:
                            _glyphTable = new GlyphMetadata[GLYPHCOUNT];
                            break;
                    }
                };

            }
            catch (Exception e)
            {
                LogFormat(e + e.Message + e.StackTrace);
            }
        }
 public GlyphImageProcessor(GlyphDatabase database)
 {
     _recognizer = new GlyphRecognizer(database);
 }