U.are.U SDK Developer Guide
U.are.U SDK Developer Guide
Copyright 2015 Crossmatch. All rights reserved. Specifications are subject to change without prior notice. The Crossmatch logo,
Crossmatch, Cross Match, L Scan, D Scan, I Scan, Guardian, SEEK and Verifier are trademarks or registered
trademarks of Cross Match Technologies, Inc. in the United States and other countries. DigitalPersona, TouchChip, Eikon,
U.are.U and FingerJet are trademarks or registered trademarks of DigitalPersona, Inc., which is owned by the parent company
of Cross Match Technologies, Inc. All other brand and product names are trademarks or registered trademarks of their respective
owners.
Published: April 8, 2015 (v2.3.0)
Contents
INT ROD UCTIO N
W h a t s N e w in 2 . 3 . x .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . .
H o w t h e U . a r e . U M a n u a l s a r e O r g a n i z e d . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . .
G e t t i n g U p d a t e d D o c u m e n t a t i o n . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . .
T a r g e t A u d i e n c e . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . .
H o w t h i s b o o k i s a r r a n g e d . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . .
D a t a F o r m a t s a n d S t a n d a r d s . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . .
7
7
8
8
8
8
B AC KG R OUN D
B i om e t r i c s . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . 9
F e a t u r e s o f B i om e t r i c T e c h n o l o g y . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . 9
T h e B as i c s o f F i n g e r p r i n t I d e n t i f ic a t i o n . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . 9
I s s u e s i n F i n g e r p r i n t R e c o g ni t i o n T e c h n o l o g y . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . 1 0
DEVELOPING APPLICATIONS
11
H o w F i n g e r p r in t R e c o g n i t i on W or k s . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
U n d e r s t a n d i n g t h e D a t a F l o w . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k f l o w - E n r o l l m e n t A p p l i c a t i o n . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t e p O n e - I n i t i a l i z a t i o n . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t e p T w o - C a p t u r e , E x t r a c t a n d En r o l l . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t e p T h r e e - S t o r e D a t a . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
N o t e s o n E n r o l l m e n t . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k f l o w - I d e n t i f y i n g /V e r i f y i n g . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t e p O n e - I n i t i a l i z a t i o n . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t e p T w o - C a p t u r e a n d E x t r a c t . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t e p T h r e e - I d e n t i f y / V e r i f y . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
D e s i g n I s s u e s f or y o u r A p p l i c a t i on . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
D i s t r i b u t e d P r o c e s s i n g a n d D a t a F l o w . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
D a t a C o m p r e s s i o n . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W S Q C o m p r e s s i o n . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
J P E G 2 0 0 0 C o m p r e s s i o n . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
N I S T F i n g e r p r i n t I m a g e Q u a l i t y ( N F I Q ) . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
D e t e r m i n i n g an A c c e p t a b l e L e v e l of E r r o r . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S e t t i n g t h e E r r o r T h r e s h o l d w h e n I d e n t i f y i n g a F i n g e r p r i n t i n a C o l l e c t i o n . .. . . . . . . . . . .
D e f i n i n g t he D a t a R e t e n t i o n P o l i c y . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S p e c i f y i n g t h e F i n g e r s t o B e S c a n n e d . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
O p t i m i z i n g F i n g e r p r i n t A p p l i c a t i o n s . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
11
11
12
12
12
13
13
13
13
13
13
13
13
14
14
14
14
15
15
16
16
16
W OR KI NG WI T H F I N G E RP R I N T R EA DE R S
17
18
O v e r v i e w o f S u p p o r t f o r P r e v i o u s S D K s . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k i n g w i t h E x is t i n g D a t a C r e at e d w i t h P r e v i o u s S D K s . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
E x c h a n g i n g D a t a w i t h A p p l i c a t i o n s U s i n g P r e v io u s S D K s . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
U p g r a d i n g A p p l i c a t i o n s f r o m P r e v i o u s S D K s . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C o n v e r t i n g A p p l i c a t i o n s f r o m t h e O n e T o u c h S D K . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k i n g w i t h D a t a C r e at e d w i t h G ol d a n d O n e T o u c h S D K s . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C h a n g e s i n U . a r e . U T e r m i n o l o g y f r o m P r e vi o u s U s a g e ( G o l d an d O n e T ou c h ) . . . . . . . . .. . . . . . . . . . .
U p g r a d i n g f r o m U . a r e . U U P O S f o r O P O S / J a v a P O S . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
18
18
18
18
18
19
20
20
22
W h a t s I n t h e S D K ? . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . 2 2
F i n g e r J e t E n g i n e . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . 2 2
THE C/C++ APIS
23
D P C a p t u r e A P I . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
L i b r a r y M a n a g e m e n t . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
F i n g e r p r i n t C a p t u r e D e v i c e M a n a g e m e n t . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C a p t u r i n g F i n g e r p r i n t s . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t r e a m i n g F i n g e r p r i n t s . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
F i n g e r J e t E n g i n e A P I . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
L i b r a r y M a n a g e m e n t . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S e l e c t F i n g e r p r i n t M a t c h i n g E n g i n e . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
E x t r ac t F M D . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
I d e n t i f y F i n g e r p r i n t . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
E n r ol l m e n t . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
F or m a t C o n v e r s i o n . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
A d v a n c e d D i a g n o s t i c s . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W a v e l e t S c a l a r Q u a n t i z a t i o n ( W S Q ) C om p r e s s i on . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
N I S T F i n g e r p r i n t I m a g e Q u a l i t y ( N F I Q ) . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
23
23
23
24
24
24
24
24
25
25
25
25
26
26
27
28
I m p o r t i n g t h e U . a r e . U J av a p a c k a g e . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
G e t t i n g D e t a i l e d D o c u m e n t a t i on .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
U s i n g t h e P a c k ag e . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
M a i n A c c e s s P o i n t . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
U a r e U E x c e p t i o n . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
G e t t i n g a L i s t o f A v ai l a b l e R e a d e r s . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k i n g w i t h R e a d e r s . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C a p t u r i n g F i n g e r p r i n t s . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t r e a m i n g F i n g e r p r i n t s . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
A c c e s s i n g t h e F i n g e r J e t E n g i n e . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C r e a t i n g F M D s f r o m i m a g e s . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
I d e n t i f i c a t i o n a n d C o m p a r i s o n . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
E n r ol l m e n t . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
28
28
28
28
28
28
29
29
30
30
30
30
31
T H E . N ET A P I
32
I m p o r t i n g t h e U . a r e . U . N ET p a c k a g e . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
G e t t i n g D e t a i l e d D o c u m e n t a t i on .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
U s i n g t h e P a c k ag e . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
M a i n A c c e s s P o i n t s . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S D K E x c e p t i o n . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S e r i a l i z a t i o n . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
I E n u m e r a b l e s i n t h e . N E T W r a p p e r . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k i n g w i t h R e a d e r s . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C a p t u r i n g F i n g e r p r i n t s . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t r e a m i n g F i n g e r p r i n t s . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
M a n a g i n g F in g e r p r i n t D a t a . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
A n a l y z i n g a n d M a n ag i n g F i n g e r p r i n t s ( F i n g e r J e t E n g i n e ) .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C r e a t i n g F M D s f r o m i m a g e s . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C o m p a r i n g F i n g e r p r i n t s . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
32
32
32
32
32
33
33
33
35
35
36
37
38
38
E n r ol l m e n t . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . 39
C o m m o n D at a S t r u c t u r e s f o r R e s u lt s . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . 40
P r e - B u i l t C o n t r ol s f o r E n r o l l m e n t a n d I d e n t i f i c a t io n . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . 41
A CT I VE X
42
I m p o r t i n g t h e U . a r e . U A c t i v e X p a c k a g e . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
G e t t i n g D e t a i l e d D o c u m e n t a t i on .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
U s i n g t h e P a c k ag e . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
M a i n A c c e s s P o i n t s . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S D K E x c e p t i o n . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S e r i a l i z a t i o n . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k i n g w i t h R e a d e r s . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
A No t e A b ou t I n t e r n e t Ex p l o r e r a n d P r o c e s s M e r g i n g . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C l a s s D i a g r am s . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C a p t u r i n g F i n g e r p r i n t s . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t r e a m i n g F i n g e r p r i n t s . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
M a n a g i n g F in g e r p r i n t D a t a . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
A c c e s s i n g t h e F i n g e r J e t E n g i n e . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C r e a t i n g F M D s f r o m i m a g e s . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
I d e n t i f i c a t i o n a n d C o m p a r i s o n . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
E n r ol l m e n t . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C o m m o n D at a S t r u c t u r e s f o r R e s u lt s . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
P r e - B u i l t C o n t r ol s f o r E n r o l l m e n t a n d I d e n t i f i c a t io n . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
42
42
42
42
42
42
43
43
44
46
46
47
48
48
49
49
50
51
JAVAPOS
52
T e r m i n o l o g y N o t e . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k i n g w i t h F i n g e r p r i n t D a t a i n J a v a P O S . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
F i n g e r p r i n t D a t a f o r R aw I m a g e s ( C a p t u r e s ) . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
F i n g e r p r i n t D a t a f o r C a p t u r e s a n d En r o l l m e n t T e m p la t e s ( B I R s ) . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k i n g w i t h D i g i t a l P e r s on a R e c o r d F or m a t s . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C o n v e r t i n g t o a D i f f e r e n t D a t a F or m a t . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
G e t t i n g D e v i c e - S p e c i f i c I n f o r m a t i o n w i t h D i r e c t I O Ev e n t . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S y n t a x . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
P r o p e r t i e s . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
E v e n t N u m b e r R e t u r n V a l u e s . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
I m p l e m e n t a t i o n N o t e s . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
E x c e p t i o n s . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
D e v i c e - R e l a t e d E r r o r C o d e s . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
52
52
52
52
53
53
54
54
54
54
55
57
57
O P OS
59
T e r m i n o l o g y N o t e . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k i n g w i t h F i n g e r p r i n t D a t a i n O P O S . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
F i n g e r p r i n t D a t a f o r R aw I m a g e s ( C a p t u r e s ) . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
F i n g e r p r i n t D a t a f o r C a p t u r e s a n d En r o l l m e n t T e m p la t e s ( B I R s ) . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
W o r k i n g w i t h D i g i t a l P e r s on a R e c o r d F or m a t s . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
C o n v e r t i n g t o a D i f f e r e n t D a t a F or m a t . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
G e t t i n g D e v i c e - S p e c i f i c I n f o r m a t i o n w i t h D i r e c t I O Ev e n t . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S y n t a x . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
D e s c r i p t i o n . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
A t t r i b u t e . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S y n t a x . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
59
59
59
59
60
60
61
61
61
61
61
D e s c r i p t i o n . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
A t t r i b u t e s . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
E v e n t N u m b e r R e t u r n V a l u e s . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
D a t a R e t u r n V a lu e s . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
O b j R e t u r n V a l u e s . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S y n t a x . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
D e s c r i p t i o n . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
A t t r i b u t e . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
S t a t u s R e t u r n V a l u e s . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
I m p l e m e n t a t i o n N o t e s . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
E x c e p t i o n s . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
D e v i c e - R e l a t e d E r r o r C o d e s . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
61
61
62
62
62
63
63
63
63
63
66
67
68
G e n e r al F i n g e r p r i n t I s s u e s . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . 6 8
M i n e x C e r t i f i c a t i o n . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . 6 8
C / C + + I s s u e s . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . 6 8
GLOSSARY
69
G e n e r al T e r m s . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
F i n g e r p r i n t D a t a . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
F i n g e r p r i n t D e v i c e s .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
F i n g e r p r i n t R e c o g n i t i o n T e r m s . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
R e c o g n i t i o n A c c u r a c y . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .. . . . . . . . . . .
69
69
70
70
71
INDEX
73
Introduction
T HIS CHAPTER PROVIDES AN OVERVIEW OF THE FUNCTIONALITY AND FEATURES OF THE U. ARE .U SDK
The U.are.U SDK allows you to add fingerprint recognition to your application. Significant features of the U.are.U
SDK include:
Performing 1-to-many fingerprint identification automatically
Support for multiple data formats, including the existing DigitalPersona data formats as well as ANSI and ISO
fingerprint images and minutiae data
Redesigned API for easier programming
New FingerJet Engine that has met the PIV performance thresholds for fingerprint minutiae data generation
required by NIST, with a faster Matcher.
The SDK provides support for developing with Windows (Visual Studio) and Linux with the following languages/
frameworks: (X indicates a supported combination)
API
Linux
Windows
Windows CE
Android
C/C++
Java
.NET
ActiveX
JavaPOS
OPOS
X
X
X
X
W h a t s N e w i n 2 . 3 . x
New features in version 2.3.0 include:
Support for U.are.U 5200 and 5300 fingerprint readers
TouchChip Device Add-On - An optional component providing capture-only support for the Eikon family of
fingerprint readers including the Eikon Touch 510/710 and the Eikon II. For additional information, see the
readme.txt file included with the add-on.
H o w t h e U . a re . U M a n u a l s a re O rg a n i ze d
The U.are.U documentation set consists of a family of books:
The U.are.U SDK Developers Guide (this manual) describes the architecture and organization of the SDK plus an
overview of language/framework support.
Platform Guides for Linux, Windows, Windows CE and Android provide details about installation, requirements
and code samples for devices based on Linux, Windows, Windows CE and Android operating systems,
respectively.
In addition, we provide Javadoc and Doxygen documentation that provides the detail of method parameters and data
structures for the .NET, ActiveX and Java APIs.
Targ e t A u d i e n c e
This manual is aimed at developers who already have a working knowledge of their development environment and
their chosen reader platform. We make the following assumptions.
C/C++ API - We assume you have a working knowledge of the C++ language.
.NET - We assume that you know how to develop for .NET and understand .NET concepts like static classes,
IDisposable and IEnumerable.
ActiveX - We assume that you know how to develop with ActiveX.
Java - We assume a working knowledge of the Java language.
OPOS and JavaPOS - We assume knowledge of the UPOS (OPOS and JavaPOS) specification version 1.13 and
familiarity with Point of Sale applications and developing with OPOS/JavaPOS.
H o w t h i s b o o k i s a r ra n g e d
Introduction (this chapter), provides an overview of the features and standards compliance of the U.are.U SDK.
Background, contains a brief introduction to fingerprint recognition and fingerprint biometrics.
Developing Applications, describes the context and issues for developing applications using the U.are.U SDK. This
chapter shows how data flows among the U.are.U SDK components, and typical workflows.
Working with Fingerprint Readers contains information about working with fingerprint reader hardware.
Upgrading from previous SDKs, discusses how to upgrade your application to use the current API functions and data
formats, as well as a mapping between the One Touch terminology and the terminology used in the U.are.U SDK.
Using the SDK, provides an overview of the SDK and describes how to generate API documentation using Doxygen.
The C/C++ APIs, provides an overview of the functions in the C libraries.
The JAVA API, describes the interfaces for the Java libraries.
The .NET API, describes the classes and methods in the .NET libraries as well as the .NET controls.
ActiveX, describes the interfaces for the ActiveX libraries and controls.
JavaPOS, describes the JavaPOS API including data management, implementation notes, error codes and exceptions.
OPOS, describes the OPOS API including data management, implementation notes, error codes and exceptions.
Application Notes, provides additional suggestions for getting your application to work.
Glossary, lists the terminology specific to fingerprint recognition applications and to the U.are.U SDK.
D a t a F o r m a t s a n d S t a n d a rd s
The DigitalPersona U.are.U SDK supports three data types:
DigitalPersona
ANSI
ISO
Background
T HIS CHAPTER PROVIDES BACKGROUND INFORMATION ON THE BASICS OF FINGERPRINT RECOGNITION
In this chapter, we discuss the basics of fingerprint recognition. This chapter is not intended to be exhaustive, rather
were going to give you enough background knowledge to develop your own application more effectively.
For a more detailed overview, we recommend the Handbook of Fingerprint Recognition by D. Maltoni, M. Maio, A.
Jain, and S. Prabhakar, published by Springer, 2nd edition, 2009.
Biometrics
Identifying individuals based on their distinctive anatomical (fingerprint, face, iris, hand geometry) and behavioral
(signature, voice) characteristics is called biometrics. Because biometric identifiers cannot be shared or misplaced,
they intrinsically represent an individuals identity. Biometrics is quickly becoming an essential component of
effective identification solutions. Recognition of a person by their body, then linking that body to an externally
established identity, forms a powerful authentication tool.
Biometric identification helps to reduce fraud, and enhance user convenience. Among the different biometric
identification methods, fingerprint recognition technology has a good balance of qualities including accuracy,
throughput, size and cost of readers, maturity of technology and convenience of use, making it the dominant biometric
technology in commercial applications.
F e a t u re s o f B i o m e t r i c Te c h n o l o g y
Biometric solutions offer many advantages that other technologies cannot provide.
Uniqueness - Fingerprints from each one of our ten fingers are distinctive, different from one another and from
those of other persons. Even identical twins have different fingerprints.
Convenience - Users no longer have to remember multiple, long and complex, frequently changing passwords or
carry multiple keys.
Non-repudiation - Ensures the user is present at the point and time of recognition and later cannot deny having
accessed the system.
Non-transferable - Cannot be shared, lost, stolen, copied, distributed or forgotten unlike passwords, PINs, and
smart cards.
Proven - Long history of successful use in identification tasks - the U.S. and other countries have extensive realworld experience with fingerprint recognition. Fingerprints have been used in forensics for well over a century and
there is a substantial body of scientific studies and real world data supporting the distinctiveness and permanence
of fingerprints.
Background
I s s u e s i n F i n g e r p r i n t R e c o g n i t i o n Te c h n o l o g y
In a perfect world, it would be a simple matter to determine whether two fingerprints were from the same finger-- the
images would be identical or they would not. However, even though our fingerprints do not change over time, the
fingerprint images can vary a lot, especially for some people. For example, certain skin conditions and wear due to
manual labor can affect fingerprint images. This makes fingerprint recognition a very challenging problem that does
not have a perfect solution. As a result, captured fingerprint images are often not a perfect match to the stored image
from the same finger.
Fingerprint images from two different fingers of two different people can look similar, especially when, because of
worn fingerprints or temporary creases, there is very little information left about the actual fingerprint. The larger the
population you are working with, the more likelihood of similar fingerprint images.
Fingerprint recognition software needs to address these issues. Well discuss that more in later sections of this guide.
10
Developing Applications
T HIS CHAPTER DESCRIBES THE PROCESS OF DEVELOPING FINGERPRINT RECOGNITION APPLICATIONS .
H o w F i n g e r p r i n t R e c o g n i t i o n Wo r k s
Fingerprint recognition works in two stages:
First, users are enrolled with the system--their fingerprints are captured and stored in a database.
Next, when a person needs to be given access (e.g., to open a door or to log in to a computer), they simply scan
their finger on the fingerprint reader.
In terms of application development, this typically requires the developer to build the following components:
An application that enrolls users:
Captures multiple fingerprints for at least two fingers from a fingerprint reader.
Checks image quality to ensure that a good quality scan is obtained.
Extracts the fingerprint minutiae.
Saves the fingerprint images and/or minutiae in a database.
A service(s)/application(s) that identifies/verifies people:
Captures a fingerprint from a fingerprint reader.
Extracts the fingerprint minutiae.
Compares fingerprint with enrolled fingerprints to identify a user from a list or verify a specific user.
This SDK provides fingerprint capture, extraction, enrollment and identification/verification functions to help you
develop these components.
11
Developing Applications
A terminology note: in the past, enrollment fingerprints were stored as templates and fingerprints to be identified/
verified were created as feature sets. This data model is still supported when using the DigitalPersona data format - that
is, there are two kinds of FMD, depending on whether the data is for an enrolled fingerprint or for a fingerprint to be
identified/verified. When using ANSI and ISO standard data, the template/feature set terminology does not apply since
the ANSI/ISO standards do not make that distinction. The data flow for legacy SDK data may be different, as
described in Working with Data Created with Gold and One Touch SDKs on page 19.
Wo r k f l o w - E n ro l l m e n t A p p l i c a t i o n
During the enrollment process, one or more fingers are scanned for each person. We recommend that you enroll at least
two fingers (more is recommended) because in the event of an accident or injury to one finger, another enrolled finger
can be used to identify the individual.
The enrollment application needs to perform the following steps to enroll a single finger from a user:
12
Developing Applications
Step Three - Store Data
Store the enrollment FMD. Many applications keep only the enrollment FMD because of space constraints or policy
decisions. You cannot use FIDs for identification, so even if you choose to keep the FIDs, you must also store the FMD
for each individual.
Notes on Enrollment
Before storing, you may want to check for existing entries that match the new entry -- applications like law
enforcement, banking or voting registration, may not allow duplicate enrollments.
The capture/extract minutiae part of the enrollment process is the same as for capturing/extracting minutiae for the
purpose of verifying/identifying users. If you wish, you can enroll users without using the enrollment functions (by
simply capturing, extracting minutiae and storing the resulting FMD). However we recommend that you use the
enrollment functions to create the best quality enrollment FMDs.
The enrollment process is slightly different in each API. Consult the chapters that describe the various APIs to
determine the specifics for your language. For JavaPOS and OPOS, the enrollment process is described in the
specification.
Wo r k f l o w - I d e n t i f y i n g / Ve r i f y i n g
Fingerprint recognition involves two types of operation:
Identification - Comparing a fingerprint against the database of enrolled fingerprints and confirming that the
fingerprint is enrolled (e.g., to open a door there may be many authorized users).
Verification - Comparing a fingerprint against a specific users enrolled fingerprint(s) to verify a specific persons
identity (e.g., when the user types their name and then uses a fingerprint rather than a password).
To perform these operations, your application needs to do the following steps:
D e s i g n I s s u e s f o r yo u r A p p l i c a t i o n
Distributed Processing and Data Flow
Depending on the capabilities of your fingerprint reader, you can capture FIDs and send them to another machine for
processing OR the fingerprint reader can extract the FMD and transmit only the much smaller FMD files. Thus the
application can be designed in these two ways:
1 The fingerprint capture device can simply capture a fingerprint image and transmit the image to a server for processing as shown in the image below. Since FIDs are large (around 100K - 140K), this means that you need a faster
connection, but there is less computing power required by the fingerprint reader.
13
Developing Applications
Optionally, the fingerprint capture device can compress the image before transmitting it.
2 Another alternative is to develop software for the fingerprint capture device to capture the fingerprint image AND
extract the fingerprint features to create an FMD. The FMD is then transmitted to the server for processing, as
shown below. FMDs are 1.5K or less and so require less bandwidth and speed.
Data Compression
If you use compression to save bandwidth or storage space, there are two options:
1 U.are.U provides compression using Wavelet Scalar Quantization (WSQ). WSQ is a wavelet-based compression
standard developed by NIST specifically for fingerprint data.
2 You can compress the data using a lossless compression such as JPEG2000.
WSQ Compression
WSQ compression allows compression of 15:1 to 12:1. For more details, see Wavelet Scalar Quantization (WSQ)
Compression on page 26.
JPEG2000 Compression
If you are using JPEG2000 as a compression algorithm, choose 12 as the quality setting. This allows lossless
compression at around 10:1. The U.are.U SDK does not support JPEG2000 compression directly, so you would have
to capture the fingerprint as a raw image and compress it to JPEG2000. After transmission, you must convert the
JPEG2000 file back into a raw image for minutiae extraction and identification/verification.
14
Developing Applications
Determining an Acceptable Level of Error
When identifying fingerprints, you want to identify strictly enough that you do not let unauthorized people have access
(false positives) but also do not inconvenience legitimate users by rejecting their fingerprints (false negatives). Note
that some people will always experience more false rejections -- the rate of false negatives is a statistical measure, but
individuals may experience higher rejection rates, based on their specific fingerprint characteristics.
There is a trade-off between the frequencies of false positive and false negative errors. Applications have control over
this trade-off by specifying the threshold for the required degree of similarity between two fingerprint images in order
to call it a match.
When choosing the identification threshold, note that increasing the false positive error rate by a factor of 100 will
reduce the false negative error rate only approximately by a factor of 2. There will always be some false negatives. As
the result, every practical fingerprint recognition system should have an alternative means to establish and prove
identity, without using fingerprints.
Corresponding False
Positive Identification
Rate
.001 * maxint
.1%
1 in 1,000
2147483
.0001 * maxint
.01%
1 in 10,000
214748
.00001 * maxint
.001%
1 in 100,000
21474
1.0e-6 * maxint
.0001%
1 in 1,000,000
2147
For many applications, a good starting point for testing is a threshold of 1 in 100,000. If you want to be conservative,
then you will want to set the threshold lower than the desired error rate (e.g., if you want an error rate that does not
exceed 1 in 100,000, you might set the threshold to 1 in 1,000,000).
15
Developing Applications
D e f i n i n g t h e D a t a R e t e n t i o n Po l i cy
After a fingerprint scan, an FID is created, which contains the actual image. Each fingerprint image takes roughly
140K of storage. With modern computers, that is not a huge amount, but each enrolled user may have several
fingerprints scanned. Multiplied by the number of potential users, this can add up to a fair amount of data.
To identify fingerprints, you must extract the fingerprint characteristics to create an FMD, which is < 1.5K per
fingerprint.
Some applications choose to retain the full image records, but other companies discard the image record and retain
only the minutiae data in the form of an FMD.
IMPORTANT: If you discard the image record, you cannot reconstruct the original fingerprint image from the FMD,
the FMD is only useful for identifying/verifying fingerprints.
From time to time Crossmatch may release a new version of the DigitalPersona U.are.U SDK that will provide
improved accuracy in the feature extraction process. If you do not retain the fingerprint images, you will not be able to
redo the feature extraction using the new version of the SDK/runtime in order to take advantage of these
improvements.
16
17
O v e r v i e w o f S u p p o r t f o r P re v i o u s S D K s
Wo r k i n g w i t h E x i s t i n g D a t a C re a t e d w i t h P re v i o u s S D K s
The DigitalPersona U.are.USDK supports DigitalPersona, ANSI, and ISO formats. You may choose your format
according to your application requirements.
However, the data formats are not inter-operable and only one data format can be used in a single application.
For example, when passing an array of fingerprint templates into the identification function, all the templates in the
array must be in the same format. If your application has existing data in a specific format, you must continue to use
that format for all of your data.
IMPORTANT: It is not possible to convert data from one format to another. If you decide to move from one format to
another, you must re-enroll your user population.
E x c h a n g i n g D a t a w i t h A p p l i c a t i o n s U s i n g P re v i o u s S D K s
Applications written with the U.are.U SDK APIs can exchange data with applications developed using previous
DigitalPersona products. The table below shows which U.are.U APIs may be used to develop applications that will
exchange data with existing applications:
Previous DigitalPersona SDK used by existing application
JavaPOS
OPOS
The U.are.U SDK does not support the custom encryption keys that are supported by the Gold and One Touch SDKs.
U p g r a d i n g A p p l i c a t i o n s f ro m P re v i o u s S D K s
To convert applications developed using Gold and One Touch SDKs to use the U.are.U SDK requires software
modifications to use the U.are.U APIs. The U.are.U APIs are described in detail in the other chapters of this manual.
Applications developed with U.are.U UPOS for JavaPOS or UPOS for OPOS can be upgraded to use the JavaPOS and
OPOS APIs of the U.are.U SDK, since both the previous and the current product support the UPOS specification.
More details are provided below in Upgrading from U.are.U UPOS for OPOS/JavaPOS on page 20.
C o n v e r t i n g A p p l i c a t i o n s f ro m t h e O n e To u c h S D K
To convert an application from the One Touch SDK, install the U.are.U SDK as described above and use this
documentation to modify your applications to use the new API.
Be sure to install the U.are.U SDK in a new folder on your development machine so that your existing files do not get
overwritten.
Note that when you install the U.are.U SDK on the target machine, the One Touch drivers will be overwritten with new
drivers that are compatible with both your existing applications and new applications based on the U.are.U SDK.
The files installed on the target machine include both drivers and SDK files. If you retain the One Touch SDK files on
the device, you will need up to an additional 120K for the new U.are.U SDK files. If you retain the old SDK files on
DigitalPersona U.are.U. SDK - Developer Guide
18
Wo r k i n g w i t h D a t a C re a t e d w i t h G o l d a n d O n e To u c h S D K s
The DigitalPersona Gold SDK and One Touch SDK products used a different format for minutiae data (which were
called feature sets). In the Gold and One Touch formats, there were three different data types for minutiae data which
reflected the intended use of the data:
Pre-registration features (Gold SDK), or Pre-registration Feature Set to be used for Enrollment (OneTouch
SDK); Pre-registration features were intended only for creation of Registration features. An application needed to
collect four fingerprints of the finger to enroll, extract pre-registration features, and pass it to the SDK to produce
registration features.
Registration features (Gold SDK), or Fingerprint Template (OneTouch SDK); Registration features were
intended to be stored in a database as an enrolled finger.
Verification features (Gold SDK), or Feature Set (One Touch SDK). Verification features are what is compared
to the Registration features when a user swipes a finger.
In these previous SDKs, you could not compare two Feature Sets, you could only compare a Feature Set against a
Fingerprint Template. The U.are.U SDK removes the distinction between feature sets and templates when using the
ANSI/ISO formats. For data created in ANSI/ISO data formats, all minutiae data is stored in an FMD, whether
produced by the feature extraction functions or the enrollment functions.
19
Old Term
New Term
Explanation
Fingerprint authentication
Fingerprint verification
Fingerprint registration
Fingerprint enrollment
Fingerprint sensor
(referring to a fingerprint
capture device)
Fingerprint reader
Match
Compare
Matching
Comparison
Matching score
Comparison score
Performance
Recognition accuracy
ROC curve
DET curve
FAR
FMR or FNMR as
appropriate
Fingerprint template
FRR
FMR or FNMR as
appropriate
U p g ra d i n g f ro m U . a re . U U P O S f o r O P O S / Java P O S
This new U.are.U SDK version of the OPOS and JavaPOS APIs are backward-compatible. However the following new
features may or may not affect your existing applications:
The default data format has a longer header. The default data format is now fully compliant with UnifiedPOS
1.13. The default data format is the same as the old format except that the template header has additional bytes of
information, i.e., a 45-byte header, instead of the previous 10-byte header for JavaPOS and 12-byte header for
20
21
W h a t s I n t h e S D K ?
The SDK consists of:
1 C/C++ API -- C libraries that conform to ANSI.C99 (http://en.wikipedia.org/wiki/C99):
DP Capture API - for capturing fingerprints
FingerJet Engine API - for extracting fingerprint characteristics and identifying/verifying fingerprints
2 .NET API -- .NET class libraries
DP .NET API - for capturing and comparing fingerprints
DP .NET Controls - simple interface for enrollment and identification, based on OneTouch interface
DP ActiveX Library - for capturing and comparing fingerprints using the ActiveX wrapper with .NET
DP ActiveX Controls - simple interface for enrollment and identification, based on OneTouch interface
3 ActiveX API and controls -- ActiveX class libraries
DPXUru.dll ActiveX API library
DPCtlXUru.dll ActiveX GUI controls
4 Java API -- Java class libraries
dpuaru.jar - library classes and interfaces for working with readers and the FingerJet Engine
5 JavaPOS API -- class libraries that implement a JavaPOS-compliant API (per the JavaPOS 1.13 specification), as a
wrapper to the U.are.U Java API:
dpjavapos.jar - library classes and interfaces for working with readers
JavaPOS Device Service object, which can be used with any JavaPOS Device Control for the Biometrics device
category
6 OPOS API -- classes that implement an OPOS-compliant API (per the UPOS 1.13 specification), as a wrapper to
the U.are.U C/C++ API:
dpServiceObject.dll a custom implementation of the OPOS data service
OPOSBiometrics a custom implementation of the OPOS biometrics control
7 Run-time components:
Capture driver and SDK layer
FingerJet Engine run-time
F i n g e r Je t E n g i n e
The FingerJet Engine is a module that extracts fingerprint characteristics from image records to create FMDs and
compares FMDs to confirm identity. The FingerJet Engine has met the PIV performance thresholds for fingerprint
minutiae data generation required by NIST.
We support a maximum of 16 views in a single FID or FMD during authentication. All views in a single record must
have the same resolution. We do not support unknown finger positions (finger position = 0).
22
Detailed documentation for the API is contained in the header files. You can simply read the header files or you can
view the Doxygen files. Consult the platform guide for details of where the Doxygen files are located.
The API is thread-safe.
D P C a p t u re A P I
The DP Capture API consists of library management, reader management, capturing and streaming.
Library Management
Function
Description
dpfpdd_init
Initialize the library (allocate system resources and initialize data). This
must be the first function called.
dpfpdd_exit
dpfpdd_version
Query the library version. This is the only function that can be called
before dpfpdd_init or after dpfpdd_exit.
This returns the DP Capture API library version (not the U.are.U SDK
version). This is analogous to the dpfj_version function which returns the
version of the FingerJet library file.
Description
dpfpdd_query_devices
dpfpdd_open
dpfpdd_close
Close a device.
dpfpdd_get_device_status
Get the status for a device. You would normally check the device status
between captures to ensure that the device is functioning and there are
no error conditions.
dpfpdd_get_device_capabilities
dpfpdd_set_parameter
dpfpdd_get_parameter
dpfpdd_calibrate
dpfpdd_reset
23
Description
dpfpdd_capture
Capture a fingerprint image from the reader. This function signals the
reader that a fingerprint is expected, and waits until a fingerprint is
received.
dpfpdd_cancel
Streaming Fingerprints
Not all readers support streaming mode. To determine if a specific reader supports this feature, check the value of
can_stream_image in DPFPDD_DEV_CAPS, as returned by dpfpdd_get_device_capabilities().
The streaming methods are:
Function
Description
dpfpdd_start_stream
dpfpdd_get_stream_image
dpfpdd_stop_stream
F i n g e r Je t E n g i n e A P I
The FingerJet API contains functions that extract features from FIDs to create FMDs, identify/verify FMDs and
convert FMDs to different formats.
Library Management
Function
Description
dpfj_version
Query the library version. This returns the FingerJet library version (not the U.are.U SDK
version). This is analogous to the dpfpfdd_version function which returns the version of
the DP Capture API library file.
Description
dpfj_select_engine
The DigitalPersona FingerJet is the default engine used if this function is not called. The
FingerJet engine is available on all platforms and does not require open reader (parameter hdev can be NULL).
Not every other engine is available on every platform. Some engines require a valid handle from opened reader to be supplied.
Currently, you can choose from two types of FingerJet engine, versions 6 and 7. On
some platforms the Innovatrics engine is also available. If this function is not called and
no choice is made by the application, the default matching engine used is FingerJet version 6. See also Minex Certification on page 68.
24
Description
dpfj_create_fmd_from_raw
dpfj_create_fmd_from_fid
Identify Fingerprint
This function is described in detail on pages 13-14.
Function
Description
dpfj_identify
Identify an FMD: given an array of FMDs, this function returns an array of candidates that
match the original fingerprint (an FMV within an FMD) within the threshold of error. Supported formats are: Gold SDK, One Touch SDK, ANSI and ISO.
Enrollment
The enrollment functions allow you to enroll a finger to create an FMD that you can store in your database. For ANSI/
ISO formats, the enrollment functions create FMDs. For the legacy DigitalPersona format, the enrollment functions
create a fingerprint template.
The typical process would be:
1 Call dpfj_start_enrollment.
2 Capture a fingerprint scan and extract an FMD, using the standard functions (dpfpdd_capture to capture and
dpfj_create_fmd_from_fid or dpfj_create_fmd_from_raw to extract).
3 Call dpfj_add_to_enrollment to add the fingerprint to the potential pool.
4 Repeat the previous two steps until dpfj_add_to_enrollment returns a flag indicating the pool of FMDs is now
sufficient to create an enrollment FMD.
5 Create the enrollment FMD with dpfj_create_enrollment_fmd and release resources by calling
dpfj_finish_enrollment.
6 Store the enrollment FMD in your database. Some applications like voting, banking and law enforcement require
that you check for duplicate fingerprints before storing a new fingerprint in the database.
Function
Description
dpfj_start_enrollment
dpfj_add_to_enrollment
Add the FMD to the pool of FMDs for enrollment and return a flag indicating that
the enrollment is ready (enough FMDs have been received to create the enrollment FMD)
dpfj_create_enrollment_fmd
dpfj_finish_enrollment
Format Conversion
Function
Description
dpfj_fmd_convert
dpfj_dp_fid_convert
Convert legacy DigitalPersona image (Gold SDK and One Touch SDK) to ANSI or
ISO images
25
2147483
.1%
214748
.01%
21474
.001%
2147
.0001%
Function
Description
dpfj_compare
Compare two FMDs; supported formats are: Gold SDK, One Touch SDK, ANSI
and ISO.
Description
dpfj_start_compression
26
Releases resources.
dpfj_set_wsq_bitrate
dpfj_set_wsq_size
These two specify the same thing: the size of the resulting compressed image,
and can be used interchangeably.
Setting the bitrate at 0.75 bpp to 0.9 bpp allows compression of 15:1 to 12:1.
The parameter tolerance_aw sets the tolerance as required by the Aware
WSQ1000 SDK and it is ignored when using NIST algorithm.
dpfj_compress_fid
dpfj_compress_raw
dpfj_get_processed_data
dpfj_expand_fid
dpfj_expand_raw
Crossmatch does not redistribute the Aware WSQ1000 SDK, it must be acquired and installed separately.
Function
Description
dpfj_quality_nfiq_from_fid
dpfj_quality_nfiq_from_raw
27
The Java API is built as a wrapper to the C/C++ API. The Java API is available for Linux and Windows. This chapter
provides an overview of the API. For details of using the API on a specific reader platform, consult the appropriate
Platform Guide.
The Java API is considerably simpler to use than the C/C++ APIs and therefore generally results in:
Easier data management
Easier enrollment
Faster development
I m p o r t i n g t h e U . a re . U Jav a p a c k a g e
The U.are.U Java library classes and interfaces are aggregated into dpuaru.jar. To use the U.are.U Java library
functionality import the com.digitalpersona.uareu.* package, and make sure to include dpuareu.jar
into your classpath.
U s i n g t h e Pa c k a g e
Main Access Point
The main access point to the U.are.U Java library is the UareUGlobal class. This is a static class, which allows you
to acquire references to the classes related to fingerprint readers and to the FingerJet Engine:
To acquire a reference to ReaderCollection use the GetReaderCollection() method. To destroy
ReaderCollection, (release all system resources associated with readers and make readers available for other
processes) use the DestroyReaderCollection() method.
To acquire a reference(s) to individual readers, use the ReaderCollection object, which is a collection of
objects of type Reader.
To acquire a reference to the FingerJet Engine use the GetEngine() method. The engine does not use or
allocate any system resources except memory and does not have to be destroyed explicitly.
UareUException
The UareUException interface describes exceptions specific to the U.are.U SDK.
28
Description
GetDescription
Get the description of a reader. The description is available at any time (even if
the device is not open). This is the only method that can be called before the
open() method.
Returns an object of type Description holding information about the reader
hardware.
Open
Open a device and return the device capabilities. This method establishes an
exclusive link to the device; no other processes will be able to use the device
until you close it. The application must open the device before use.
GetStatus
Get the status for a device. You would normally check the device status
between captures to ensure that the device is functioning and there are no error
conditions.
Returns an object of type ReaderStatus which describes the current status
of the reader.
GetCapabilities
Calibrate
Calibrate a device. Some devices are self-calibrating. Ambient light or temperature can affect calibration, for some devices. Calibration can take several seconds.
Reset
Do a hardware reset on the reader. Hardware resets are typically needed only
after a hardware problem (e.g., the device is unplugged or receives an electrostatic shock). Hardware resets typically only take a few milliseconds.
Close
Close a reader and release the resources associated with the reader.
Capturing Fingerprints
The Capture function captures a fingerprint image for
Enrollment (as part of the process described on page 12)
Identifying users with Identify
Verifying a specific user identity with Compare
The primary fingerprint capture methods are:
Function
Description
Capture
Captures a fingerprint image from the open reader. This function signals the
reader that a fingerprint is expected, and blocks until a fingerprint is received,
capture fails or the reader times out.
29
Streaming Fingerprints
Not all readers support streaming mode. To determine if a specific reader supports this feature, get the reader
capabilities with the GetCapabilities method and check the value of the field can_stream.
The streaming methods are:
Function
StartStreaming
Description
Put the reader into streaming mode. In this mode, the application must call
StopStreaming
30
Compare() takes two single views from two FMDs and returns a dissimilarity score indicating the quality of the
match.
The majority of applications should use the Identify method to implement both identification and verification.
However, in a few special cases, e.g., using multi-modal biometrics, or doing statistical risk assessment, the Compare
method allows you to compare two FMVs to determine their actual degree of dissimilarity. This is useful for accuracy
testing and diagnostics and is not intended to be used in final applications for actual fingerprint recognition. The
Compare method returns a dissimilarity score with values:
0 = fingerprints are NOT dissimilar (i.e., they MATCH perfectly).
maxint (#7FFFFFFF or 2147483647) = fingerprints are completely dissimilar (i.e., DO NOT match).
Values close to 0 indicate very close matches, values closer to maxint indicate very poor matches.
The table below shows the relationship between the scores returned from Compare and the false match error rates
observed in our test. The dissimilarity score distribution is estimated based on our internal testing, and may not be
representative of the actual rate that will be observed in deployment.
Dissimilarity Score
2147483
.1%
214748
.01%
21474
.001%
2147
.0001%
Function
Description
Compare
Compare two FMDs; supported formats are: Gold SDK, One Touch SDK, ANSI
and ISO.
Identify
Identify an FMD: given an array of FMDs, this function returns an array of candidates that match the original fingerprint (an FMV within an FMD) within the
threshold of error. Supported formats are: Gold SDK, One Touch SDK, ANSI and
ISO.
Enrollment
CreateEnrollmentFmd() creates and returns an enrollment FMD. It takes as input a reference to an object of
type EnrollmentCallback. The client must implement EnrollmentCallback.GetFmd(). This method
acquires and returns an FMD to add to the enrollment. The engine calls EnrollmentCallback.GetFmd() as
many times as needed in order to create an enrollment FMD.
Normally, the client application will implement EnrollmentCallback.GetFmd() to provide the onscreen UI
to capture fingerprints from the reader, extract features using CreateFmd(), and return an enrollment FMD. If the
user wants to cancel the enrollment, EnrollmentCallback.GetFmd() should return null.
31
The .NET API is built as a wrapper to the C/C++ APIs. The .NET API is available for Windows and Windows CE.
This chapter provides an overview of the API. For details of using the API on a specific reader platform, consult the
appropriate Platform Guide.
The .NET API is considerably simpler to use than the C/C++ APIs and therefore generally results in:
Easier data management
Easier enrollment
Faster development
The .NET API also implements additional features:
Serialization
Pre-built GUI controls for enrollment and identification to quickly get you started
I m p o r t i n g t h e U . a re . U . N E T p a c k a g e
The U.are.U .NET library classes are aggregated into the following class libraries:
DP .NET API - for capturing and comparing fingerprints
DP .NET Controls - simple interface for enrollment and identification, based on OneTouch interface
U s i n g t h e Pa c k a g e
Main Access Points
To acquire a reference to ReaderCollection use the GetReaders() method. To destroy ReaderCollection,
(release all system resources associated with readers and make readers available for other processes) use the
Dispose() method.
To acquire a reference(s) to individual readers, use the ReaderCollection object, which is a collection of
objects of type Reader.
To work with the FingerJet Engine, instantiate one of the classes: Comparison, Importer,
FeatureExtraction or Enrollment. For example, to start enrolling fingerprints using the FingerJet engine,
call the static method, Enrollment.CreateEnrollmentFmd() . This method takes as input an enumeration
that specifies the format the enrollment template should be in, e.g., ANSI or ISO. This method also takes an
IEnumerable<Fmd> object. See IEnumerables in the .NET Wrapper on page 33 for more information on
IEnumerable<Fmd>.
SDKException
The SDKException class describes exceptions specific to the U.are.U SDK.
32
Microsoft Documentation
IEnumerable<T>
http://msdn.microsoft.com/en-us/library/9eekhta0.aspx
Yield
http://msdn.microsoft.com/en-us/library/9k7k7cf0(v=vs.80).aspx
Wo r k i n g w i t h R e a d e r s
Readers are accessed through the ReaderCollection object, which is of type IEnumerable<Reader>.
Each attached reader is represented with a Reader object. The Reader interface allows:
Querying reader description and capabilities,
Acquiring status of the reader,
Capturing fingerprints,
Starting and stopping image stream, and
Resetting and calibrating the reader.
To acquire a reader, call ReaderCollection.GetReaders() which returns the attached readers. Iterate through
this list to look at the description object for the desired reader. Once finished with all of the Reader objects in the
ReaderCollection, ensure that you call the Dispose() method to un-instantiate the ReaderCollection object
and release system resources.
DigitalPersona U.are.U SDK - Developer Guide
33
34
Description
Open
Open a device and return the device capabilities. This method establishes an exclusive
link to the device; no other processes will be able to use the device until you close it.
The application must open the device before use.
GetStatus
Get the status for a device. You would normally check the device status between
captures to ensure that the device is functioning and there are no error conditions.
Returns an object of type ReaderStatus which describes the current status of the
reader.
Calibrate
Calibrate a device. Some devices are self-calibrating. Ambient light or temperature can
affect calibration, for some devices. Calibration can take several seconds.
Reset
Do a hardware reset on the reader. Hardware resets are typically needed only after a
hardware problem (e.g., the device is unplugged or receives an electrostatic shock).
Hardware resets typically only take a few milliseconds.
Dispose
Capturing Fingerprints
The Capture function captures a fingerprint image for
Enrollment (as part of the process described on page 12)
Identifying users with Identify
Verifying a specific user identity with Compare
The primary fingerprint capture methods are:
Function
Description
Capture
Captures a fingerprint image from the open reader. This function signals the
reader that a fingerprint is expected, and blocks until a fingerprint is received,
capture fails or the reader times out.
CancelCapture
Streaming Fingerprints
Not all readers support streaming mode. To determine if a specific reader supports this feature, check the value of the
reader property CanStream.
The streaming methods are:
Function
StartStreaming
Description
Put the reader into streaming mode. In this mode, the application must call Get-
StopStreaming
35
Description
SerializeXml
Static method which serializes FMDs and FIDs into an XML string. Note that raw
data is encoded as base-64.
DeserializeXml
Static method which de-serializes XML-encoded FMDs and FIDs back into a
U.are.U FMD or FID data structure.
36
Description
Comparison
Enrollment
CreateEnrollmentFMD
Enrollment is implemented as a static class -- you can provide an IEnumerable<Fmd> or a function that returns such.
Importer
The DigitalPersona U.are.USDK supports multiple formats for FMDs and FIDs.
You can import any supported format.
FeatureExtraction
37
Comparing Fingerprints
Identify() identifies a single FMD against an array of FMDs. This function takes as inputs:
A single view in an FMD
An array of FMDs (each FMD can contain up to 16 views) to compare
The desired number of candidates to return
The threshold for False Positive Identification Rate (FPIR) that is permitted
and returns matches as an array of integer pairs which provide the finger index and view index of each match.
Each time a view has a score lower than the threshold FPIR, that view is marked as a possible candidate. Then when all
possible candidates are identified (i.e., they meet the threshold), they are ranked by their score. Finally, the function
returns as many candidates as requested, based on the candidates with the lowest dissimilarity score. For a discussion
of setting the threshold as well as the statistical validity of the dissimilarity score and error rates, consult NIST
Fingerprint Image Quality (NFIQ) on page 14.
Compare() takes two single views from two FMDs and returns a dissimilarity score indicating the quality of the
match.
The majority of applications should use the Identify method to implement both identification and verification.
However, in a few special cases, e.g., using multi-modal biometrics, or doing statistical risk assessment, the Compare
method allows you to compare two FMVs to determine their actual degree of dissimilarity. This is useful for accuracy
testing and diagnostics and is not intended to be used in final applications for actual fingerprint recognition. The
Compare method returns a dissimilarity score with values:
0 = fingerprints are NOT dissimilar (i.e., they MATCH perfectly).
maxint (#7FFFFFFF or 2147483647) = fingerprints are completely dissimilar (i.e., DO NOT match).
Values close to 0 indicate very close matches, values closer to maxint indicate very poor matches.
The table below shows the relationship between the scores returned from Compare and the false match error rates
observed in our test. The dissimilarity score distribution is estimated based on our internal testing, and may not be
representative of the actual rate that will be observed in deployment.
Dissimilarity Score
2147483
.1%
214748
.01%
21474
.001%
2147
.0001%
38
Function
Description
Compare
Compare two FMDs; supported formats are: Gold SDK, One Touch SDK, ANSI
and ISO.
Identify
Identify an FMD: given an array of FMDs, this function returns an array of candidates that match the original fingerprint (an FMV within an FMD) within the
threshold of error. Supported formats are: Gold SDK, One Touch SDK, ANSI and
ISO.
Enrollment
CreateEnrollmentFmd() creates and returns an enrollment FMD. The method takes as input an enumeration which
defines which format to use, e.g., ANSI or ISO. This method also takes as input an IEnumerable<Fmd> object type.
See IEnumerables in the .NET Wrapper on page 33 for a brief description. As IEnumerable<Fmd> pertains to Enrollment,
you may either send an array of FMDs to CreateEnrollmentFmd() because simple arrays satisfy the
IEnumerable<Fmd> interface. You may also send a method which returns IEnumerable<Fmd>. Here is an example
that uses an IEnumerable<Fmd> method. To keep the example simple, error checking is removed:
// Create an enrollment Fmd.
DataResult<Fmd> enrollmentResult = Enrollment.CreateEnrollmentFmd(
Constants.Formats.Fmd.ANSI,
CaptureExtractFmd()
);
Here is a function which captures and extracts an FMD, then returns IEnumerable<Fmd>: (the full version of this
code is in the code sample)
// Capture and extract an FMD and return as IEnumerable<Fmd>.
private IEnumerable<Fmd> CaptureAndExtractFmd()
{
while (true)
{
// !!! Get Status and ensure that status is DP_STATUS_READY before continuing
// Capture a fingerprint.
CaptureResult captureResult = m_reader.Capture(
Constants.Formats.Fid.ANSI,
Constants.CaptureProcessing.DP_IMG_PROC_DEFAULT,
/* Default processing used. */
-1,
/* No timeout. */
reader.Capabilities.Resolutions[0]
/* A resolution that is available to reader. */
);
// !!! Check for errors, use yield return null; or break; to stop.
yield return convertResult.Data;
}
}
39
40
41
ActiveX
T HIS CHAPTER PROVIDES AN OVERVIEW OF THE API. F OR DETAILS OF USING THE API ON W INDOWS - BASED
READERS , CONSULT THE U. ARE .U SDK P LATFORM G UIDE FOR W INDOWS .
The ActiveX API and controls are built as a wrapper to the C/C++ APIs, and is available for the Windows platform.
This chapter provides an overview of the API. For details of using the API on Windows-based readers, consult the
U.are.U SDK Platform Guide for Windows.
Note that ActiveX is a Microsoft technology and is not supported on Mozilla Firefox and Google Chrome.
I m p o r t i n g t h e U . a re . U A c t i ve X p a c k a g e
The U.are.U ActiveX library classes are aggregated into two DLLs:
DPXUru.dll ActiveX API library
DPCtlXUru.dll ActiveX GUI controls
U s i n g t h e Pa c k a g e
Main Access Points
The main access point to the U.are.U ActiveX library is the XReaderCollection class.
To acquire a reference to XReaderCollection use the GetReaders() method. To destroy
XReaderCollection, (release all system resources associated with readers and make readers available for
other processes) use the Dispose() method.
To acquire a reference(s) to individual readers, use the XReaderCollection object, which is a collection
of objects of type XReader.
To work with the FingerJet Engine, instantiate one of the classes: XComparison, XImporter,
XFeatureExtraction or XEnrollment. For example, to start enrolling fingerprints using the FingerJet
engine, call the static method, Enrollment.CreateEnrollmentFmd() . This method takes as input an
enumeration that specifies the format the enrollment template should be in, e.g., ANSI or ISO. This method also
takes an IEnumerable<Fmd> object. See IEnumerables in the .NET Wrapper on page 33 for more information
on IEnumerable<Fmd>.
SDKException
The SDKException class describes exceptions specific to the U.are.U SDK.
Serialization
The ActiveX API provides the ability to convert an FMD or FID into a format that can be read serially. Serialization
allows you to easily transmit and store data as byte strings, streams or XML. This allows you to transmit the data or
save it to standard file systems. The XML format can be used within HTML for building browser-based applications.
To return the data to its original format, deserialization is also provided.
42
ActiveX
Note that serialized FMDs and FIDs include the version number of the ActiveX API that was used for the serialization.
If you attempt to deserialize with an older version of the API, the results may not be correct, so when deserializing, the
API will throw an SDKException if the serialization was done using a later version of the wrapper.
Serialization in the API occurs using the default System.Xml.Serialization.XmlSerializer. The name
of the root element of the generated XML is the same as the object type. Each public member of the object is
represented as an XML element. Raw byte data is encoded as a Base-64 string by XmlSerializer.
Deserialization also uses XmlSerializer. The XML that was serialized is fed into XmlSerializer where the
elements with values become object members with values of the same name as the element.
Wo r k i n g w i t h R e a d e r s
Readers are accessed through the XReaderCollection object, which is a collection of XReader objects.
Each attached reader is represented with a XReader object. The XReader interface allows:
Querying reader description and capabilities,
Acquiring status of the reader,
Capturing fingerprints,
Starting and stopping image stream, and
Resetting and calibrating the reader.
To acquire a reader, first instantiate a XReaderCollection object and call
XReaderCollection.GetReaders() which returns the attached readers. Iterate through this list to look at the
description object for the desired reader. Once finished with all of the XReader objects in the
XReaderCollection, ensure that you call the Dispose() method to destroy the XReaderCollection
object and release system resources.
43
ActiveX
Class Diagrams
The UML diagrams below show the XReaderCollection and XReader classes.
44
ActiveX
The main reader hardware management methods in the XReader class are:
Function
Description
Open
Open a device and return the device capabilities. This method establishes an
exclusive link to the device; no other processes will be able to use the device
until you close it. The application must open the device before use.
GetStatus
Get the status for a device. You would normally check the device status before
captures to ensure that the device is functioning and there are no error
conditions.
Returns an object of type ReaderStatus which describes the current status
of the reader.
Calibrate
Reset
Do a hardware reset on the reader. Hardware resets are typically needed only
after a hardware problem (e.g., the device is unplugged or receives an
electrostatic shock). Hardware resets typically only take a few milliseconds.
Dispose
45
ActiveX
Capturing Fingerprints
The Capture function of the XReader class captures a fingerprint image for
Enrollment (as part of the process described on page 12)
Identifying users with Identify
Verifying a specific user identity with Compare
The primary fingerprint capture methods are:
Function
Description
Capture
Captures a fingerprint image from the open reader. This function signals the
reader that a fingerprint is expected, and blocks until a fingerprint is received,
capture fails or the reader times out.
CancelCapture
Streaming Fingerprints
Not all readers support streaming mode. To determine if a specific reader supports this feature, check the value of the
XReader property CanStream.
The streaming methods in XReader are:
Function
StartStreaming
Description
Put the reader into streaming mode. In this mode, the application must call
StopStreaming
46
ActiveX
Managing Fingerprint Data
The ActiveX API implements fingerprint data as shown in the UML diagram below:
In addition to the usual methods for working with data, this class includes the methods below for serializing and
deserializing (as described in Importing the U.are.U .NET package on page 32).
Function
Description
SerializeXml
Static method which serializes FMDs and FIDs into an XML string. Note that raw
data is encoded as base-64.
DeserializeXml
Static method which de-serializes XML-encoded FMDs and FIDs back into a
U.are.U FMD or FID data structure.
47
ActiveX
Accessing the FingerJet Engine
The FingerJet Engine interfaces provide functionality to
Extract fingerprint features (create FMDs),
Identify and compare FMDs, and
Create enrollment FMDs.
Refer to Understanding the Data Flow on page 11 for a description of enrollment and comparison terminology and data
flow.
The UML diagram below shows the relevant classes:
48
ActiveX
Identification and Comparison
Identify() identifies a single FMD against an array of FMDs. This function takes as inputs:
A single view in an FMD
An array of FMDs (each FMD can contain up to 16 views) to compare
The desired number of candidates to return
The threshold for False Positive Identification Rate (FPIR) that is permitted
and returns matches as an array of integer pairs which provide the finger index and view index of each match.
Each time a view has a score lower than the threshold FPIR, that view is marked as a possible candidate. Then when all
possible candidates are identified (i.e., they meet the threshold), they are ranked by their score. Finally, the function
returns as many candidates as requested, based on the candidates with the lowest dissimilarity score. For a discussion
of setting the threshold as well as the statistical validity of the dissimilarity score and error rates, consult NIST
Fingerprint Image Quality (NFIQ) on page 14.
Compare()takes two single views from two FMDs and returns a dissimilarity score indicating the quality of the
match.
The majority of applications should use the Identify method to implement both identification and verification.
However, in a few special cases, e.g., using multi-modal biometrics, or doing statistical risk assessment, the Compare
method allows you to compare two FMVs to determine their actual degree of dissimilarity. This is useful for accuracy
testing and diagnostics and is not intended to be used in final applications for actual fingerprint recognition. The
Compare method returns a dissimilarity score with values:
0 = fingerprints are NOT dissimilar (i.e., they MATCH perfectly).
maxint (#7FFFFFFF or 2147483647) = fingerprints are completely dissimilar (i.e., DO NOT match).
Values close to 0 indicate very close matches, values closer to maxint indicate very poor matches.
The table below shows the relationship between the scores returned from Compare and the false match error rates
observed in our test. The dissimilarity score distribution is estimated based on our internal testing, and may not be
representative of the actual rate that will be observed in deployment.
Dissimilarity Score
2147483
.1%
214748
.01%
21474
.001%
2147
.0001%
Function
Description
Compare
Compare two FMDs; supported formats are: Gold SDK, One Touch SDK, ANSI
and ISO.
Identify
Enrollment
CreateEnrollmentFmd() creates and returns an enrollment FMD. The method takes as input:
Which format to use, e.g., ANSI or ISO
An ArrayList object containing the FMDs to enroll
The recommended sequence in which to enroll FMDs is to send CreateEnrollmentFmd() four captured FMDs
in an array. If four FMDs are not enough, you can capture an FID, convert it to an additional FMD, add it to the array
49
ActiveX
and call CreateEnrollmentFMD() again. If CreateEnrollmentFMD(), fails again, you can continue to add
FMDs to the array and call CreateEnrollmentFMD() until an enrollment FMD is created successfully.
50
ActiveX
Pre-Built Controls for Enrollment and Identification
In addition to the basic API, the SDK contains two pre-built controls that allow you to quickly add enrollment or
identification into your application. These controls provide the same functionality as the DigitalPersona One Touch
products.
51
JavaPOS
THIS CHAPTER DESCRIBES HOW TO USE THE JAVAPOS API.
The U.are.U JavaPOS API is built on the U.are.U Java API. This JavaPOS API is geared for Point of Sale applications
and has the following features:
Fully compliant with JavaPOS 1.13. The U.are.U JavaPOS API conforms to the specifications for the
Biometrics device category in Chapter 5, Biometrics, of the UnifiedPOS Retail Peripheral Architecture, Version
1.13 (July 15, 2009).
The complete UPOS documentation is available at http://www.nrf-arts.org/UnifiedPOS/default.htm.
Backward compatible with previous DigitalPersona JavaPOS product (U.are.U UPOS for JavaPOS SDK),
with only a few caveats. This new API is the result of merging the previous JavaPOS SDK with the U.are.U SDK
- the internal architecture has been completely rewritten. For users of the previous SDK, the updated SDK means
an upgraded internal architecture for more robust performance -- up to ten times faster for identification. If you are
upgrading an existing application, see Upgrading from U.are.U UPOS for OPOS/JavaPOS on page 20 for more
details.
In addition to the JavaPOS API, the U.are.U SDK includes a JavaPOS Device Service object, which can be
used with any JavaPOS Device Control for the Biometrics device category.
Because the JavaPOS API is built as an adjunct to the Java API, applications can use both the JavaPOS
standard operations AND use the U.are.U Java API (described in The JAVA API on page 28). Java methods
can be used to access streaming features or to import data.
Ter m i n o l o g y N o t e
The U.are.U JavaPOS API conforms to the standard terminology used by the JavaPOS spec from 2009 whereas the
other APIs in the U.are.U SDK generally use terminology that matches evolving industry standards. If you are going to
use the U.are.U Java API along with JavaPOS, you need to note that in JavaPOS, the extracted fingerprint data
(template) is stored in a biometric information record (BIR). The templates created through enrollment and capture are
equivalent to Fingerprint Minutiae Data (FMD) records in the other APIs of the U.are.U SDK. Note that JavaPOS
templates include a 10- or 45-byte JavaPOS header in addition to the data itself.
Wo r k i n g w i t h F i n g e r p r i n t D a t a i n Java P O S
The U.are.U JavaPOS API provides two types of fingerprint data: raw images and fingerprint templates. The data flow
for JavaPOS applications is the same as described in the topic Understanding the Data Flow on page 11 except that
JavaPOS data has additional JavaPOS headers and JavaPOS does not use the FID/FMD terminology used by U.are.U.
Note that there is no easy method provided in the API for converting data from JavaPOS BIRs to FMDs.
52
JavaPOS
Function
Description
Default (Same as 1)
DigitalPersona format with 45-byte header that conforms to JavaPOS 1.13 spec.
New captures and enrollments will be done in the DigitalPersona format with 45byte headers. Verify and identify will correctly compare with BIRs that have 45byte headers, the previous 10-byte headers or a mixture.
ANSI INSITS 378-2004. New captures and enrollments will be created in ANSI
format with a 45-byte JavaPOS header. Verify and identify will require that all
BIRs be in ANSI format.
ISO/IEC 19794-2:2005. New captures and enrollments will be created in ISO format with a 45-byte JavaPOS header. Verify and identify will require that all BIRs
be in ISO format.
JavaPOS 1.x compatible. This is the previous DigitalPersona format with 10-byte
header. This format was the default (and only) format used in the U.are.U UPOS
for JavaPOS SDK. New captures and enrollments will be created in the DigitalPersona format with 10-byte headers. Verify and identify will correctly compare
with BIRs that have 10-byte headers.
Identification and verification require that all BIRs be in the same format. Stored enrollment BIRs can be in four
formats:
1 DigitalPersona format (10-byte headers, 45-byte headers or a mixture),
2 ANSI (with 45-byte headers)
3 ISO (with 45-byte headers)
4 JavaPOS 1.x compatible (DigitalPersona format with 10-byte headers).
For example, if the Algorithm property is set to ANSI and you receive ANSI captures, those fingerprints cannot be
matched against templates that are stored in a DigitalPersona format.
The value of the Algorithm property must be set before the device is enabled (i.e., after the device is opened and
claimed, but before it is enabled).
53
JavaPOS
G e t t i n g D e v i c e - S p e c i f i c I n f o r m a t i o n w i t h D i re c t I O E ve n t
The DirectIOEvent event is fired by a Service Object to deliver vendor-specific events to the application. The U.are.U
JavaPOS API uses DirectIOEvent events to notify the application about device connection and disconnection and
intermediate events such as finger touch or removal.
Syntax
upos::events::DirectIOEvent
EventNumber: int32 { read-only }
Data: int32 { read-write }
Obj: object { read-write }
Properties
This event contains the following attributes:
Property
Type
Description
EventNumber
int
Data
int
Not used
Obj
object
Description
DP_EVENT_DISCONNECT
DP_EVENT_RECONNECT
DP_EVENT_FINGER_TOUCHED
DP_EVENT_FINGER_GONE
DP_EVENT_COMPLETED
Capture completed.
DP_EVENT_IMAGE_READY
DP_EVENT_SAMPLE_QUALITY
54
JavaPOS
Implementation Notes
The following table provides information about how UPOS and JavaPOS properties, methods, and events are
implemented in the U.are.U JavaPOS API.
Property
Type
Description
No
This property is initialized to false in the open method. Changing its value will have no effect.
CapCompareFirmwareVersion
Yes
CapPowerReporting
Yes
CapStatisticsReporting
Yes
CapUpdateFirmware
Yes
CapUpdateStatistics
Yes
CheckHealthText
Yes
Claimed
Yes
DataCount
Yes
DataEventEnabled
Yes
DeviceEnabled
Yes
Has value true when the service will return device events. The
Algorithm property cannot be changed when the device is
enabled.
DeviceServiceDescription
Yes
DeviceServiceVersion
Yes
FreezeEvents
Yes
PhysicalDeviceDescription
Yes
PhysicalDeviceName
Yes
PowerNotify
Yes
PowerState
Yes
State
Yes
Specific Properties
Algorithm
Yes
Specifies the data format used. See Fingerprint Data for Captures and Enrollment Templates (BIRs) on page 52 for details.
AlgorithmList
Yes
BIR
Yes
55
JavaPOS
Property
Type
Description
CapPrematchData
Yes
This property is initialized to false in the open method since prematching is not supported.
CapRawSensorData
Yes
CapRealTimeData
Yes
CapSensorColor
Yes
CapSensorOrientation
Yes
CapSensorType
Yes
CapTemplateAdaptation
Yes
RawSensorData
Yes
RealTimeDataEnabled
Yes
SensorBPP
Yes
SensorColor
Yes
SensorHeight
Yes
SensorOrientation
Yes
SensorType
Yes
SensorWidth
Yes
Yes
Close
Yes
ClaimDevice
Yes
ReleaseDevice
Yes
CheckHealth
Yes
ClearInput
Yes
ClearInputProperties
Yes
ClearOutput
No
Partial
CompareFirmwareVersion
Yes
ResetStatistics
Yes
RetrieveStatistics
Yes
UpdateFirmware
Yes
DirectIO
56
JavaPOS
Property
UpdateStatistics
Type
Yes
Description
An exception is thrown since CapUpdateStatistics is set to
false.
Specific Methods
beginEnrollCapture
Yes
beginVerifyCapture
Yes
endCapture
Yes
identify
Yes
identifyMatch
Yes
processPrematchData
Yes
verify
Yes
verifyMatch
Yes
UPOS Events
DataEvent
Yes
DirectIOEvent
Yes
ErrorEvent
Yes
OutputCompleteEvent
No
StatusUpdateEvent
Yes
Exceptions
The files jpos.Const.* contain the JavaPOS standard exception codes. The following exceptions are thrown by the
U.are.U JavaPOS API:
JPOS_E_FAILURE
JPOS_E_ILLEGAL
JPOS_E_NOHARDWARE
JPOS_E_TIMEOUT
D e v i c e - R e l a t e d E r ro r C o d e s
For the device-related result codes returned by EventNumber after the DirectIOEvent event, see EventNumber Return
Values on page 54.
The following error codes are returned in the ResultCodeExtended property of the ErrorEvent object.
57
JavaPOS
IMPORTANT: You should always use the names of the return codes, such as FT_OK, rather than the numeric values
because these values may change at any time, without notice. The numbers are provided as a reference for the error
codes in the sample application.
Property
Type
Description
-1
FT_ERR_NO_INIT
The fingerprint feature extraction module or the fingerprint comparison module is not initialized.
-2
FT_ERR_INVALID_PARAM
-4
FT_ERR_IO
-7
FT_ERR_NO_MEMORY
-8
FT_ERR_INTERNAL
-10
-11
FT_ERR_INVALID_BUFFER
-33
58
OPOS
T HIS CHAPTER DESCRIBES HOW TO USE THE OPOS API .
The U.are.U OPOS API is built on the U.are.U C/C++ API. The OPOS API is geared for Point of Sale applications and
has the following features:
Fully compliant with OPOS 1.13. The U.are.U OPOS API conforms to the specifications for the Biometrics
device category in Chapter 5, Biometrics, of the UnifiedPOS Retail Peripheral Architecture, Version 1.13 (July
15, 2009). The complete UPOS documentation is available at http://www.nrf-arts.org/UnifiedPOS/default.htm.
Backward compatible with previous DigitalPersona OPOS product (U.are.U UPOS for OPOS SDK), with a
few minor caveats. This new API is the result of merging the previous OPOS SDK with the U.are.U SDK. For
users of the previous SDK, the updated SDK means an upgraded internal architecture for more robust performance
-- up to ten times faster for identification. If you are upgrading an existing application, see Upgrading from
U.are.U UPOS for OPOS/JavaPOS on page 20 for more details.
The OPOS API is a set of COM objects that acts as an extension to the DigitalPersona fingerprint reader driver,
providing an OPOS-compliant application interface to DigitalPersona products. It consists of a Control Object
(CO) (an ActiveX Control) for the OPOS Biometrics device category and a Service Object (SO).
Because the OPOS API is built as an adjunct to the C/C++ API, applications can use both the OPOS
standard operations AND use the U.are.U C/C++ API (described in The C/C++ APIs on page 23). C/C++
methods can be used to access streaming features or to import data.
A complete reference to the controls, properties, methods and events of the OPOS interface is provided in
Appendix A of the UnifiedPOS specification, a PDF document titled UnifiedPOS Retail Peripheral
Architecture. Download the current version from http://www.nrf-arts.org/content/unifiedpos.
Ter m i n o l o g y N o t e
The U.are.U OPOS API conforms to the standard terminology used by the OPOS spec from 2009 whereas the other
APIs in the U.are.U SDK generally use terminology that matches evolving industry standards. If you are going to use
the U.are.U C/C++ API along with OPOS, you need to note that in OPOS, the extracted fingerprint data (template) is
stored in a biometric information record (BIR). The templates created through enrollment and capture are equivalent to
Fingerprint Minutiae Data (FMD) records in the other APIs of the U.are.U SDK. Note that OPOS templates include a
12- or 45-byte OPOS header in addition to the data itself.
Wo r k i n g w i t h F i n g e r p r i n t D a t a i n O P O S
The U.are.U OPOS API provides two types of fingerprint data: raw images and fingerprint templates. The data flow for
OPOS applications is the same as described in Understanding the Data Flow on page 11 except that OPOS data has
additional OPOS headers and OPOS does not use the FID/FMD terminology used by U.are.U. Note that there is no
easy method provided in the API for converting data from OPOS BIRs to FMDs.
59
OPOS
Value
Meaning
Default (Same as 1)
DigitalPersona format with 45-byte header that conforms to OPOS 1.13 spec.
New captures and enrollments will be done in DigitalPersona format with 45byte headers. Verify and identify will correctly compare with BIRs that have 45byte headers, the previous 12-byte headers or a mixture.
ANSI INSITS 378-2004. New captures and enrollments will be created in ANSI
format with a 45-byte OPOS header. Verify and identify will require that all BIRs
be in ANSI format.
ISO/IEC 19794-2:2005. New captures and enrollments will be created in ISO format with a 45-byte OPOS header. Verify and identify will require that all BIRs be
in ISO format.
OPOS 1.x compatible. This is the previous DigitalPersona format with 12-byte
header. This format was the default (and only) format used in the U.are.U UPOS
for OPOS SDK. New captures and enrollments will be created in the DigitalPersona format with 12-byte headers. Verify and identify will correctly compare with
BIRs that have 12-byte headers.
Identification and verification require that all BIRs be in the same format. The BIRs can be in four formats:
1 DigitalPersona format (12-byte headers, 45-byte headers or a mixture),
2 ANSI (with 45-byte headers)
3 ISO (with 45-byte headers)
4 OPOS 1.x compatible (DigitalPersona format with 12-byte headers).
For example, if the Algorithm property is set to ANSI and you receive ANSI captures, those fingerprints cannot be
matched against templates that are stored in a DigitalPersona format.
The value of the Algorithm property must be set before the device is enabled (i.e., after the device is opened and
claimed, but before it is enabled).
60
OPOS
G e t t i n g D e v i c e - S p e c i f i c I n f o r m a t i o n w i t h D i re c t I O E ve n t
The DirectIOEvent event is fired by a Service Object to deliver vendor-specific events to the application. The U.are.U
JavaPOS API uses DirectIOEvent events to notify the application about device connection and disconnection and
intermediate events such as finger touch or removal.
This chapter contains specific information about the U.are.USDK implementation of the OPOS Control.
DataEvent
Syntax
<< event >> upos::events::DataEvent
Status: int32 { read-only }
Description
This event is fired to provide input data from the fingerprint reader to the application. The actual input data is placed in
one or more device-specific properties.
Attribute
This event contains the following attribute:
Attribute
Type
Description
Status
int32
DirectIOEvent
Syntax
<< event >> upos::events::DirectIOEvent
EventNumber: int32 { read-only }
Data: int32 { read-write }
Obj: object { read-write }
Description
This event is fired by the Service Object (SO) to communicate directly with the application. DirectIOEvent is used in
the U.are.USDK to notify the user of the image-capturing status, fingerprint reader connection status, and image
quality, etc., whenever required.
Attributes
This event contains the following attributes:
Attribute
Type
Description
EventNumber
int32
Data
int32
Additional numeric data. Specific values vary by the EventNumber and the SO.
Obj
object
Additional data whose use varies by the EventNumber and the SO.
61
OPOS
EventNumber Return Values
Event Number
Description
Data
Description
DP_QUALITY_GOOD,
DP_QUALITY_NONE, etc.
1, 2, 3, etc.
a. For every other EventNumber (1 through 5 and 8), Data holds the value 0 (Not Supported).
DP_SAMPLE_QUALITY Enumeration
Value
Meaning
DP_QUALITY_GOOD (0)
DP_QUALITY_NONE (1)
There is no image.
DP_QUALITY_TOOLIGHT (2)
DP_QUALITY_TOODARK (3)
DP_QUALITY_TOONOISY (4)
DP_QUALITY_LOWCONTR (5)
DP_QUALITY_FTRNOTENOUGH (6)
DP_QUALITY_NOCENTRAL (7)
Object
62
OPOS
StatusUpdateEvent
Syntax
<< event >> upos::events::StatusUpdateEvent
Status: int32 { read-only }
Description
This event is used in the U.are.USDK to notify the user that a raw image is available for use.
Attribute
This event contains the following attribute:
Attribute
Type
Description
Status
int32
The Status parameter notifies the user that raw image data is available.
Value
Meaning
BIO_SUE_RAW_DATA
Implementation Notes
The following table provides information about how UPOS properties, methods, and events are implemented in the
DigitalPersona U.are.USDK.
Name
Implementeda
Comment
Partial
BinaryConversion
Partial
CapCompareFirmwareVersion
Partial
CapPowerReporting
Partial
CapStatisticsReporting
Partial
CapUpdateFirmware
Partial
CapUpdateStatistics
Partial
CheckHealthText
No
63
OPOS
Name
Implementeda
Claimed
Yes
ControlObjectDescription
Yes
ControlObjectVersion
Yes
Comment
This property is initialized to false in the open method. It is
set to true on claim and set to false again on release.
DataCount
Partial
DataEventEnabled
Partial
DeviceDescription
Yes
DeviceEnabled
Partial
DeviceName
Yes
FreezeEvents
Partial
OpenResult
Yes
OutputID
No
PowerNotify
Partial
PowerState
Partial
ResultCode
Yes
ResultCodeExtended
No
ServiceObjectDescription
Yes
ServiceObjectVersion
Yes
State
Partial
Algorithm
Yes
See Fingerprint Data for Captures and Enrollment Templates (BIRs) on page 59 for details.
AlgorithmList
Yes
See Fingerprint Data for Captures and Enrollment Templates (BIRs) on page 59 for details.
BIR
Yes
Specific Properties
CapPrematchData
CapRawSensorData
CapRealTimeData
Partial
Yes
Partial
64
OPOS
Name
Implementeda
Comment
CapSensorColor
Yes
CapSensorOrientation
Yes
CapSensorType
Yes
Partial
Yes
Partial
SensorBPP
Yes
SensorColor
Yes
SensorHeight
Yes
SensorOrientation
Yes
SensorType
Yes
SensorWidth
Yes
CapTemplateAdaptation
RawSensorData
RealTimeDataEnabled
Common Methods
Open
Yes
Close
Yes
ClaimDevice
Yes
ReleaseDevice
Yes
CheckHealth
No
ClearInput
No
ClearInputProperties
No
ClearOutput
No
DirectIO
No
CompareFirmwareVersion
No
ResetStatistics
No
RetrieveStatistics
No
UpdateFirmware
No
UpdateStatistics
No
Specific Methods
beginEnrollCapture
Yes
beginVerifyCapture
Yes
65
OPOS
Name
Implementeda
endCapture
Yes
identify
Yes
identifyMatch
Yes
processPrematchData
No
verify
Yes
verifyMatch
Yes
Comment
Events
DataEvent
Yes
DirectIOEvent
Specific
ErrorEvent
Yes
Specific
OutputCompleteEvent
StatusUpdateEvent
Yes
ErrorLocus - EL_INPUT
Yes
ErrorResponse - ER_CLEAR
No
Partial
Exceptions
The files jpos.Const.* contain the JavaPOS standard exception codes. The following exceptions are thrown by the
U.are.U JavaPOS API:
JPOS_E_FAILURE
JPOS_E_ILLEGAL
JPOS_E_NOHARDWARE
JPOS_E_TIMEOUT
66
OPOS
D e v i c e - R e l a t e d E r ro r C o d e s
For the device-related result codes returned by EventNumber after the DirectIOEvent event, see EventNumber Return
Values on page 62.
The following error codes are returned in the ResultCodeExtended property of the ErrorEvent object.
IMPORTANT: You should always use the names of the return codes, such as FT_OK, rather than the numeric values
because these values may change at any time, without notice. The numbers are provided as a reference for the error
codes in the sample application.
Value
Result Code
Meaning
-1
FT_ERR_NO_INIT
The fingerprint feature extraction module or the fingerprint comparison module is not initialized.
-2
FT_ERR_INVALID_PARAM
-4
FT_ERR_IO
-7
FT_ERR_NO_MEMORY
-8
FT_ERR_INTERNAL
-10
FT_ERR_UNKNOWN_DEVICE
-11
FT_ERR_INVALID_BUFFER
-33
FT_ERR_UNKNOWN_EXCEPTION
67
Application Notes
T HIS CHAPTER DESCRIBES SOME SUGGESTIONS FOR TROUBLESHOOTING YOUR APPLICATION .
G e n e ra l F i n g e r p r i n t I s s u e s
It is very important that you test your application with multiple and diverse people. The readability of fingerprints is
affected by many factors including wear and tear, skin dryness, and age.
The middle finger often gives better scans than the index finger because the middle finger is typically less worn. We
recommend that you enroll more than one finger for each user, preferably at least the index and middle fingers.
Minex Certification
The U.are.U SDK (2.3.0 and above) includes two versions of the FingerJet matching engine, versions 6 and 7.
Version 6 has a feature extractor certified by the National Institute of Standards and Technologys Minex program
(http://www.nist.gov/itl/iad/ig/minex.cfm), as interoperable with other Minex-certified feature extractors and matchers.
Version 7 has both the feature extractor and matcher certified by the Minex program. However, the Minex-certified
matcher is slower than the non-certified matcher in the version 6 FingerJet engine.
For customers who do not have a requirement to use a Minex-certified matcher, we recommend using the version 6
FingerJet engine. Specifically, for customers who use DigitalPersona legacy template formats, the version 7 FingerJet
engine does not provide any improvements in matching performance over version 6.
C/C++ Issues
The dpfj_identify function returns DPFJ_SUCCESS if it is able to do identification (i.e., the FMDs are valid and
correctly formed). However that does not mean that a candidate was found. You must check the number of returned
candidates to see if any actual matches were found.
The dpfj_compare function returns DPFJ_SUCCESS if it is able to do the requested comparison (i.e., the FMDs are
valid and correctly formed). However that does not mean that the fingerprints matched. To check whether they
matched, you must look at the dissimilarity score (0=no match, maxint=perfect match, maxint-threshold =
acceptable match).
68
Glossary
G e n e ra l Te r m s
Fingerprint
The impression left from the friction ridges of a human finger.
Fingerprint characteristics
The biological finger surface details that can be detected and from which distinguishing and repeatable fingerprint
features can be extracted.
Fingerprint minutiae
The fingerprint characteristics commonly used in fingerprint recognition systems. Fingerprint minutiae include:
Ridge ending the abrupt end of a ridge
Ridge bifurcation a single ridge that divides into two ridges
Short ridge, or independent ridge a ridge that commences, travels a short distance and then ends
Island a single small ridge inside a short ridge or ridge ending that is not connected to all other ridges
Ridge enclosure a single ridge that bifurcates and reunites shortly afterward to continue as a single ridge
Spur a bifurcation with a short ridge branching off a longer ridge
Crossover or bridge a short ridge that runs between two parallel ridges
Delta a Y-shaped ridge meeting
Core a U-turn in the ridge pattern.
Fingerprint Data
Fingerprint sample
An analog or digital representation of a fingerprint obtained from a fingerprint capture device. See also fingerprint
image.
Fingerprint image
A digital representation of a fingerprint sample encoded as a spatially mapped array of pixels. A fingerprint image is
the only representation of a fingerprint sample supported by DigitalPersona products, thus the terms fingerprint image
and fingerprint sample are used interchangeably.
Fingerprint features
The digital representation of fingerprint characteristics.
69
Glossary
Fingerprint Minutiae View (FMV)
The part of an FMD that contains fingerprint features from a single impression of a single finger.
Typically FMDs contain only one FMV.
Fingerprint template
The fingerprint minutiae data that is stored as a result of the enrollment process.
Fingerprint Devices
Fingerprint capture device
A device that collects a signal of fingerprint characteristic and outputs a fingerprint sample. This device can consist of
one or more components, including hardware and supporting software. For example, a fingerprint capture device may
include a camera, photographic paper, a printer, and/or a digital scanner.
Fingerprint reader
A fingerprint capture device that obtains a fingerprint image by direct interaction with a finger.
F i n g e r p r i n t R e c o g n i t i o n Te r m s
Capture
The process of acquiring a fingerprint image from a fingerprint reader or fingerprint capture device.
Enrollment
The process of capturing a fingerprint image(s) for an individual, extracting fingerprint features, optionally checking
for duplicates, and storing the fingerprint features (fingerprint template). See also FMD, Fingerprint Template.
Comparison
The function which, given two fingerprints computes a comparison score.
Comparison score
A comparison score is a numerical value resulting from the comparison of the fingerprint features of two fingerprints.
Comparison scores are of two types: similarity scores and dissimilarity scores.
Comparison scores are calculated using algorithms that are specific to the fingerprint recognition system and,
optionally, can be normalized in order to maintain a constant score distribution of impostor verification attempts or
open set identification attempts.
Similarity Score
See comparison score.
Dissimilarity Score
See comparison score.
Fingerprint Recognition
Verification or identification.
Verification
The process of
1 Capturing a fingerprint image from an individual,
2 Extracting fingerprint features,
3 Comparing the captured images fingerprint features with the fingerprint template(s) of the enrollee this individual
claims to be and
70
Glossary
4 Making the match/non-match decision.
Verification Threshold
The maximum degree of dissimilarity that is allowed between a fingerprint image and a fingerprint template in order to
make the match decision during the verification process.
Identification
The process of
1 Capturing a fingerprint image from an individual,
2 Extracting fingerprint features and
3 Comparing the captured images fingerprint features with the fingerprint templates from multiple individuals in
order to create a candidate list of fingerprints that meet the identification threshold.
Identification Threshold
The maximum degree of dissimilarity that is allowed between a fingerprint image and a fingerprint template in order to
call the fingerprint template a candidate in the identification process.
Candidate
A fingerprint template that is determined to be similar to a given FMD during identification.
R e c o g n i t i o n A c c u racy
The terminology below is used when discussing testing processes and reporting accuracy for fingerprint-enabled
applications.
71
Glossary
In authentication applications, FRR is used in place of FNMR.
Probe
In simulation tests, a fingerprint used in searches (analogous to the user fingerprint used by a real application for
searching).
Gallery
In simulation tests, a set of enrolled fingerprints (fingerprint templates) used for comparison purposes (analogous to
the database of enrolled fingerprint templates used by a real application).
72
Index
A
Accessing the FingerJet Engine (ActiveX) 48
Accessing the FingerJet Engine (Java API) 30
Algorithm property 55, 64
allowed values 52, 59
AlgorithmList property 55, 64
ANSI INSITS 378-2004 53, 60
AutoDisable property 55, 63
B
basics of fingerprint recognition 9
BDB format 52, 59
beginEnrollCapture method 57, 65
beginVerifyCapture method 57, 65
BinaryConversion property 63
BIR format 52, 59
BIR property 55, 64
C
C/C++ APIs 23
CapCompareFirmwareVersion property 55, 63
CapPowerReporting property 55, 63
CapPrematchData property 56, 64
CapRawSensorData property 56, 64
CapRealTimeData property 56, 64
CapSensorColor property 56, 65
CapSensorOrientation property 56, 65
CapSensorType property 56, 65
CapStatisticsReporting property 55, 63
CapTemplateAdaptation property 56, 65
Capturing Fingerprints 24
Capturing Fingerprints (.NET API) 35
CapUpdateFirmware property 55, 63
CapUpdateStatistics property 55, 63
CheckHealth method 56, 65
CheckHealthText property 55, 63
ClaimDevice method 56, 65
Claimed property 55, 64
Class Diagrams (ActiveX) 44
ClearInput method 56, 65
ClearInputProperties method 56, 65
ClearOutput method 56, 65
Close 56, 65
Close method 56, 65
common methods 56, 65
CheckHealth 56, 65
ClaimDevice 56, 65
ClearInput 56, 65
ClearInputProperties 56, 65
ClearOutput 56, 65
DigitalPersona U.are.U SDK - Developer Guide
73
Index
CompareFirmwareVersion 56, 65
DirectIO 56, 65
Open 56, 65
ReleaseDevice 56, 65
ResetStatistics 56, 65
RetrieveStatistics 56, 65
UpdateFirmware 56, 65
UpdateStatistics 57, 65
common properties
AutoDisable 55, 63
BinaryConversion 63
CapCompareFirmwareVersion 55, 63
CapPowerReporting 55, 63
CapStatisticsReporting 55, 63
CapUpdateFirmware 55, 63
CapUpdateStatistics 55, 63
CheckHealthText 55, 63
Claimed 55, 64
ControlObjectDescription 64
ControlObjectVersion 64
DataCount 55, 64
DataEventEnabled 55, 64
DeviceDescription 55, 64
DeviceEnabled 55, 64
DeviceName 64
DeviceServiceVersion 55
FreezeEvents 55, 64
OpenResult 64
OutputID 64
PhysicalDeviceDescription 55
PhysicalDeviceName 55
PowerNotify 55, 64
PowerState 55, 64
ResultCode 64
ResultCodeExtended 64
ServiceObjectDescription 64
ServiceObjectVersion 64
State 55, 64
CompareFirmwareVersion method 56, 65
Comparing Fingerprints (.NET API) 38
ControlObjectDescription property 64
ControlObjectVersion property 64
Creating FMDs from images (.NET API) 38
Creating FMDs from images (ActiveX) 48
Creating FMDs from images (Java API) 30
D
data formats and standards supported 8
DataCount property 55, 64
DataEvent 57, 66
implementation notes for 61
DataEventEnabled property 55, 64
DeviceDescription property 55, 64
DeviceEnabled property 55, 64
DeviceName property 64
74
Index
DeviceServiceVersion property 55
DirectIO method 56, 65
DirectIOEvent 57, 66
implementation notes 54, 61
implementation notes for 61
DP Capture API 23
E
endCapture method 57, 66
Enrollment (.NET API) 39
Enrollment (ActiveX) 49
Enrollment (Java API) 31
ErrorEvent 57, 66
result codes returned in ResultCodeExtended property of 57, 67
events
DataEvent 57, 61, 66
DirectIOEvent 57, 61, 66
implementation notes 54, 61
ErrorEvent 57, 66
result codes returned in ResultCodeExtended property of 57, 67
OutputCompleteEvent 57
StatusUpdateEvent 52, 57, 59, 63, 66
exceptions
JPOS_E_FAILURE 57, 66
JPOS_E_ILLEGAL 57, 66
JPOS_E_NOHARDWARE 57, 66
JPOS_E_TIMEOUT 57, 66
Extract FMD 25
F
features of biometric technology 9
FingerJet Engine 22
FingerJet Engine API 24
Fingerprint Capture Device Management 23
fingerprint readers supported 17
FreezeEvents property 55, 64
H
how this book is arranged 8
I
Identification and Comparison (ActiveX) 49
Identification and Comparison (Java API) 30
Identify Fingerprint 25
identify method 57, 66
identifyMatch method 57, 66
ISO/IEC 19794-2
2005 53, 60
J
JPOS_E_FAILURE 57, 66
JPOS_E_ILLEGAL 57, 66
JPOS_E_NOHARDWARE 57, 66
JPOS_E_TIMEOUT 57, 66
75
Index
L
Library Management 23, 24
M
Managing Fingerprint Data (.NET API) 36
Managing Fingerprint Data (ActiveX) 47
methods, common
See common methods
methods, specific
See specific methods
N
NIST Fingerprint Image Quality (NFIQ) 27
O
Open method 56, 65
OpenResult property 64
OutputCompleteEvent 57
events
OutputCompleteEvent 66
OutputID property 64
P
PhysicalDeviceDescription property 55
PhysicalDeviceName property 55
PowerNotify property 55, 64
PowerState property 55, 64
Pre-Built Controls for Enrollment and Identification (.NET API) 41
Pre-Built Controls for Enrollment and Identification (ActiveX) 51
processPrematchData method 57, 66
properties, common
See common properties
properties, specific
See specific properties
R
RawSensorData property 56, 65
RealTimeDataEnabled property 56, 65
ReleaseDevice method 56, 65
ResetStatistics method 56, 65
ResultCode property 64
ResultCodeExtended property 57, 64, 67
RetrieveStatistics method 56, 65
S
Select Fingerprint Matching Engine 24
SensorBPP property 56, 65
SensorColor property 56, 65
SensorHeight property 56, 65
SensorOrientation property 56, 65
SensorType property 56, 65
SensorWidth property 56, 65
Serialization (.NET API) 33
Serialization (ActiveX) 42
DigitalPersona U.are.U SDK - Developer Guide
76
Index
ServiceObjectDescription property 64
ServiceObjectVersion property 64
specific methods
beginEnrollCapture 57, 65
beginVerifyCapture 57, 65
endCapture 57, 66
identify 57, 66
identifyMatch 57, 66
processPrematchData 57, 66
verify 57, 66
verifyMatch 57, 66
specific properties
Algorithm 55, 64
AlgorithmList 55, 64
BIR 55, 64
CapPrematchData 56, 64
CapRawSensorData 56, 64
CapRealTimeData 56, 64
CapSensorColor 56, 65
CapSensorOrientation 56, 65
CapSensorType 56, 65
CapTemplateAdaptation 56, 65
RawSensorData 52, 56, 59, 65
RealTimeDataEnabled 56, 65
SensorBPP 56, 65
SensorColor 56, 65
SensorHeight 56, 65
SensorOrientation 56, 65
SensorType 56, 65
SensorWidth 56, 65
State property 55, 64
StatusUpdateEvent 57, 66
implementation notes for 63
Streaming Fingerprints 24
Streaming Fingerprints (.NET API) 35
Streaming Fingerprints (ActiveX) 46
U
UpdateFirmware method 56, 65
UpdateStatistics method 57, 65
UPOS common properties
See common properties
V
verify method 57, 66
verifyMatch method 57, 66
W
Wavelet Scalar Quantization (WSQ) Compression 26
77