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.
Note that there's no extractor for Java. Just the matcher is ported.
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.
No benchmarks for Java. It's likely slower, but I might be surprised.
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
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...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
Hi Dwayne,
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.
Note that there's no extractor for Java. Just the matcher is ported.
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.
No benchmarks for Java. It's likely slower, but I might be surprised.
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
Hi Dwayne,
API docs for the java port are available here:
http://sourceafis.sourceforge.net/javadoc/
Kind Regards,
Robert
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?
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
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...
Java port of SourceAFIS has been released:
https://sourceafis.machinezoo.com/java