Ejemplo n.º 1
0
        public User TestFromFeature(Guid frsId, MatrixString matrixString)
        {
            var db  = new FrcContext();
            var frs = db.FaceRecognitionSystems.Where(x => x.FaceRecognitionSystemId == frsId).FirstOrDefault();

            if (frs == null)
            {
                throw new Exception("Face recognition system is not exist");
            }

            User result;

            switch (frs.Type)
            {
            case "LDA":
                result = recognizeLDAbyFeature(frs.TypeSystemId, db, frsId, matrixString);
                break;

            default:
                throw new NotImplementedException();
            }

            db.Dispose();
            return(result);
        }
Ejemplo n.º 2
0
        private User recognizeLDAbyFeature(Guid ldaId, FrcContext db, Guid frsId, MatrixString matrixString)
        {
            var systemEtalonCount = 1;
            // Копируется в testLDA нужно отрефакторить в более лучшем стиле.
            // var ldaEntity = db.LDAs.Where(x => x.LDAId == ldaId).FirstOrDefault();

            // if (ldaEntity == null)
            // {
            //     throw new Exception("LDA entity is not exist");
            // }

            // var averageMatrixString = db.MatrixStrings.Where(x => x.MatrixStringId == ldaEntity.AverageImageMatrixId).FirstOrDefault();
            // var leftMatrixString = db.MatrixStrings.Where(x => x.MatrixStringId == ldaEntity.LeftMatrixId).FirstOrDefault();
            // var rightMatrixString = db.MatrixStrings.Where(x => x.MatrixStringId == ldaEntity.RightMatrixId).FirstOrDefault();

            // var averageMatrix = MatrixHelper.MatrixString2Matrix(averageMatrixString);
            // var leftMatrix = MatrixHelper.MatrixString2Matrix(leftMatrixString);
            // var rightMatrix = MatrixHelper.MatrixString2Matrix(rightMatrixString);

            // var ba = Convert.FromBase64String(imageByteArray);
            // var imageMatrix = DenseMatrix.OfArray(ImageHelper.ImageByteArray2pixelArray(ba));
            // var featureMatrix = leftMatrix * (imageMatrix - averageMatrix) * rightMatrix;
            var featureMatrix         = MatrixHelper.MatrixString2Matrix(matrixString);
            var etalonList            = db.Etalons.Where(e => e.FaceRecognitionSystemId == frsId).ToList();
            var etalonForUserTempList = etalonList.GroupBy(x => x.UserId).SelectMany(x => x.Take(systemEtalonCount)).ToList();
            var userId = CompareToEtalonList(featureMatrix, etalonForUserTempList, db);

            return(db.Users.Where(x => x.UserId == userId).FirstOrDefault());
        }
Ejemplo n.º 3
0
        public UserDto ByFeature([FromBody] RecognizeFeatureDto item)
        {
            var frs          = new FaceRecognitionTester();
            var matrixString = new MatrixString
            {
                DimentionOne = item.DimentionOne,
                DimentionTwo = item.DimentionTwo,
                Value        = item.FeatureMatrixString,
            };
            var user = frs.TestFromFeature(item.FrsId, matrixString);

            return(new UserDto
            {
                UserId = user.UserId,
                Username = user.Username,
            });
        }