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 
52 namespace N2N
53 {
55  struct FingerImage
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},
82  rawImage{rawImage} {}
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 
114  struct Candidate
115  {
117  Candidate() = default;
118 
129  const std::string &templateID,
130  double similarity) :
131  templateID{templateID},
132  similarity{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,
163  FailedToParseInput = 5,
167  Vendor = 7
168  };
169 
171  inline std::ostream&
173  std::ostream &s,
174  const StatusCode &sc)
175  {
176  switch (sc) {
177  case StatusCode::Success:
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");
191  case StatusCode::Vendor:
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  };
237  using ReturnStatus = struct ReturnStatus;
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;
266  class Interface
267  {
268  public:
291  virtual void
292  getIDs(
293  std::string &identifier,
294  uint32_t &revision,
295  std::string &email) = 0;
296 
323  virtual ReturnStatus
324  initMakeEnrollmentTemplate(
325  const std::string &configurationDirectory) = 0;
326 
371  virtual ReturnStatus
372  makeEnrollmentTemplate(
373  const std::vector<FingerImage> &standardImages,
374  const std::vector<BiometricEvaluation::Memory::uint8Array>
375  &proprietaryImages,
377  &enrollmentTemplate) = 0;
378 
441  virtual ReturnStatus
442  finalizeEnrollment(
443  const std::string &configurationDirectory,
444  const std::string &enrollmentDirectory,
445  const uint8_t nodeCount,
446  const uint64_t nodeMemory,
448  &enrollmentTemplates) = 0;
449 
483  virtual ReturnStatus
484  initMakeSearchTemplate(
485  const std::string &configurationDirectory,
486  const InputType &inputType) = 0;
487 
528  virtual ReturnStatus
529  makeSearchTemplate(
530  const std::vector<FingerImage> &standardImages,
531  const std::vector<BiometricEvaluation::Memory::uint8Array>
532  &proprietaryImages,
534  &searchTemplate) = 0;
535 
573  virtual ReturnStatus
574  initIdentificationStageOne(
575  const std::string &configurationDirectory,
576  const std::string &enrollmentDirectory,
577  const InputType &inputType,
578  const uint8_t nodeNumber) = 0;
579 
618  virtual ReturnStatus
619  identifyTemplateStageOne(
620  const std::string &searchID,
622  &searchTemplate,
623  const std::string &stageOneDataDirectory) = 0;
624 
654  virtual ReturnStatus
655  initIdentificationStageTwo(
656  const std::string &configurationDirectory,
657  const std::string &enrollmentDirectory,
658  const InputType &inputType) = 0;
659 
712  virtual ReturnStatus
713  identifyTemplateStageTwo(
714  const std::string &searchID,
715  const std::string &stageOneDataDirectory,
716  std::vector<Candidate> &candidates) = 0;
717 
726  static std::shared_ptr<Interface>
727  getImplementation();
728 
730  virtual ~Interface() = default;
731  };
732 }
733 
734 #endif /* N2N_H_ */
std::string info
Additional clarifying information about code.
Definition: n2n.h:234
There are not enough resources to complete the task.
Impression
Finger and palm impression types.
Definition: be_finger.h:84
Images where a subject was not present during collection.
StatusCode
The status codes that are returned from a function call.
Definition: n2n.h:150
std::shared_ptr< BiometricEvaluation::Image::Raw > rawImage
Input image data, containing one finger.
Definition: n2n.h:108
Candidate(const std::string &templateID, double similarity)
Constructor.
Definition: n2n.h:128
struct ReturnStatus ReturnStatus
Convenience definition of struct ReturnStatus.
Definition: n2n.h:237
std::ostream & operator<<(std::ostream &s, const StatusCode &sc)
Output stream operator for a StatusCode object.
Definition: n2n.h:172
Fingerprint image and image attributes.
Definition: n2n.h:55
Vendor-defined error.
BiometricEvaluation::Finger::Position fgp
Finger position of finger in rawImage.
Definition: n2n.h:85
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
Contains all the structures and functions used by the API.
Definition: n2n.h:52
Successful completion.
StatusCode code
Completion status of the returning method.
Definition: n2n.h:232
Could not search enrollment set.
A class to represent a data storage mechanism.
Definition: be_io_recordstore.h:50
Object used to report a single candidate in a candidate list.
Definition: n2n.h:114
FingerImage()=default
Constructor.
InputType
Classes of imagery that can be provided.
Definition: n2n.h:250
The interface to the implementations.
Definition: n2n.h:266
Information about the completion status of a method.
Definition: n2n.h:211
ReturnStatus(const StatusCode code, const std::string info)
Constructor.
Definition: n2n.h:225
BiometricEvaluation::Finger::Impression imp
Impression type of finger in rawImage.
Definition: n2n.h:95
Could not extract template from image.
Position
Finger position codes.
Definition: be_finger.h:61
Images where the subject was present during collection.
struct Candidate Candidate
Convenience type for struct Candidate.
Definition: n2n.h:147
uint8_t nfiq2
NFIQ2 value.
Definition: n2n.h:106
Image size too small or large.