kaiyum wrote:We have some Photos of few persion on our server(treated as Template) and will supply a picture of a persion. The program should identify the persion compared to the templates on the folder and will save to Database if matched.
We may give input as Still image or stream.
Please suggest which functionality should i use like you have in tutorials and samples in SDK.
PRB wrote:Good Afternoon!
I'm executing "AbisSample" in C# to test the matching process of two or more faces.
I have created 3 template:
- 2 with my faces (so i think the match will be correct).
- 1 with the face of another person (so i thing the match will not be correct).
Using the "verification" button of the form and loading the template of my face and matching it with the element of my face in the local database i obtain this result:
Matched with id=<Template ID>, score=146
Face match details: face index: 1; score: 146
face index: 0; score: 127;
face index: 0; score: 155;
Is this the message that indicates the correct match between the two faces?
And the next result indicates that the match in not correct?
Verified against id==<Template ID>,
Face match details: face index: -1; score: 0
face index: -1; score: 0;
I hope you can clear my doubt.
Thanx.
vaidasz wrote:PRB wrote:Good Afternoon!
I'm executing "AbisSample" in C# to test the matching process of two or more faces.
I have created 3 template:
- 2 with my faces (so i think the match will be correct).
- 1 with the face of another person (so i thing the match will not be correct).
Using the "verification" button of the form and loading the template of my face and matching it with the element of my face in the local database i obtain this result:
Matched with id=<Template ID>, score=146
Face match details: face index: 1; score: 146
face index: 0; score: 127;
face index: 0; score: 155;
Is this the message that indicates the correct match between the two faces?
And the next result indicates that the match in not correct?
Verified against id==<Template ID>,
Face match details: face index: -1; score: 0
face index: -1; score: 0;
I hope you can clear my doubt.
Thanx.
Hello,
Yes, you are right. But as I see in the first matching, you perform not verfication but identification (1:N matching) while the second matching is berformed as verification (1:1 matching).
PRB wrote:vaidasz wrote:PRB wrote:Good Afternoon!
I'm executing "AbisSample" in C# to test the matching process of two or more faces.
I have created 3 template:
- 2 with my faces (so i think the match will be correct).
- 1 with the face of another person (so i thing the match will not be correct).
Using the "verification" button of the form and loading the template of my face and matching it with the element of my face in the local database i obtain this result:
Matched with id=<Template ID>, score=146
Face match details: face index: 1; score: 146
face index: 0; score: 127;
face index: 0; score: 155;
Is this the message that indicates the correct match between the two faces?
And the next result indicates that the match in not correct?
Verified against id==<Template ID>,
Face match details: face index: -1; score: 0
face index: -1; score: 0;
I hope you can clear my doubt.
Thanx.
Hello,
Yes, you are right. But as I see in the first matching, you perform not verfication but identification (1:N matching) while the second matching is berformed as verification (1:1 matching).
Hello Vaidasz! Thanx for the answer!
You're right, i've posted the result message from two different operations.
So, if the verification process verify that two faces are not from the same person the "score" value will be always "0"?
Otherwise, if two faces are from the same person the "score" value is more than 0? The "score" value is higher depending on how two faces are equals?
Thanx!
PRB wrote:For example i had sometimes a return value of "146" and sometimes a return value of "9634" when matching a ".dat" file with a template in the local database.
I've obtained the result of "9634" matching a ".dat" file with its own template (generate in the same moment i saved ".dat" file on my PC's file system).
If the ".dat" file and the template refers to the same face what is the meaning of "9634" result? Does not match for a 100% percentage?
code = cluster_get_results_data(clientHandle, i, id_len, idStr, md_len, mdStr);
suleha wrote:Hi,
I'm having problem extracting the matching score using NServer.
In SendTask tutorial:
- Code: Select all
code = cluster_get_results_data(clientHandle, i, id_len, idStr, md_len, mdStr);
Is it correct that mdStr is the matching score? I tried to print out the value, but it return the same value for 3 difference ID returned (the image sent to be matched contains 3 faces).
NInt score = 0;
code = cluster_get_results_similarity(clientHandle, 0, id_len, idStr, &score);
code = cluster_packet_create_standard_template_task(clientHandle, CLUSTER_NORMAL, (int)nTemplateBufferSize, nTemplateBuffer, templateType,
(int)strlen(query), query,
cluster_task_params_get_param_buffer_size(cluster_task_params),
cluster_task_params_get_param_buffer(cluster_task_params), 100);
suleha wrote:Another question. Is there any accuracy difference between using NServer and NMatcher?
I ran FacesSamplesWX and AbisSampleCS, enrolled with the same faces. And then I tried to identify the same image file on both applications.
I found that face detection in AbisSampleCS is not as good as FacesSamplesWX (I set all extraction, detection and identification settings to be the same value).
suleha wrote:How do I get matching score for other matched image using NServer.
As an example, I have 1000 people in the database, and ID#3 is identified correctly... But there are other people who might have similar face features as people ID#3 who also has quite high score (although not the highest).
I would like to have this ID information with its score.
suleha wrote:Another one, how do I get the score in terms of percentage? What is the maximum value of a score?
Verified against id=TEST - 001
Face match details: face index: 0; score: 9322
face index: 0; score: 9334;
face index: -1; score: 0;
face index: -1; score: 0;
face index: -1; score: 0;
Verified against id=RIMOLDI - 001
Face match details: face index: 3; score: 8
face index: 1; score: 15;
face index: -1; score: 0;
face index: -1; score: 0;
face index: 0; score: 20;
Verified against id=RIMOLDI - 002
Face match details: face index: 1; score: 0
face index: 0; score: 9;
face index: 0; score: 11;
face index: -1; score: 0;
face index: -1; score: 0;
So, in the first example, what means 9322? Is that a percentual value? I can "read" that value as "93,22%"?
In the other example "score: 0" means that two faces does not match. But "score: 8" means that that faces match with a probability of 8%?
NBuffer probeTemplate = ExtractTemplate(extractor, img1, false);
NBuffer[] galleryTemplates = new NBuffer[1];
galleryTemplates[0] = ExtractTemplate(extractor, img2, false);
NMatchingDetails details;
matcher.Verify(probeTemplate, galleryTemplates[0], out details);
NBuffer probeTemplate = ExtractTemplate(extractor, img1, false);
NBuffer[] galleryTemplates = new NBuffer[1];
galleryTemplates[0] = ExtractTemplate(extractor, img2, false);
NMatchingDetails details;
matcher.Verify(probeTemplate, galleryTemplates[0], out details);
eru_iluvatar wrote:Hi,
in part of my bachelor thesis I need to compare 2 photos - if they contain the same person or not - Show how much do they look like, for example in percentage.
I am using this code:
...
Variable details contains FacesScore property, and its for example 37. What does it mean? Its 37% similarity of faces or what? If not, how can I get how much do faces look like each other?
Thanks a lot for a fast reply!
double MatchingThresholdToFAR(int score, int ThFARLogRatio)
{
if(score < 0) th = 0;
return pow(10.0, -score / ThFARLogRatio + 2);
}
suleha wrote:Hi,
I couldn't recall where I got this equation/function:
- Code: Select all
double MatchingThresholdToFAR(int score, int ThFARLogRatio)
{
if(score < 0) th = 0;
return pow(10.0, -score / ThFARLogRatio + 2);
}
'score' refers to matching score value returned by the matching server (NServer), while ThFARLogRatio is by referring to Table in chapter 4.1.1 Matching Threshold and FAR/FRR of the SDK documentation (12, 24, 36 etc).
In order to get the matching accuracy, I did this: accuracy = 100 - scoreFAR;
Is this correct?
_matcher = new NMatcher();
MessageBox.Show("Matcher Speed Before:" + _matcher.FacesMatchingSpeed);
_matcher.FacesMatchingSpeed = nmsFacesMatchingSpeed;
MessageBox.Show("Matcher Speed After:" + _matcher.FacesMatchingSpeed);
andresvergara wrote:Hello,
I use VeriLook 5.2, i tried to set the FacesMatchingSpeed property value but it not change.
the code is as follows
- Code: Select all
_matcher = new NMatcher();
MessageBox.Show("Matcher Speed Before:" + _matcher.FacesMatchingSpeed);
_matcher.FacesMatchingSpeed = nmsFacesMatchingSpeed;
MessageBox.Show("Matcher Speed After:" + _matcher.FacesMatchingSpeed);
nmsFacesMatchingSpeed is NMatchingSpeed.High and the messages shows "Matcher Speed Before: Low" and "Matcher Speed After: Low"
Please...help
andresvergara wrote:The output score _matcher.IdentifyNext method varies according to the value entered in _matcher.FacesMatchingThreshold?
Martynas wrote:Hi,andresvergara wrote:The output score _matcher.IdentifyNext method varies according to the value entered in _matcher.FacesMatchingThreshold?
What do you mean by saying "varies"? Could you provide more details.
andresvergara wrote:excuse my English.......In the Neurotec_Biometric_SDK_Documentation.pdf say
"Matching Threshold: the minimum score that verification and identification functions accept to assume that the compared face belog to the same person."
My question is
Use The _matcher.IdentifyNext method internally the _matcher.FacesMatchingThreshold parameter for calculate the output score?
If _matcher.FacesMatchingThreshold is highest or smallest, how influences in that score?
_matcher.IdentifyStart(templateA);
score = _matcher.IdentifyNext(templateB);
if (score > _matcher.FacesMatchingThreshold)
{
MessageBox.Show("Match template");
}else{
MessageBox.Show("Not Match template");
}
andresvergara wrote:Hi,
then, is correct the following lines in my code?
- Code: Select all
_matcher.IdentifyStart(templateA);
score = _matcher.IdentifyNext(templateB);
if (score > _matcher.FacesMatchingThreshold)
{
MessageBox.Show("Match template");
}else{
MessageBox.Show("Not Match template");
}
with a FAR=100%, any score > 0 ------>"Match template"
with a FAR=1%, any score>24 --------->"Match template"
is correct?
Error processing search request for subject 0 RightIndex
Stack Trace:
Neurotec.NInvalidOperationException: Identification is not started
at Neurotec.NResult.RaiseError(Int32 error)
at Neurotec.NResult.Check(Int32 result)
at Neurotec.Biometrics.NMatcher.IdentifyEnd()
at Program.Verifinger.VeriFinger65.performSearch(BTemplate template)
at Program.Verifinger.VeriFingerService.searchThread(Object instance)
CATCH: at Neurotec.NResult.RaiseError(Int32 error)
at Neurotec.NResult.Check(Int32 result)
at Neurotec.Biometrics.NMatcher.IdentifyStart(NBuffer template)
at Program.Verifinger.VeriFinger65.performSearch(BTemplate template)
public static List<IMatcherResults> performSearch(BTemplate template)
{
List<IMatcherResults> results = new List<IMatcherResults>();
NMatcher matcher = null;
initializeMatcher(out matcher);
NTemplate probeTemplate = null;
try
{
Modality modality = template.Modality;
probeTemplate = new NTemplate(template.Template);
matcher.IdentifyStart(probeTemplate.Save());
DTemplate[] templates;
switch (modality)
{
case Modality.LeftIndex:
templates = targets7.getGalleryArray();
break;
case Modality.RightIndex:
templates = targets2.getGalleryArray();
break;
default:
probeTemplate.Dispose();
return results;
}
for (int i = 0; i < templates.Length; i++)
{
NTemplate targetTemplate = null;
try
{
targetTemplate = new NTemplate(templates[i].Template);
int score = matcher.IdentifyNext(targetTemplate.Save());
if (score > 0)
{
VeriFinger65SearchResults result = new VeriFinger65SearchResults();
result.ProbeTemplate = template;
result.TargetTemplate = templates[i];
result.Score = score;
results.Add(result);
}
targetTemplate.Dispose();
}
catch
{
if (targetTemplate != null)
targetTemplate.Dispose();
}
}
}
catch (Exception ex)
{
MatcherEventLog.reportLog("CATCH: " + ex.StackTrace.ToString());
throw new VeriFingerException("Error occurred when performing a search", ex);
}
finally
{
if (matcher != null)
{
matcher.IdentifyEnd();
matcher.Dispose();
}
if (probeTemplate != null)
{
probeTemplate.Dispose();
}
}
return results;
}
KimNguyen wrote:I am using the full Neurotechnology suite to perform matching on a face, two irises, and two fingers. The logic is the same for each modality, but I'm having issues with getting a second finger to match. Essentially a list of objects in another class is iterated on and each template is passed to the performSearch method that I'll list below. In a previous version of this code that used VF 6.2, this implementation worked. But now, it is not working. Any thoughts? Below is the stack trace from the event viewer:
- Code: Select all
Error processing search request for subject 0 RightIndex
Stack Trace:
Neurotec.NInvalidOperationException: Identification is not started
at Neurotec.NResult.RaiseError(Int32 error)
at Neurotec.NResult.Check(Int32 result)
at Neurotec.Biometrics.NMatcher.IdentifyEnd()
at Program.Verifinger.VeriFinger65.performSearch(BTemplate template)
at Program.Verifinger.VeriFingerService.searchThread(Object instance)
- Code: Select all
CATCH: at Neurotec.NResult.RaiseError(Int32 error)
at Neurotec.NResult.Check(Int32 result)
at Neurotec.Biometrics.NMatcher.IdentifyStart(NBuffer template)
at Program.Verifinger.VeriFinger65.performSearch(BTemplate template)
Below is the code:
- Code: Select all
public static List<IMatcherResults> performSearch(BTemplate template)
{
List<IMatcherResults> results = new List<IMatcherResults>();
NMatcher matcher = null;
initializeMatcher(out matcher);
NTemplate probeTemplate = null;
try
{
Modality modality = template.Modality;
probeTemplate = new NTemplate(template.Template);
matcher.IdentifyStart(probeTemplate.Save());
DTemplate[] templates;
switch (modality)
{
case Modality.LeftIndex:
templates = targets7.getGalleryArray();
break;
case Modality.RightIndex:
templates = targets2.getGalleryArray();
break;
default:
probeTemplate.Dispose();
return results;
}
for (int i = 0; i < templates.Length; i++)
{
NTemplate targetTemplate = null;
try
{
targetTemplate = new NTemplate(templates[i].Template);
int score = matcher.IdentifyNext(targetTemplate.Save());
if (score > 0)
{
VeriFinger65SearchResults result = new VeriFinger65SearchResults();
result.ProbeTemplate = template;
result.TargetTemplate = templates[i];
result.Score = score;
results.Add(result);
}
targetTemplate.Dispose();
}
catch
{
if (targetTemplate != null)
targetTemplate.Dispose();
}
}
}
catch (Exception ex)
{
MatcherEventLog.reportLog("CATCH: " + ex.StackTrace.ToString());
throw new VeriFingerException("Error occurred when performing a search", ex);
}
finally
{
if (matcher != null)
{
matcher.IdentifyEnd();
matcher.Dispose();
}
if (probeTemplate != null)
{
probeTemplate.Dispose();
}
}
return results;
}
The only thing that has really changed is VF version and before any of the searching happens I submit all the fingerprint templates to the service for quality checking (previously I submitted a smaller subset). It appears the error is happening WITHIN Neuro so I can't even see exactly what the issue is. Any thoughts?
KimNguyen wrote:I am using the full Neurotechnology suite to perform matching on a face, two irises, and two fingers. The logic is the same for each modality, but I'm having issues with getting a second finger to match. Essentially a list of objects in another class is iterated on and each template is passed to the performSearch method that I'll list below. In a previous version of this code that used VF 6.2, this implementation worked. But now, it is not working. Any thoughts? Below is the stack trace from the event viewer:
- Code: Select all
Error processing search request for subject 0 RightIndex
Stack Trace:
Neurotec.NInvalidOperationException: Identification is not started
at Neurotec.NResult.RaiseError(Int32 error)
at Neurotec.NResult.Check(Int32 result)
at Neurotec.Biometrics.NMatcher.IdentifyEnd()
at Program.Verifinger.VeriFinger65.performSearch(BTemplate template)
at Program.Verifinger.VeriFingerService.searchThread(Object instance)
- Code: Select all
CATCH: at Neurotec.NResult.RaiseError(Int32 error)
at Neurotec.NResult.Check(Int32 result)
at Neurotec.Biometrics.NMatcher.IdentifyStart(NBuffer template)
at Program.Verifinger.VeriFinger65.performSearch(BTemplate template)
Below is the code:
- Code: Select all
public static List<IMatcherResults> performSearch(BTemplate template)
{
List<IMatcherResults> results = new List<IMatcherResults>();
NMatcher matcher = null;
initializeMatcher(out matcher);
NTemplate probeTemplate = null;
try
{
Modality modality = template.Modality;
probeTemplate = new NTemplate(template.Template);
matcher.IdentifyStart(probeTemplate.Save());
DTemplate[] templates;
switch (modality)
{
case Modality.LeftIndex:
templates = targets7.getGalleryArray();
break;
case Modality.RightIndex:
templates = targets2.getGalleryArray();
break;
default:
probeTemplate.Dispose();
return results;
}
for (int i = 0; i < templates.Length; i++)
{
NTemplate targetTemplate = null;
try
{
targetTemplate = new NTemplate(templates[i].Template);
int score = matcher.IdentifyNext(targetTemplate.Save());
if (score > 0)
{
VeriFinger65SearchResults result = new VeriFinger65SearchResults();
result.ProbeTemplate = template;
result.TargetTemplate = templates[i];
result.Score = score;
results.Add(result);
}
targetTemplate.Dispose();
}
catch
{
if (targetTemplate != null)
targetTemplate.Dispose();
}
}
}
catch (Exception ex)
{
MatcherEventLog.reportLog("CATCH: " + ex.StackTrace.ToString());
throw new VeriFingerException("Error occurred when performing a search", ex);
}
finally
{
if (matcher != null)
{
matcher.IdentifyEnd();
matcher.Dispose();
}
if (probeTemplate != null)
{
probeTemplate.Dispose();
}
}
return results;
}
The only thing that has really changed is VF version and before any of the searching happens I submit all the fingerprint templates to the service for quality checking (previously I submitted a smaller subset). It appears the error is happening WITHIN Neuro so I can't even see exactly what the issue is. Any thoughts?
TIlles wrote:Hello everyone!
We have been working for a few weeks now on upgrading from VeriFinger 4.3 to 6.5 in our Java application. We store fingerprints as generalized templates made of three prints in a database. When someone is trying to login to the system, we read her fingerprint and compare it to the stored fingerprints, thus we receive a similarity score.
We want to use a fix similarity score as the base of the identification, eg. if the resulting similarity score is greater than X, then the person can log in, but we have no idea what to use as X. We get a lot of different values as result, some as low as 200, some as high as 2200. Usually we get lower results if we compare prints and templates made with different scanners. We have a digitalPersona U.are.U 4000B and a 4500 scanner, using the former usually results in lower similarity scores.
Can you recommend a "safe" value for "X" that we can use with all scanners?
Martynas wrote:the similarity score represents the probability that the false acceptance has occurred. The higher the score, the lower the probability that the false acceptance occurred.
The matching algorithm uses the matching threshold to filter the matching results. If the similarity score is equal or higher than the set matching threshold, then the score result is returned and it is kept that the matching succeed. If the score is lower than the matching threshold, then the result as 0 is returned and it is kept that fingerprints did not match.
Usage of different fingerprint scanners will result in slower similarity scores, because of the different sensors used in different scanners. Each sensor has its own distortions and this leads to slightly different extracted minutiae position, and it can lead to lower matching scores.
We can not say the exact matching threshold, which will be safe - usually it is defined in the project requirements or are set by using a filed test results. What we can say is that the default matching threshold of 48 is quite low and it is not recommended to be used.
sgjoshi wrote:Hi,
I have downloaded the SDK, eclipse and Maven. I followed the instructions and was able to build the samples. I can even run those from command line on Windows. My interest is in fingerprint matching and here is what I did:
1. I ran the "simple-fingers-sample". The Swing application was able to register finger, create a template and save image too.
2. Now I want to create a new application - on the lines of tutorials provided. However, I am not familiar at all with Maven and hence have not been able to compile and run the tutorials.
3.There is a tutorial for verifying finger, which works on command prompt and prints out results of matching. However, this tutorial code reads templates or images. What I want is this:
a: register a finger and create template
b: ask the user to put his/her finger on scanner
c: get the image from scanner and then match with template and print the results
This may sound too simple, but can someone guide me?
Thanks,
Sudhir
jacobg wrote:Can you explain please exactly what is different from VeriLook at a lower level?
jacobg wrote:I'm looking into a solution to eventually be able to quickly identify a face from a set of thousands of templates.
NMatcher matcher = null;
matcher = new NMatcher();
matcher.FingersMatchingSpeed = NMatchingSpeed.High;
Console.WriteLine(matcher.FingersMatchingSpeed.ToString());
Namezz wrote:Hi, now I"m using a verifinger 6.6 SDK and try to set speed of matcher.
I set speed of matcher to high but it return speed to medium.
In case of speed medium and low, speed of matcher is set correctly.
How do I set speed of matcher to high?
- Code: Select all
NMatcher matcher = null;
matcher = new NMatcher();
matcher.FingersMatchingSpeed = NMatchingSpeed.High;
Console.WriteLine(matcher.FingersMatchingSpeed.ToString());
it returns medium.
result = NObjectSetParameterEx(extractor, NMP_FACES_MATCHING_SPEED, N_TYPE_INT, &matchingSpeed, sizeof(matchingSpeed));
or,
result = NObjectSetParameterWithPartEx(extractor, NM_PART_NONE, NMP_FACES_MATCHING_THRESHOLD_NEW, N_TYPE_DOUBLE, &matchingThre, sizeof(matchingThre));
...
jude wrote:and what is the parameter type of matching threshold?
snijsure wrote:Perhaps a basic question on identify v/s verify.
Say I have fingerprint image, for which I generate a template using the extractor (which is a template?), say its templateA
Now I have stored the templates in my database and I want to find out if this fingerprint matches any of the records from my db.
It seems like one can do NMatcher.identifyStart(templateA) and then loop through the data from db and do NMatcher.identifyNext(templateX).
Or one could do NMatcher.verify(templateA,templateN) and declare that templateN is same as templateA if these methods return value grater than zero?
So it it valid to assume basically identifyStart, Next can be used to do 1:N matching or one can also use NMatcher.verify()?
Or am I confused regarding NMatcher methods.
-Subodh
Dim extractor As New NFExtractor()
Dim record As NFRecord
Using image As NImage = fingerScanner.Capture()
If image Is Nothing Then
Console.WriteLine("Finger scanner unplugged. Exiting")
Exit Sub
End If
Dim extractionStatus As NfeExtractionStatus
Using grayscaleImage As NGrayscaleImage = image.ToGrayscale()
If grayscaleImage.ResolutionIsAspectRatio OrElse grayscaleImage.HorzResolution < 250 OrElse grayscaleImage.VertResolution < 250 Then
grayscaleImage.HorzResolution = 500
grayscaleImage.VertResolution = 500
grayscaleImage.ResolutionIsAspectRatio = False
End If
record = extractor.Extract(grayscaleImage, NFPosition.Unknown, NFImpressionType.LiveScanPlain, extractionStatus)
End Using
Dim nTemplate As NBuffer
nTemplate = record.Save()
Try
Dim db As Database = WizardData.LocalDatabase
WizardData.LocalMatchingResults = LocalMatcher.Instance.Identify(nTemplate, db) ' <<<<< nTemplate must be NTemplate type??
WizardData.ErrorMessage = ""
Catch ex As Exception
WizardData.ErrorMessage = ex.Message
Finally
MsgBox(WizardData.ResultMessage)
End Try
End Using
Revelation wrote:Hi
After capturing an image from a Fingerprint scanner, I want to immediately convert it to a Template and then scan the SQLite database for a match.
However, I only seem to be able to extract the image to an NBuffer object and I don't know how to convert it to an NTemplate in order to use LocalMatcher.Instance.Identify(nTemplate, db) to look for a match in the database.
Here is my code. Please could you help. Thank you.
- Code: Select all
Dim extractor As New NFExtractor()
Dim record As NFRecord
Using image As NImage = fingerScanner.Capture()
If image Is Nothing Then
Console.WriteLine("Finger scanner unplugged. Exiting")
Exit Sub
End If
Dim extractionStatus As NfeExtractionStatus
Using grayscaleImage As NGrayscaleImage = image.ToGrayscale()
If grayscaleImage.ResolutionIsAspectRatio OrElse grayscaleImage.HorzResolution < 250 OrElse grayscaleImage.VertResolution < 250 Then
grayscaleImage.HorzResolution = 500
grayscaleImage.VertResolution = 500
grayscaleImage.ResolutionIsAspectRatio = False
End If
record = extractor.Extract(grayscaleImage, NFPosition.Unknown, NFImpressionType.LiveScanPlain, extractionStatus)
End Using
Dim nTemplate As NBuffer
nTemplate = record.Save()
Try
Dim db As Database = WizardData.LocalDatabase
WizardData.LocalMatchingResults = LocalMatcher.Instance.Identify(nTemplate, db) ' <<<<< nTemplate must be NTemplate type??
WizardData.ErrorMessage = ""
Catch ex As Exception
WizardData.ErrorMessage = ex.Message
Finally
MsgBox(WizardData.ResultMessage)
End Try
End Using
Dim nTemplate As New NTemplate(record.Save())
monkeyhandz wrote:Hi
We have used the Java libraries of the Neurotec Biometric 4.5 SDK to develop our own biometric server for fingerprints.
It all works fine most of the time; people can enrol their fingerprints and then do successful verifications against the enrolled fingerprints.
However we have found some people are continually Falsely Rejected; they cannot get successful matches against their enrolled finger prints.
In general we left the matching parameters at defaults, matchingThreshold is at the default value and the matchingSpeed is HIGH (we have bought the highspeed matcher license as well).
I have tried adjusting the matchingThreshold to 6 and the fingerprints do get matched then, but I'm worried about the implications of changing these values and how it might affect False Acceptance rates. Can you give any advice please?
If you want I can send you the Enrol and Verify Fingerprint templates if you want to test them.
Kind regards
David Smith
Users browsing this forum: No registered users and 3 guests