public ImageService(ImageDatabase imageDatabase, DescriptorMatherWrapper descriptorMatherWrapper, IOptionsMonitor <ConfigSettings> settings, IHostingEnvironment hostingEnvironment) { _hostingEnvironment = hostingEnvironment; _imageDatabase = imageDatabase; _settings = settings; _descriptorMatherWrapper = descriptorMatherWrapper; }
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); }
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 }
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); }
public static Image getImagesFromResponse(GraphicsDevice gd, NewTileResponse response) { return(ImageDatabase.LoadImageFromBase64String(gd, response.word, response.image)); }
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)); } }
static void UpdateImageIndexes() { m_ImageIndexes = ImageDatabase.Enumerate().ToList(); }
/// <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(); }
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(); }