Menu

Java Maturity

2011-11-16
2018-03-16
  • Dwayne Deero

    Dwayne Deero - 2011-11-16

    Hi Robert,

    I'm hoping for a little more information on the current state of the Java
    port.

    -Is 1-N search functionality implemented? If so, is it as reliable as the C# version and has anyone done any benchmarks for matching speed?

    -Is the namespace roughly equivalent to the C# implementation?

    Thanks,

    Dwayne

     
  • Robert Važan

    Robert Važan - 2011-11-16

    Hi Dwayne,

    1. There's no Identify method in Java port. You can however run Verify method in a loop and pick highest score yourself. It's slower, but it works.

    2. Note that there's no extractor for Java. Just the matcher is ported.

    3. Matching accuracy is exactly the same in C# and Java. Calculated similarity score is identical. This is checked by our automated tests. These tests also loop over our database of fingerprints to ensure the Java port doesn't crash randomly on some fingerprints.

    4. No benchmarks for Java. It's likely slower, but I might be surprised.

    5. Namespace is about the same except for small differences due to Java syntax and conventions.

    Project member Bharavi Gade, the original developer of the Java port, promised
    improvements to the port. He is quite busy though, AFAIK.

    Kind Regards,

    Robert

     
  • Robert Važan

    Robert Važan - 2012-04-01

    Hi Dwayne,

    API docs for the java port are available here:

    http://sourceafis.sourceforge.net/javadoc/

    Kind Regards,

    Robert

     
  • Bob

    Bob - 2012-04-02

    Hi Robert,

    If the extraction is not yet implemented, how would I match two fingerprints
    using png images loaded from files?

    I have given the API a quick look and after creating a person, I ran the
    following:

    List<fingerprint> fpl = new ArrayList<fingerprint>();</fingerprint></fingerprint>

    fpl.add(fp1);

    Person person = new Person();

    person.setFingerprints(fpl);

    float score = afis.verify(person, person);

    At which point an exception was thrown as per below:

    java.lang.NullPointerException

    at sourceafis.matching.minutia.EdgeTable.reset(Unknown Source)

    at sourceafis.matching.minutia.MinutiaMatcher.BuildIndex(Unknown Source)

    at sourceafis.matching.ParallelMatcher.prepare(Unknown Source)

    at sourceafis.simple.AfisEngine.verify(Unknown Source)

    Any pointers on what I might be doing wrong?

     
  • Robert Važan

    Robert Važan - 2012-04-02

    Hi,

    The Java port is still experimental. If you need production quality, use the
    original .NET version. Bharavi has promised to extend the java port with full
    template extractor, but AFAIK he is quite busy, so it wouldn't happen anytime
    soon. You can pay someone to do it in less than a month, but I think it would
    be less hassle for you to use commercial AFIS now and switch to SourceAFIS
    when the java port is finished.

    Matcher-only java port is still quite useful. It's a realistic scenario to
    have .NET-based client code and java-based server code. Template is extracted
    directly on the client using SourceAFIS for .NET and the template is then sent
    over to the server where SourceAFIS for Java performs matching over a database
    of already registered fingerprints. Another scenario involves fingerprint
    reader that performs its own extraction and produces standard ISO templates,
    which can be imported by SourceAFIS for Java and matched the same way as
    native templates.

    BTW, thanks for the exception log. Now I see that error reporting could be
    much better and I will improve it in the next release.

    Kind Regards,

    Robert

     
  • Bob

    Bob - 2012-04-02

    Hi Robert,

    Thank you for your response.

    We have used a few commercial products for fingerprint matching. The biggest
    problem with those is twofold. Most of them are quite bloated for simple
    fingerprint identification purposes. They also include a lot of fingerprint
    drivers which most of the times are not needed for what we are trying to
    achieve. And secondly, not all of fingeprint solutions run on Windows.

    This is where I would like the Java port of SourceAFIS to succeed. If we have
    the pure Java port, we could easily adapt it to Android for example.

    If the Java port is not mature enough yet, we can try
    http://jni4net.sourceforge.net/ because we
    have to use Java.

    I do not have much experience with dotnet so when I try to generate the proxy
    with jni4net, I get some version mismatch, i.e. SourceAFIS.dll was compiled
    with a different version of dotnet to the one being used by proxygen.

    This is where I get stuck. Until SourceAFIS Java is mature enough, we could
    potentially use jni4net solution albeit for Windows only.

    Great work you are doing here Robert. If you need any help with testing, etc.
    let me know...

     
  • Robert Važan

    Robert Važan - 2018-03-16

    Java port of SourceAFIS has been released:

    https://sourceafis.machinezoo.com/java

     

Log in to post a comment.

MongoDB Logo MongoDB