public static double[][] GetQueryFeaturesSet(Bitmap image, SOMParams somParams) { var featExtractor = new Ratha1995MinutiaeExtractor(); var features = featExtractor.ExtractFeatures(image); var queryFeaturesSet = new double[features.Count][]; for (var i = 0; i < features.Count; i++) { // create new sample var feature = features[i]; queryFeaturesSet[i] = new double[somParams.CharacteristicsCount]; queryFeaturesSet[i][0] = feature.Angle * somParams.AngleMultiplier; queryFeaturesSet[i][1] = (double)feature.MinutiaType * somParams.TypeMultiplier; queryFeaturesSet[i][2] = feature.X * somParams.CoordsMultiplier; queryFeaturesSet[i][3] = feature.Y * somParams.CoordsMultiplier; queryFeaturesSet[i][4] = feature.GetHashCode() * somParams.HashCodeMultiplier; } return queryFeaturesSet; }
private void ExtractFeatures() { var featExtractor = new Ratha1995MinutiaeExtractor(); foreach (var person in existingPeople) { var fingerprintOwner = new Person(person); foreach (var finger in wantedFingers) { var fingerprintFinger = new Fingerprint(int.Parse(finger)); foreach (var scan in wantedScans) { var fingerprintImg = ImageLoader.LoadImage(string.Format(@"{0}{1}_{2}_{3}.tif", Folder, person, finger, scan)); var features = featExtractor.ExtractFeatures(fingerprintImg); var fingerprintScan = new Scan(int.Parse(scan), features); fingerprintFinger.Scans.Add(fingerprintScan); } fingerprintOwner.Fingerprints.Add(fingerprintFinger); } People.Add(fingerprintOwner); } }