NIST Biometric Evaluation Framework
Software components for biometric technology evaluations
be_feature_incitsminutiae.h
Go to the documentation of this file.
1/*
2 * This software was developed at the National Institute of Standards and
3 * Technology (NIST) by employees of the Federal Government in the course
4 * of their official duties. Pursuant to title 17 Section 105 of the
5 * United States Code, this software is not subject to copyright protection
6 * and is in the public domain. NIST assumes no responsibility whatsoever for
7 * its use by other parties, and makes no guarantees, expressed or implied,
8 * about its quality, reliability, or any other characteristic.
9 */
10
11#ifndef __BE_FEATURE_INCITSMINUTIAE_H__
12#define __BE_FEATURE_INCITSMINUTIAE_H__
13
14#include <iostream>
15
16#include <be_feature_minutiae.h>
17#include <be_memory_autoarray.h>
19
20namespace BiometricEvaluation
21{
22 namespace Feature
23 {
37 class INCITSMinutiae : public Minutiae {
38 public:
39
40 /*
41 * Constants relevant to INCITS and ISO finger minutiae
42 * data records.
43 */
44 static const std::string FMR_ANSI_SPEC_VERSION;
45 static const std::string FMR_ISO_SPEC_VERSION;
46 static const std::string FMR_ANSI07_SPEC_VERSION;
47 static const uint8_t FMR_SPEC_VERSION_LEN = 4;
48
49 /*
50 * Define the lengths of data blocks in the finger
51 * minutiae record.
52 */
53 static const uint32_t FED_HEADER_LENGTH = 4;
54 static const uint32_t FED_RCD_ITEM_LENGTH = 3;
55
56 /*
57 * Define the masks for the minutia type and x/y
58 * coordinates within a minutia data record
59 */
60 static const uint16_t FMD_MINUTIA_TYPE_MASK = 0xC000;
61 static const uint16_t FMD_RESERVED_MASK = 0xC000;
62 static const uint16_t FMD_MINUTIA_TYPE_SHIFT = 14;
63 static const uint16_t FMD_RESERVED_SHIFT = 14;
64 static const uint16_t FMD_X_COORD_MASK = 0x3FFF;
65 static const uint16_t FMD_Y_COORD_MASK = 0x3FFF;
66
67 /*
68 * The ISO Compact FMD record has type encoded with the
69 * angle value.
70 */
72 = 0xC0;
74 = 6;
76 = 0x3F;
77
78 /* Range of the Minutia Quality values */
79 static const uint16_t FMD_MIN_MINUTIA_QUALITY = 0;
80 static const uint16_t FMD_MAX_MINUTIA_QUALITY = 100;
81 static const uint16_t FMD_UNKNOWN_MINUTIA_QUALITY = 0;
82
83 /* Range of Minutia Angle values. */
84 static const uint16_t FMD_MIN_MINUTIA_ANGLE = 0;
85 static const uint16_t FMD_MAX_MINUTIA_ANGLE = 179;
86 static const uint16_t FMD_MAX_MINUTIA_ISONC_ANGLE = 255;
87 static const uint16_t FMD_MAX_MINUTIA_ISOCC_ANGLE = 63;
88
89 /*
90 * What each unit of angle represents in terms of
91 * degrees.
92 */
93 static const uint16_t FMD_ANSI_ANGLE_UNIT = 2;
94 static const uint16_t FMD_ISO_ANGLE_UNIT;
95 static const uint16_t FMD_ISOCC_ANGLE_UNIT;
96
97 /* Types of Minutia */
98 static const uint16_t FMD_MINUTIA_TYPE_OTHER = 0;
99 static const uint16_t FMD_MINUTIA_TYPE_RIDGE_ENDING = 1;
100 static const uint16_t FMD_MINUTIA_TYPE_BIFURCATION = 2;
101
102 /* Range of the Finger Quality values */
103 static const uint16_t FMR_MIN_FINGER_QUALITY = 0;
104 static const uint16_t FMR_MAX_FINGER_QUALITY = 100;
105 static const uint16_t ISO_UNKNOWN_FINGER_QUALITY = 0;
106
107 /* Extended Data Area Type Codes */
108 static const uint16_t FED_RESERVED = 0x0000;
109 static const uint16_t FED_RIDGE_COUNT = 0x0001;
110 static const uint16_t FED_CORE_AND_DELTA = 0x0002;
111
112 /* Ridge Count Extraction Method Codes */
113 static const uint16_t RCE_NONSPECIFIC = 0x00;
114 static const uint16_t RCE_FOUR_NEIGHBOR = 0x01;
115 static const uint16_t RCE_EIGHT_NEIGHBOR = 0x02;
116
117 /* Core and Delta type codes. */
118 static const uint16_t CORE_TYPE_NONANGULAR = 0x00;
119 static const uint16_t CORE_TYPE_ANGULAR = 0x01;
120 static const uint16_t DELTA_TYPE_NONANGULAR = 0x00;
121 static const uint16_t DELTA_TYPE_ANGULAR = 0x01;
122
123
124 /*
125 * Feature::Minutiae implementations.
126 */
132
152 const MinutiaPointSet &mps,
153 const RidgeCountItemSet &rcis,
154 const CorePointSet &cps,
155 const DeltaPointSet &dps);
156
162
169 const MinutiaPointSet& mps);
170
178 const RidgeCountItemSet& rcis);
179
187 const CorePointSet& cps);
188
196 const DeltaPointSet& dps);
197
198 private:
199 MinutiaPointSet _minutiaPointSet;
200 RidgeCountItemSet _ridgeCountItemSet;
201 CorePointSet _corePointSet;
202 DeltaPointSet _deltaPointSet;
203
204 };
205
206 }
207}
208
209#endif /* __BE_FEATURE_INCITSMINUTIAE_H__ */
210
A class to represent a set of minutiae in an ANSI/INCITS record.
MinutiaPointSet getMinutiaPoints() const
Obtain the set of finger minutiae data points.
INCITSMinutiae()
Default constructor for an INCITS Minutiae object.
void setCorePointSet(const CorePointSet &cps)
Mutator for the set of core points.
DeltaPointSet getDeltas() const
Obtains the set of delta positions.
void setDeltaPointSet(const DeltaPointSet &dps)
Mutator for the set of delta points.
MinutiaeFormat getFormat() const
Obtain the minutiae format kind.
INCITSMinutiae(const MinutiaPointSet &mps, const RidgeCountItemSet &rcis, const CorePointSet &cps, const DeltaPointSet &dps)
Construct an INCITS Minutiae object from its components.
RidgeCountItemSet getRidgeCountItems() const
Obtain the set of ridge count data items.
CorePointSet getCores() const
Obtains the set of core positions.
void setRidgeCountItems(const RidgeCountItemSet &rcis)
Mutator for the ridge count items.
void setMinutiaPoints(const MinutiaPointSet &mps)
Mutator for the minutiae point set.
A class to represent a set of minutiae data points.
MinutiaeFormat
Enumerate the minutiae format standards.
std::vector< MinutiaPoint > MinutiaPointSet
std::vector< DeltaPoint > DeltaPointSet
std::vector< RidgeCountItem > RidgeCountItemSet
std::vector< CorePoint > CorePointSet
This software was developed at the National Institute of Standards and Technology (NIST) by employees...