14#include <unordered_map>
53 const std::underlying_type_t<Impression> i);
89 const std::underlying_type_t<FrictionRidgeCaptureTechnology> i);
162 const std::underlying_type_t<FrictionRidgeGeneralizedPosition> i);
198 const std::underlying_type_t<ProcessingMethod> i);
240 const std::underlying_type_t<PatternGeneralClassification> i);
270 const std::underlying_type_t<ArchPatternSubclassification> i);
302 const std::underlying_type_t<WhorlPatternSubclassification> i);
349 const std::underlying_type_t<WhorlDeltaRelationship> i);
368 const std::optional<PatternSubclassification> = {},
369 const std::optional<WhorlDeltaRelationship> = {});
416 std::optional<PatternSubclassification>
424 std::optional<WhorlDeltaRelationship>
430 std::optional<PatternSubclassification> sub{};
431 std::optional<WhorlDeltaRelationship> wdr{};
465 const std::underlying_type_t<ValueAssessment> i);
502 const std::underlying_type_t<Substrate> i);
528 const std::underlying_type_t<MinutiaType> i);
567 const uint16_t
theta = {},
607 const std::optional<uint16_t> &
direction = {},
626 std::optional<std::tuple<std::optional<uint16_t>,
627 std::optional<uint16_t>, std::optional<uint16_t>>>
630 std::optional<std::tuple<std::optional<uint8_t>,
631 std::optional<uint8_t>, std::optional<uint8_t>>>
651 const std::optional<std::tuple<std::optional<uint16_t>,
652 std::optional<uint16_t>, std::optional<uint16_t>>>
655 const std::optional<std::tuple<std::optional<uint8_t>,
656 std::optional<uint8_t>, std::optional<uint8_t>>>
740 const std::underlying_type_t<CorrespondenceType> i);
871 const std::underlying_type_t<RidgeQuality> i);
917 const std::underlying_type_t<FingerCrease> i);
958 const std::underlying_type_t<PalmCrease> i);
990 const std::underlying_type_t<LinearDiscontinuity> i);
1027 const std::vector<Segment> &segments);
1076 std::vector<Segment>
1094 const std::vector<Segment> &segments);
1111 std::vector<Segment> segments{};
1165 const double value);
1174 explicit operator bool()
1217 std::optional<std::
string>
1231 const std::
string &message);
1244 std::optional<double> value{};
1255 std::optional<std::string> message{};
1308 std::optional<std::vector<ProcessingMethod>>
lpm{};
1312 std::optional<Substrate>
lsb{};
1314 std::optional<PatternClassification>
pat{};
1336 std::optional<std::vector<Core>>
cores{};
1377 std::optional<std::vector<Coordinate>>
roi{};
1393 std::optional<std::vector<RidgeQualityRegion>>
rqm{};
Friction ridge linear flexion creases.
std::vector< Segment > getSegments() const
void setFrictionRidgeGeneralizedPosition(const FrictionRidgeGeneralizedPosition fgp)
Crease(const FrictionRidgeGeneralizedPosition fgp, const CreaseClassification cld, const std::vector< Segment > &segments)
Crease constructor.
void addSegment(const Segment &segment)
void setCreaseClassification(const CreaseClassification cld)
void setSegments(const std::vector< Segment > &segments)
CreaseClassification getCreaseClassification() const
FrictionRidgeGeneralizedPosition getFrictionRidgeGeneralizedPosition() const
Classification of friction ridge structure.
std::optional< PatternSubclassification > getPatternSubclassification() const
void setPatternGeneralClassification(const PatternGeneralClassification)
void setWhorlDeltaRelationship(const WhorlDeltaRelationship)
PatternClassification(const PatternGeneralClassification, const std::optional< PatternSubclassification >={}, const std::optional< WhorlDeltaRelationship >={})
std::optional< WhorlDeltaRelationship > getWhorlDeltaRelationship() const
void setPatternSubclassification(const PatternSubclassification)
PatternGeneralClassification getPatternGeneralClassification() const
Measurement on the biometric sample.
Status
Status of QualityMeasure value computation.
@ NotComputed
No attempt made to compute value.
@ Success
Value computed successfully.
@ Error
Error occurred during computation of value.
void setMessage(const std::string &message)
bool hasValue() const noexcept
std::optional< std::string > getMessage() const
static const Description NFIQ2v23
Description for NFIQ 2 v2.3.
Types (mostly) mirroring the ANSI/NIST-ITL Type 9 Extended Feature Set.
std::unordered_map< QualityMeasure::Description, QualityMeasure, QualityMeasure::DescriptionHash > QualityMeasureMap
Convenience type for storing QualityMeasure.
ArchPatternSubclassification toArchPatternSubclassification(const std::underlying_type_t< ArchPatternSubclassification > i)
Convert integer to enumerated type.
std::variant< FingerCrease, PalmCrease, LinearDiscontinuity > CreaseClassification
Collection of crease types.
Substrate toSubstrate(const std::underlying_type_t< Substrate > i)
Convert integer to enumerated type.
MinutiaType toMinutiaType(const std::underlying_type_t< MinutiaType > i)
Convert integer to enumerated type.
PatternGeneralClassification
General classification of friction ridge structure.
PatternGeneralClassification toPatternGeneralClassification(const std::underlying_type_t< PatternGeneralClassification > i)
Convert integer to enumerated type.
std::variant< ArchPatternSubclassification, WhorlPatternSubclassification > PatternSubclassification
Subclassification of PatternClassification.
PatternSubclassification SUB
Convenience PatternSubclassification type using ANSI/NIST-ITL mnemonic.
FingerCrease
Permanent flexion creases on fingers.
@ DistalInterphalangeal
Below distal phalanx.
@ ProximalDigital
Between proximal phalanx and palm.
@ ProximalInterphalangeal
Below medial phalanx.
RidgeQuality toRidgeQuality(const std::underlying_type_t< RidgeQuality > i)
Convert integer to enumerated type.
FrictionRidgeGeneralizedPosition
Friction positions codes from ANSI/NIST-ITL 1-2011 (2015).
@ LeftFullPalmAndWritersPalm
@ RightFullPalmAndWritersPalm
LinearDiscontinuity
Linear discontinuities that are not named permanent creases.
WhorlPatternSubclassification
Subclassification when PatternClassification is Whorl.
FrictionRidgeCaptureTechnology
Capture device codes from ANSI/NIST-ITL 1-2011 (2015).
ProcessingMethod
Processing method codes from ANSI/NIST-ITL 1-2011 (2015).
WhorlDeltaRelationship toWhorlDeltaRelationship(const std::underlying_type_t< WhorlDeltaRelationship > i)
Convert integer to enumerated type.
WhorlPatternSubclassification toWhorlPatternSubclassification(const std::underlying_type_t< WhorlPatternSubclassification > i)
Convert integer to enumerated type.
ValueAssessment toValueAssessment(const std::underlying_type_t< ValueAssessment > i)
Convert integer to enumerated type.
FrictionRidgeGeneralizedPosition toFrictionRidgeGeneralizedPosition(const std::underlying_type_t< FrictionRidgeGeneralizedPosition > i)
Convert integer to enumerated type.
PalmCrease toPalmCrease(const std::underlying_type_t< PalmCrease > i)
Convert integer to enumerated type.
Impression
Friction ridge impression types from ANSI/NIST-ITL 1-202X.
@ PlainContactlessStationary
@ RolledContactlessStationary
ArchPatternSubclassification
Subclassification when PatternClassification is Arch.
CorrespondenceType toCorrespondenceType(const std::underlying_type_t< CorrespondenceType > i)
Convert integer to enumerated type.
ValueAssessment
Value assessment codes from ANSI/NIST-ITL 1-2011 (2015).
FingerCrease toFingerCrease(const std::underlying_type_t< FingerCrease > i)
Convert integer to enumerated type.
MinutiaType
Types of minutiae.
LinearDiscontinuity toLinearDiscontinuity(const std::underlying_type_t< LinearDiscontinuity > i)
Convert integer to enumerated type.
CorrespondenceType
Types of correspondence.
@ Definite
Probe feature definitely corresponds.
@ OutOfRegion
Probe feature lies outside the reference.
@ Possible
Probe feature possibly/debatably corresponds.
@ DoesNotExist
Probe feature definitely does not exist.
@ UnclearArea
Probe feature lies in an area experiencing quality issues in the reference.
ProcessingMethod toProcessingMethod(const std::underlying_type_t< ProcessingMethod > i)
Convert integer to enumerated type.
Impression toImpression(const std::underlying_type_t< Impression > i)
Convert integer to enumerated type.
PalmCrease
Permanent flexion creases on palms.
@ ProximalTransverse
Diagonal across palm.
@ Bottom
Colloquial definition for RadialLongitudinal.
@ WristBracelet
Colloquial definition for Wrist.
@ Wrist
Bottom of the palm at the wrist.
@ RadialLongitudinal
Around the base of thenar.
@ Top
Colloquial definition for DistalTransverse.
@ DistalTransverse
Bottom of the interdigital area.
@ Middle
Colloquial definition for ProximalTransverse.
RidgeQuality
Local ridge quality codes from ANSI/NIST-ITL 1-2011 (2015).
@ DebatableMinutiae
Continuity of ridge flow is certain; minutiae are debatable.
@ DebatableRidgeFlow
Continuity of ridge flow is uncertain.
@ DefinitiveRidgeEdges
Ridge edges, minutiae, and ridge flow are obvious and unambiguous; pores are either debatable or not ...
@ DefinitivePores
Pores and ridge edges are obvious and unambiguous.
@ Background
No ridge information.
@ DefinitiveMinutiae
Minutiae and ridge flow are obvious and unambiguous; ridge edges are debatable.
FrictionRidgeCaptureTechnology toFrictionRidgeCaptureTechnology(const std::underlying_type_t< FrictionRidgeCaptureTechnology > i)
Convert integer to enumerated type.
Substrate
Substrate codes from ANSI/NIST-ITL 1-2011 (2015).
WhorlDeltaRelationship
Whorl-Delta relationship.
std::tuple< Coordinate, Coordinate > Segment
Line segment.
Pixel location in an image.
Singular point of focus of innermost recurving ridge.
std::optional< uint16_t > direction
Direction pointing away from the center of the curve, in degrees [0,359] counterclockwise to the righ...
std::optional< uint8_t > directionUncertainty
Uncertainty of direction, in degrees [0, 180].
std::optional< uint16_t > coordinateUncertainty
Uncertainty of coordinate, radius, in pixels.
Coordinate coordinate
Location of the feature.
Core(const Coordinate &coordinate={}, const std::optional< uint16_t > &direction={}, const std::optional< uint16_t > coordinateUncertainty={}, const std::optional< uint8_t > directionUncertainty={})
Core constructor.
Relationship between probe and reference features.
CorrespondenceRelationship(const CorrespondenceType type={}, const std::string &probeIdentifier={}, const FrictionRidgeGeneralizedPosition probeFGP={}, const uint8_t probeInputIdentifier={}, const Minutia &probeMinutia={}, const std::string &referenceIdentifier={}, const FrictionRidgeGeneralizedPosition referenceFGP={}, const uint8_t referenceInputIdentifier={}, const Minutia &referenceMinutia={})
CorrespondenceRelationship constructor.
std::string probeIdentifier
Identifier from the probe template.
std::string referenceIdentifier
Identifier from the reference template.
FrictionRidgeGeneralizedPosition probeFGP
Probe finger position.
FrictionRidgeGeneralizedPosition referenceFGP
Reference finger position.
Minutia referenceMinutia
Location in the reference image of a probe image feature.
CorrespondenceType type
Type of correspondence seen at these points.
Minutia probeMinutia
Location in the probe image of a reference image feature.
uint8_t referenceInputIdentifier
Link to Image::identifier and/or Features::identifier for reference.
uint8_t probeInputIdentifier
Link to Image::identifier and/or Features::identifier for probe.
Singular point of ridge divergence.
std::optional< uint16_t > coordinateUncertainty
Uncertainty of coordinate, radius, in pixels.
Delta(const Coordinate &coordinate={}, const std::optional< std::tuple< std::optional< uint16_t >, std::optional< uint16_t >, std::optional< uint16_t > > > &direction={}, std::optional< uint16_t > coordinateUncertainty={}, const std::optional< std::tuple< std::optional< uint8_t >, std::optional< uint8_t >, std::optional< uint8_t > > > &directionUncertainty={})
Delta constructor.
Coordinate coordinate
Location of the feature.
std::optional< std::tuple< std::optional< uint8_t >, std::optional< uint8_t >, std::optional< uint8_t > > > directionUncertainty
Uncertainty of direction, in degrees [0, 180].
std::optional< std::tuple< std::optional< uint16_t >, std::optional< uint16_t >, std::optional< uint16_t > > > direction
Ridge directions of the feature (typically up, left, and right), in degrees [0,359] counterclockwise ...
Collection of ANSI/NIST-ITL 1-2011 (Update: 2015) Extended Feature Set fields understood by FRIF.
std::optional< Substrate > lsb
Substrate from which the print was developed.
std::optional< std::vector< Coordinate > > roi
Closed convex polygon forming region of interest.
std::optional< std::vector< ProcessingMethod > > lpm
Methods used process the print.
std::optional< std::vector< RidgeQualityRegion > > rqm
Assessment of ridge quality within local areas of an image.
std::optional< bool > plr
Image is known to be or may possibly be laterally reversed.
std::optional< Orientation > orientation
Deviation of the friction ridge from an upright position/.
std::optional< std::vector< Delta > > deltas
Delta locations.
std::optional< ValueAssessment > valueAssessment
Examiner/algorithmic value assessment for identification.
std::optional< bool > complex
Whether or not feature extraction was complex.
std::optional< std::vector< Minutia > > minutiae
Locations of minutiae.
Impression imp
Impression type of the depicted region.
std::optional< std::vector< Core > > cores
Core locations.
uint16_t ppi
Resolution of the image used to derive these features in pixels per inch.
FrictionRidgeGeneralizedPosition frgp
Description of the depicted region.
std::optional< PatternClassification > pat
Observed pattern classification.
std::optional< QualityMeasureMap > quality
Quality measures of the biometric sample.
std::optional< bool > trv
Part or all of image is known to be or may possibly be tonally reversed.
std::optional< std::vector< Crease > > creases
Creases and other linear discontinuities.
uint8_t identifier
An identifier for this set of data.
FrictionRidgeCaptureTechnology frct
Capture technology that created this image.
Friction ridge feature details.
std::optional< uint8_t > thetaUncertainty
Uncertainty of theta, in degrees [0, 180].
uint16_t theta
Ridge direction of the feature, in degrees [0,359], following conventions from ANSI/NIST-ITL 1-2011 (...
MinutiaType type
Type of feature.
std::optional< uint16_t > coordinateUncertainty
Uncertainty of coordinate, radius, in pixels.
Coordinate coordinate
Location of the feature.
Minutia(const Coordinate &coordinate={}, const uint16_t theta={}, const MinutiaType type=MinutiaType::Unknown, const std::optional< uint16_t > coordinateUncertainty={}, const std::optional< uint8_t > thetaUncertainty={})
Minutia constructor.
Deviation of an image from upright.
std::optional< uint8_t > uncertainty
Uncertainty of direction in degrees [0,180].
Orientation(const int16_t direction=0, const std::optional< uint8_t > &uncertainty=15)
Orientation constructor.
int16_t direction
Degrees needed to rotate image upright.
Hash function for Description.
std::size_t operator()(const Description &d) const
Description of algorithm that computed a QualityMeasure.
std::optional< ProductIdentifier > identifier
Registered algorithm identifier (QAV, QAP)
std::optional< std::string > comment
Other information (QCM)
std::optional< std::string > modelSHA256
Model SHA-256 checksum (QCK)
bool operator==(const Description &) const
std::optional< std::string > version
Algorithm product version (QPV)
auto operator<=>(const Description &) const
Region defined in a map of ridge quality/confidence.
std::vector< Coordinate > region
Closed convex polygon whose contents is quality.
RidgeQuality quality
Clarity of ridge features enclosed within region.