GithubHelp home page GithubHelp logo

robertvazan / sourceafis-net Goto Github PK

View Code? Open in Web Editor NEW
78.0 8.0 34.0 2.69 MB

Fingerprint recognition engine for .NET that takes a pair of human fingerprint images and returns their similarity score. Supports efficient 1:N search.

Home Page: https://sourceafis.machinezoo.com/net

License: Apache License 2.0

C# 99.42% Python 0.58%
biometrics fingerprint fingerprint-authentication csharp dotnet dotnet-library feature-extraction minutia sourceafis

sourceafis-net's Introduction

SWUbanner

SourceAFIS for .NET

Nuget Build status

SourceAFIS for .NET is a pure C# port of SourceAFIS, an algorithm for recognition of human fingerprints. It can compare two fingerprints 1:1 or search a large database 1:N for matching fingerprint. It takes fingerprint images on input and produces similarity score on output. Similarity score is then compared to customizable match threshold.

More on homepage.

Status

Stable and maintained.

Getting started

See homepage.

Documentation

Feedback

Bug reports and pull requests are welcome. See CONTRIBUTING.md.

License

Distributed under Apache License 2.0.

sourceafis-net's People

Contributors

dependabot[bot] avatar robertvazan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sourceafis-net's Issues

SourceAFIS for .NET 1.7 Vs SourceAFIS for Java

How much time is expected to be SourceAFIS for .NET V3 complete and stable .. and is there an article explaining the features that are not available in the version 1.7 compared to the full version of Java.

Another things .. When I trying the SourceAFIS for .NET 1.7 I assign the same fingerprint to two persons then try to perform 1:1 verification
float score = afis.Verify(person1, person2);

The result is 89.67485 .. This result makes me inquire about two things:

  1. Isn't the score result supposed to be 100% ?
  2. By verification some another finger print the resulted score is above 100, What that mean?

Thanks in advances

FingerPrint Template

With very very juicy respect I want to make a request that In a very cheap way we can buy an arduino and a fingerprint module.
So we can get hardly a template from this combination and send to visual studio but not images. Please provide a method to compare already and newly received template from fingerprint module other wise a fingerprint scanner have too much price to get right on work. We just need to matches these template. Thanks..

This is a template which we receive from fingerprint Module:

"FFFFFFFFFFFFFFFFFF034D35300143017C000000000000000000000000000000000000000000000000000000000000000000000000000000100004008B0001010101010101010101010114D3EF01FFFFFFFF0200824214245E31A1E15E60A6905E3C9D63FF5723659F333000BF5E31517F5038533F90C8E17C78388FFA894688DA72CA443A7D3B4BB86E3CC7D87D40255929CA5C593CBDC236793F8E164B2E65B7713A8CB770C00EB775C363F769CC515760C25774874986946C1EA4554C2B907541BE981547C6413550C918355249D6954FCB13F5393CEF01FFFFFFFF02008254BC27B272BBE27368C26C1366C2D1F37445E6333ECB44533AA361B14BA8D271593CD051473F6A1145FFFFFFFFFFFFFFFFFFFFFF5041AA316AC36191454580D15549C1913CCA5DD173190EBE1B3D045E15B59C7F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260AEF01FFFFFFFF0200820303551C000120017A0000000000000000000000000000000000000000000000000000000000000000000000000000000F000400770000033000F3FFF3FFFFBFEFEFBBAAAAAAAAA999956555555545144444004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001193EF01FFFFFFFF0200823E12E45E2716221E7017"

High score

Hello, bro.
I'm watching in Bard and ChatGPT that the maximium score is 100, but I'm having score of more 500.
Also, it's true when I put my index finger and any other finger. I don't now if that's normal.

Thanks

Problem create archivo .dat

hello,

I have 2 images in .png I want to convert them to .dat and get the height and width based on the .dat file created.
since opening the example file probe.png has a resolution of 388 x 374; but in the example code with the .dat file it indicates 332 x 533, and there is no coincidence in these values, and for the program to work it is necessary to have the exact height and width according to the file.
How do I get that exact height and width value that sourceAfis needs so that it can be executed normally.

P.S. run the program from .net using the .dat files (gray-matching.dat and gray-probe.dat) and with the code from the page and all ok;
but if a height or width value is changed it no longer executes

The name 'Files' does not exist in the current context

Have no prior experience with c# at all. I am having a hard time setting up.

program.cs-------
`
using SourceAFIS;

namespace AFIS
{
class afis {
static void Main(string[] args)
{
var options = new FingerprintImageOptions { Dpi = 508 };
var probe = new FingerprintTemplate(
new FingerprintImage(
160, 160, Files.ReadAllBytes("lIndex_01.png"), options));

        var candidate = new FingerprintTemplate(
            new FingerprintImage(
                160, 160, Files.ReadAllBytes("lIndex_02.png"), options));
    }
}

}
`

AFIS.csproj
`

Exe netcoreapp2.0 `

How can I get this running ?

Thank you!

dont work

i get this notification when i run it
Screenshot 2021-09-04 161832

Singular points

if a fingerprint template have Core Point,Delta,and MinutiaType have Ridge Divergence,Enclosure,it will be a great job.

Create Database

In your 1.7 version I use this code to create XML database but in the new version how I can create database. Please show me the overcoming, thank you. Wish you a good day.

        static MyPerson Enroll(string filename, string name)
        {
            try
            {
                Console.WriteLine("Enrolling {0}...", name);
                Fingerprint fp = new Fingerprint();
                Console.WriteLine(" Loading image from {0}...", filename);
                fp.AsBitmap = new Bitmap(Bitmap.FromFile(filename));
                Console.WriteLine(" Image size = {0} x {1} (width x height)", fp.Image.GetLength(1), fp.Image.GetLength(0));
                MyPerson person = new MyPerson();
                person.Name = name;
                person.Fingerprints.Add(fp);
                Console.WriteLine(" Extracting template...");
                Afis.Extract(person);
                byte[] template = fp.Template;
                Console.WriteLine(" Template size = {0} bytes", fp.Template.Length);
                return person;
            }
            catch
            {
                MyPerson person = new MyPerson();
                return person;
            }

        }

Match/compare two fingerprint templates

I want to test a string (captured by the digital biometric device) and I want to compare it with other templates. In the examples I only found opening an image, I want to pass the string directly, because I already have the template string.
I want to know the comparison score or if it's the same finger.
How should I do?

Below two readings from the same finger:


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


MINEX benchmark

Hey, nice code.

Did you try submitting it for MINEX bechmark ?

Fail to visualize the block orientation

Hi,

First I am appreciated with your great effort on this project with all the detail explanation on the algorithm. However I am not able to display the Smoothed orientation correctly like [https://sourceafis.machinezoo.com/transparency/smoothed-orientation]
image
, here is what I get
image

I try to visualize the block orientation base on the highlighted property
image

As you can see from the highlighted part in the attached image, the angle after converted from radian (4.6509223) to degree is around 265 and the angle seems in the opposite direction if compare to the background fingerprint image. FYI I use the probe.png that come along with this source code as the fingerprint sample. May I know what am I doing wrong in visualizing the block orientation?

Create fingerprint template it's too slow

Hello,
So, I'm using your library in a Java Android application and I'm having the following problem, the Create () function of the FingerprintTemplate method is very slow and sometimes my application closes while executing this method.

*Code snippet

listBiometria = conSql.returnAllBiometry();

FingerprintTemplate candidate = new FingerprintTemplate();
candidate.dpi(500);
candidate.create(img);

for(Biometry biometry : listBiometria)
{
    FingerprintTemplate probe = new FingerprintTemplate()
            .dpi(500)
            .create(biometry.getBiometria());

    score = new FingerprintMatcher()
            .index(probe)
            .match(candidate);
}

And for my bad luck I need to use this method inside a loop, which makes things even more slow.

How much memory is required for large scale search?

I tested this database with 100,000 records, 10 fingerprint each and it requires 46 Gb of RAM just for the templates. Is this as designed? Previous version of SourceAFIS 1.7 required 5-10 times less memory.

Image quality

Hi,

SourceAFIS-net provides a mechanism to check fingerprint image quality?

Extracting minutiae programmatically

Hello,

Is there a proper way to programmatically extract the minutiae? I'm interested in releasing some software to build a PIV biometric template (CBEFF).

I can think of a couple of hacks that would work (deserializing to a class that's basically a copy but not protected, abusing reflection, etc) but I'd prefer not to break upstream compatibility with future versions if I don't need to.

Is there a more "official" way to get access to the minutiae?

Creating an image from a image byte array

Hi there

I am trying to implement this library into a web-service for a project of mine, but I am having issues testing out how to create a image from a byte array. This byte array is an image converted into bytes via the web service. However, when I try and create an image through FingerprintImage, I get an 'Specified argument was out of the range of valid values' error.

Below is the code I am using to try and accomplish this -

var options = new FingerprintImageOptions { Dpi = 500 }; var template = new FingerprintTemplate( new FingerprintImage( 190, 265, File.ReadAllBytes(@"Images\sample.jpg"), options)); byte[] serialized = template.ToByteArray();

The error pop-ups on line 2. The image being used is a 190x265 picture of a fingerprint found off the net.

What would be the correct way in creating a template from an image using a byte array? Any help would be greatly appreciated!

Extract image

I am trying to bring this txt file to extract the characteristics but seem to have something I can't do.
tri_test.txt(192x192 508dpi)

Problematic Fingerprints

I am having some issues with verifying/matching a couple of individual's fingers. I have captured multiple sample fingers from this individual and have permission to submit it for testing/software improvement purposes. The quality of the fingerprints is of a high NFIQ score, so not sure why I cannot find a match for it against its counterparts.

PROBLEMATIC FINGERS.zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.