Пример #1
0
 public ImageService(ImageDatabase imageDatabase, DescriptorMatherWrapper descriptorMatherWrapper, IOptionsMonitor <ConfigSettings> settings,
                     IHostingEnvironment hostingEnvironment)
 {
     _hostingEnvironment      = hostingEnvironment;
     _imageDatabase           = imageDatabase;
     _settings                = settings;
     _descriptorMatherWrapper = descriptorMatherWrapper;
 }
Пример #2
0
        public static List <Image> getImagesFromResponse(GraphicsDevice gd, NewBoardResponse response)
        {
            List <Image> imageList = new List <Image>();

            foreach (Board b in response.board)
            {
                imageList.Add(ImageDatabase.LoadImageFromBase64String(gd, b.word, b.image));
            }
            return(imageList);
        }
Пример #3
0
        public GameModel(ImageDatabase imageDatabase, GameMode mode, Difficulty diff, bool selectedMusic, bool selectedVib, LevelManager lm, Board board)
        {
            this.imageDatabase = imageDatabase;
            gameMode           = mode;
            difficulty         = diff;
            music        = selectedMusic;
            vib          = selectedVib;
            levelManager = lm;
            this.board   = board;
            Loading      = true;

#if WINDOWS
            soundAndVibration = new SoundAndVibrationWindows();
#endif
#if ANDROID
            soundAndVibration = new SoundAndVibrationAndroid();
#endif
        }
Пример #4
0
        private Guid trainLDA(ImageDatabase imdb, FrcContext db)
        {
            if (!imdb.isSameImageSize || !imdb.isSameTotalImageForUser)
            {
                throw new NotImplementedException();
            }

            // 1) Находим средний образ для всей базы исходных данных:
            var averageMatrix = Matrix <double> .Build.Dense(imdb.ImageHeight, imdb.ImageWidth);

            foreach (var userMatrixList in trainImageLists)
            {
                foreach (var userImage in userMatrixList)
                {
                    averageMatrix = averageMatrix + userImage;
                }
            }
            var Xaverage = averageMatrix / (totalUserForTrain * totalTrainImageForUser);

            // 2) Находим средний образ для каждого класса:
            List <Matrix <double> > XclassAverageList = new List <Matrix <double> >();

            foreach (var userMatrixList in trainImageLists)
            {
                var averageClassMatrix = Matrix <double> .Build.Dense(imdb.ImageHeight, imdb.ImageWidth);

                foreach (var userImage in userMatrixList)
                {
                    averageClassMatrix = averageClassMatrix + userImage;
                }
                averageClassMatrix = averageClassMatrix / totalTrainImageForUser;
                XclassAverageList.Add(averageClassMatrix);
            }

            // 3) Вычислим матрицу внутриклассовой(w) ковариации относительно строк(R):
            var SwR = Matrix <double> .Build.Dense(imdb.ImageHeight, imdb.ImageHeight);

            for (int i = 0; i < trainImageLists.Count; i++)
            {
                foreach (var userImage in trainImageLists[i])
                {
                    SwR = SwR + (userImage - XclassAverageList[i]) * (userImage - XclassAverageList[i]).Transpose();
                }
            }

            // 4) Вычислим матрицу межклассовой(b) ковариации относительно строк(R):
            var SbR = Matrix <double> .Build.Dense(imdb.ImageHeight, imdb.ImageHeight);

            foreach (var XclassAverage in XclassAverageList)
            {
                SbR = SbR + (XclassAverage - Xaverage) * (XclassAverage - Xaverage).Transpose();
            }

            // 5)  Вычислим матрицу внутриклассовой (w) ковариации относительно столбцов (C):
            var SwC = Matrix <double> .Build.Dense(imdb.ImageWidth, imdb.ImageWidth);

            for (int i = 0; i < trainImageLists.Count; i++)
            {
                foreach (var userImage in trainImageLists[i])
                {
                    SwC = SwC + (userImage - XclassAverageList[i]).Transpose() * (userImage - XclassAverageList[i]);
                }
            }

            // 6) Вычислим матрицу межклассовой (b) ковариации относительно столбцов (C):
            var SbC = Matrix <double> .Build.Dense(imdb.ImageWidth, imdb.ImageWidth);

            foreach (var XclassAverage in XclassAverageList)
            {
                SbC = SbC + (XclassAverage - Xaverage).Transpose() * (XclassAverage - Xaverage);
            }

            // 7) Сформируем общую матрицу рассеяния относительно строк:
            var StotalR = SwR.Inverse() * SbR;

            //    Регуляризация (стр. 349):
            StotalR = StotalR + Constants.SMALL_VALUE * Matrix <double> .Build.Dense(imdb.ImageHeight, imdb.ImageHeight);

            // 8) Сформируем общую матрицу рассеяния относительно столбцов:
            var StotalC = SwC.Inverse() * SbC;

            //    Регуляризация (стр. 349):
            StotalC = StotalC + Constants.SMALL_VALUE * Matrix <double> .Build.Dense(imdb.ImageWidth, imdb.ImageWidth);

            // 9) Решим задачу на собственные значения:
            var ReigResult = StotalR.Evd();
            var CeigResult = StotalC.Evd();

            // 10) Пропускаем сортировку по eigenvalues и ограничение по 95%. Берём только то, что написано в мнемоническом описании:

            // 11) Подготовка матриц для преобразования Карунена-Лоева:
            List <Vector <double> > rVectorList = new List <Vector <double> >();

            for (int i = 0; i < md.trainMartixRightDimension; i++)
            {
                rVectorList.Add(ReigResult.EigenVectors.Column(i));
            }
            // to do: значения матриц R как-то оказываются слева. Нужно переименовывать везде, а лучше ещё раз уточнить формулы:
            var eigMatrixLeft = Matrix <double> .Build.DenseOfColumnVectors(rVectorList.ToArray()).Transpose();

            List <Vector <double> > cVectorList = new List <Vector <double> >();

            for (int i = 0; i < md.trainMartixLeftDimension; i++)
            {
                cVectorList.Add(CeigResult.EigenVectors.Column(i));
            }
            var eigMatrixRight = Matrix <double> .Build.DenseOfColumnVectors(cVectorList.ToArray());

            var averageImageMatrixString = MatrixHelper.convertToMatrixString(Xaverage);
            var leftMatrixString         = MatrixHelper.convertToMatrixString(eigMatrixLeft);
            var rightMatrixString        = MatrixHelper.convertToMatrixString(eigMatrixRight);

            db.MatrixStrings.Add(averageImageMatrixString);
            db.MatrixStrings.Add(leftMatrixString);
            db.MatrixStrings.Add(rightMatrixString);
            db.SaveChanges();

            var ldaEntity = new LDA
            {
                AverageImageMatrixId = averageImageMatrixString.MatrixStringId,
                LDAId         = Guid.NewGuid(),
                LeftMatrixId  = leftMatrixString.MatrixStringId,
                RightMatrixId = rightMatrixString.MatrixStringId,
            };

            db.LDAs.Add(ldaEntity);
            db.SaveChanges();

            var frs = new Entities.FaceRecognitionSystem
            {
                FaceRecognitionSystemId = Guid.NewGuid(),
                MnemonicDescription     = md.originalDescription,
                Type             = "LDA",
                TypeSystemId     = ldaEntity.LDAId,
                InputImageHeight = imdb.ImageHeight,
                InputImageWidth  = imdb.ImageWidth,
                CreatedDT        = DateTime.UtcNow,
            };

            db.FaceRecognitionSystems.Add(frs);
            db.SaveChanges();

            return(frs.FaceRecognitionSystemId);
        }
Пример #5
0
 public static Image getImagesFromResponse(GraphicsDevice gd, NewTileResponse response)
 {
     return(ImageDatabase.LoadImageFromBase64String(gd, response.word, response.image));
 }
Пример #6
0
        static IEnumerator SearchIndexes(string searchQuery, SearchContext context, SearchProvider provider, ImageDatabase db)
        {
            var query = s_QueryEngine.Parse(searchQuery);

//             var filterNodes = GetFilterNodes(query.evaluationGraph);

            var scoreModifiers = new List <Func <ImageData, int, ImageDatabase, int> >();
//             foreach (var filterNode in filterNodes)
//             {
//                 switch (filterNode.filterId)
//                 {
//                     case "color":
//                     {
//                         var paramColor = GetColorFromParameter(filterNode.paramValue);
//                         scoreModifiers.Add(GetColorScoreModifier(paramColor));
//                         break;
//                     }
//                     case "hist":
//                     {
//                         var paramHist = GetHistogramFromParameter(filterNode.paramValue);
//                         scoreModifiers.Add(GetHistogramScoreModifier(paramHist));
//                         break;
//                     }
//                 }
//             }

            var filteredImageData = query.Apply(db.imagesData);

            foreach (var data in filteredImageData)
            {
                var score = 0;
                foreach (var scoreModifier in scoreModifiers)
                {
                    score = scoreModifier(data, score, db);
                }

                var assetPath = db.GetAssetPath(data.guid);
                var name      = Path.GetFileNameWithoutExtension(assetPath);

                yield return(provider.CreateItem(context, assetPath, score, name, null, null, null));
            }
        }
Пример #7
0
 static void UpdateImageIndexes()
 {
     m_ImageIndexes = ImageDatabase.Enumerate().ToList();
 }
Пример #8
0
 /// <summary>
 /// Elõtölti a képeket, hogy ne a new game megnyomására akadjon be, hanem amikor belépünk a játékba
 /// </summary>
 public static void preloadImages()
 {
     imageDatabase = new ImageDatabase();
     imageDatabase.LoadContent();
 }
Пример #9
0
        private void analysisDatabase(string inputDatabaseDir, string imageDatabaseName)
        {
            string[] imageClassDirArray = Directory.GetDirectories(inputDatabaseDir);
            imageDatabase = new ImageDatabase
            {
                DatabaseName    = imageDatabaseName,
                ImageDatabaseId = Guid.NewGuid(),
                TotalUser       = imageClassDirArray.Length,
            };

            List <int> imagesUserList  = new List <int>();
            List <int> imageHeightList = new List <int>();
            List <int> imageWidthList  = new List <int>();

            for (int i = 0; i < imageClassDirArray.Length; i++)
            {
                string   imageUserName     = imageClassDirArray[i].Substring(imageClassDirArray[i].LastIndexOf('\\') + 1);
                string[] imageFileDirArray = Directory.GetFiles(inputDatabaseDir + imageUserName);
                imagesUserList.Add(imageFileDirArray.Length);
                var user = new User
                {
                    Username        = imageUserName,
                    ImageDatabaseId = imageDatabase.ImageDatabaseId,
                    UserId          = Guid.NewGuid(),
                };
                userList.Add(user);

                for (int j = 0; j < imageFileDirArray.Length; j++)
                {
                    string imageName         = imageFileDirArray[j].Substring(imageFileDirArray[j].LastIndexOf('\\') + 1);
                    System.Drawing.Image img = System.Drawing.Image.FromFile(imageFileDirArray[j]);
                    imageHeightList.Add(img.Height);
                    imageWidthList.Add(img.Width);
                    byte[] arr;
                    using (MemoryStream ms = new MemoryStream())
                    {
                        img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                        arr = ms.ToArray();
                    }

                    var photoImage = new Entities.Image
                    {
                        Format         = "JPEG",
                        ImageByteArray = arr,
                        UserId         = user.UserId,
                        ImageId        = Guid.NewGuid(),
                        ImageName      = imageName,
                    };
                    imageList.Add(photoImage);
                }
            }

            if (isSameValueInArray(imagesUserList))
            {
                imageDatabase.isSameTotalImageForUser = true;
                imageDatabase.TotalImageForUser       = imagesUserList.First();
            }

            if (isSameValueInArray(imageHeightList) && isSameValueInArray(imageWidthList))
            {
                imageDatabase.isSameImageSize = true;
                imageDatabase.ImageHeight     = imageHeightList.First();
                imageDatabase.ImageWidth      = imageWidthList.First();
            }
        }
        public void load_image_database(string fileName, bool sift)
        {
            //ui->set_images(queryImage, NULL);
            //ui->set_features(queryFeatures, NULL);

            //// Delete the current database.
            //if (db != NULL)
            //{
            //    delete db;
            db = null;
            //}

            //// Delete the current result image.
            //if (resultImage != NULL)
            //{
            //    resultImage->release();
            //    resultImage = NULL;
            //}
            _resultImage = string.Empty;

            db = new ImageDatabase();

            //// Load the database.
            if (!db.load(fileName, sift))
            {
                db = null;
                MessageBox.Show("Couldn't load database");
            }

            //ui->refresh();
        }