Nail to Nail Fingerprint Capture Challenge
API for participant-specific one-to-many template generation and template matching.
n2n.h
1
38#ifndef N2N_H_
39#define N2N_H_
40
41#include <cstdint>
42#include <string>
43#include <memory>
44#include <vector>
45
46#include <be_finger.h>
47#include <be_image_raw.h>
48#include <be_io_recordstore.h>
49#include <be_memory_autoarray.h>
50
52namespace N2N
53{
56 {
58 FingerImage() = default;
59
76 const uint8_t nfiq2,
77 const std::shared_ptr<BiometricEvaluation::Image::Raw>
78 &rawImage) :
79 fgp{fgp},
80 imp{imp},
81 nfiq2{nfiq2},
83
86 BiometricEvaluation::Finger::Position::Unknown};
96 BiometricEvaluation::Finger::Impression::Unknown};
106 uint8_t nfiq2{254};
108 std::shared_ptr<BiometricEvaluation::Image::Raw> rawImage{};
109 };
111 using FingerImage = struct FingerImage;
112
115 {
117 Candidate() = default;
118
129 const std::string &templateID,
130 double similarity) :
133
139 std::string templateID{};
144 double similarity{-1};
145 };
147 using Candidate = struct Candidate;
148
150 enum class StatusCode
151 {
153 Success = 0,
159 FailedToExtract = 3,
161 FailedToSearch = 4,
167 Vendor = 7
168 };
169
171 inline std::ostream&
173 std::ostream &s,
174 const StatusCode &sc)
175 {
176 switch (sc) {
178 return (s << "Success");
180 return (s << "Image size not supported");
182 return (s << "Template type not supported");
184 return (s << "Failed to extract");
186 return (s << "Failed to search");
188 return (s << "Failed to parse input");
190 return (s << "Insufficient resources");
192 return (s << "Vendor-defined");
193 }
194 }
195
212 {
214 ReturnStatus() = default;
215
226 const StatusCode code,
227 const std::string info) :
228 code{code},
229 info{info} {}
230
234 std::string info{};
235 };
238
240 inline std::ostream&
242 std::ostream &s,
243 const ReturnStatus &rs)
244 {
245 return (s << "Code: " << rs.code << " Info: '" << rs.info <<
246 '"');
247 }
248
250 enum class InputType
251 {
253 Capture,
255 Latent
256 };
257
258 class Interface;
267 {
268 public:
291 virtual void
293 std::string &identifier,
294 uint32_t &revision,
295 std::string &email) = 0;
296
323 virtual ReturnStatus
325 const std::string &configurationDirectory) = 0;
326
371 virtual ReturnStatus
373 const std::vector<FingerImage> &standardImages,
374 const std::vector<BiometricEvaluation::Memory::uint8Array>
375 &proprietaryImages,
377 &enrollmentTemplate) = 0;
378
441 virtual ReturnStatus
443 const std::string &configurationDirectory,
444 const std::string &enrollmentDirectory,
445 const uint8_t nodeCount,
446 const uint64_t nodeMemory,
448 &enrollmentTemplates) = 0;
449
479 virtual ReturnStatus
481 const std::string &configurationDirectory,
482 const InputType &inputType) = 0;
483
528 virtual ReturnStatus
530 const std::vector<FingerImage> &standardImages,
531 const std::vector<BiometricEvaluation::Memory::uint8Array>
532 &proprietaryImages,
534 &searchTemplate) = 0;
535
573 virtual ReturnStatus
575 const std::string &configurationDirectory,
576 const std::string &enrollmentDirectory,
577 const InputType &inputType,
578 const uint8_t nodeNumber) = 0;
579
627 virtual ReturnStatus
629 const std::string &searchID,
631 &searchTemplate,
632 const std::string &stageOneDataDirectory) = 0;
633
663 virtual ReturnStatus
665 const std::string &configurationDirectory,
666 const std::string &enrollmentDirectory,
667 const InputType &inputType) = 0;
668
721 virtual ReturnStatus
723 const std::string &searchID,
724 const std::string &stageOneDataDirectory,
725 std::vector<Candidate> &candidates) = 0;
726
735 static std::shared_ptr<Interface>
737
739 virtual ~Interface() = default;
740 };
741}
742
743#endif /* N2N_H_ */
A class to represent a data storage mechanism.
Definition: be_io_recordstore.h:51
A C-style array wrapped in the facade of a C++ STL container.
Definition: be_memory_autoarray.h:45
The interface to the implementations.
Definition: n2n.h:267
virtual ReturnStatus initIdentificationStageOne(const std::string &configurationDirectory, const std::string &enrollmentDirectory, const InputType &inputType, const uint8_t nodeNumber)=0
Prepare for calls to identifyTemplateStageOne().
virtual ReturnStatus finalizeEnrollment(const std::string &configurationDirectory, const std::string &enrollmentDirectory, const uint8_t nodeCount, const uint64_t nodeMemory, BiometricEvaluation::IO::RecordStore &enrollmentTemplates)=0
Form an enrollment set from one or more enrollment templates.
virtual ReturnStatus identifyTemplateStageOne(const std::string &searchID, const BiometricEvaluation::Memory::uint8Array &searchTemplate, const std::string &stageOneDataDirectory)=0
Search a template against the partial enrollment set.
virtual ReturnStatus initMakeSearchTemplate(const std::string &configurationDirectory, const InputType &inputType)=0
Prepare for calls to makeSearchTemplate().
static std::shared_ptr< Interface > getImplementation()
Obtain a managed pointer to an implementation of this interface.
virtual void getIDs(std::string &identifier, uint32_t &revision, std::string &email)=0
Obtain identifying information about the software under test.
virtual ReturnStatus makeEnrollmentTemplate(const std::vector< FingerImage > &standardImages, const std::vector< BiometricEvaluation::Memory::uint8Array > &proprietaryImages, BiometricEvaluation::Memory::uint8Array &enrollmentTemplate)=0
Create an enrollment template for one subject.
virtual ~Interface()=default
Destructor.
virtual ReturnStatus initIdentificationStageTwo(const std::string &configurationDirectory, const std::string &enrollmentDirectory, const InputType &inputType)=0
Prepare for calls to identifyTemplateStageTwo().
virtual ReturnStatus initMakeEnrollmentTemplate(const std::string &configurationDirectory)=0
Prepare for calls to makeEnrollmentTemplate().
virtual ReturnStatus identifyTemplateStageTwo(const std::string &searchID, const std::string &stageOneDataDirectory, std::vector< Candidate > &candidates)=0
Produce a candidate list from the results of all calls to identifyTemplateStageOne() for a particular...
virtual ReturnStatus makeSearchTemplate(const std::vector< FingerImage > &standardImages, const std::vector< BiometricEvaluation::Memory::uint8Array > &proprietaryImages, BiometricEvaluation::Memory::uint8Array &searchTemplate)=0
Create a search template for one subject.
Position
Finger position codes.
Definition: be_finger.h:62
Impression
Finger, palm, and latent impression types.
Definition: be_finger.h:103
Contains all the structures and functions used by the API.
Definition: n2n.h:53
InputType
Classes of imagery that can be provided.
Definition: n2n.h:251
@ Latent
Images where a subject was not present during collection.
@ Capture
Images where the subject was present during collection.
StatusCode
The status codes that are returned from a function call.
Definition: n2n.h:151
@ InsufficientResources
There are not enough resources to complete the task.
@ TemplateTypeNotSupported
Unsupported template type.
@ Success
Successful completion.
@ FailedToExtract
Could not extract template from image.
@ ImageSizeNotSupported
Image size too small or large.
@ FailedToParseInput
Failure to parse data.
@ Vendor
Vendor-defined error.
@ FailedToSearch
Could not search enrollment set.
std::ostream & operator<<(std::ostream &s, const StatusCode &sc)
Output stream operator for a StatusCode object.
Definition: n2n.h:172
Object used to report a single candidate in a candidate list.
Definition: n2n.h:115
Candidate()=default
Constructor.
double similarity
Score reflecting similarity between candidate represented by templateID and search template.
Definition: n2n.h:144
Candidate(const std::string &templateID, double similarity)
Constructor.
Definition: n2n.h:128
std::string templateID
Candidate's ID, as provided during finalizeEnrollment().
Definition: n2n.h:139
Fingerprint image and image attributes.
Definition: n2n.h:56
std::shared_ptr< BiometricEvaluation::Image::Raw > rawImage
Input image data, containing one finger.
Definition: n2n.h:108
BiometricEvaluation::Finger::Position fgp
Finger position of finger in rawImage.
Definition: n2n.h:85
BiometricEvaluation::Finger::Impression imp
Impression type of finger in rawImage.
Definition: n2n.h:95
FingerImage(const BiometricEvaluation::Finger::Position &fgp, const BiometricEvaluation::Finger::Impression &imp, const uint8_t nfiq2, const std::shared_ptr< BiometricEvaluation::Image::Raw > &rawImage)
Constructor.
Definition: n2n.h:73
FingerImage()=default
Constructor.
uint8_t nfiq2
NFIQ2 value.
Definition: n2n.h:106
Information about the completion status of a method.
Definition: n2n.h:212
std::string info
Additional clarifying information about code.
Definition: n2n.h:234
ReturnStatus(const StatusCode code, const std::string info)
Constructor.
Definition: n2n.h:225
StatusCode code
Completion status of the returning method.
Definition: n2n.h:232
ReturnStatus()=default
Constructor.