47#ifndef FRIFTE_QUALITY_H_
48#define FRIFTE_QUALITY_H_
635 const std::vector<Coordinate> &roi);
637 std::optional<std::vector<Coordinate>>
652 const std::vector<EFS::RidgeQualityRegion> &rqm);
654 std::optional<std::vector<EFS::RidgeQualityRegion>>
687 std::optional<std::unordered_map<
Component,
694 std::optional<std::unordered_map<
Component,
696 std::optional<std::vector<Coordinate>> roi{};
697 std::optional<std::vector<EFS::RidgeQualityRegion>> rqm{};
859 std::shared_ptr<Interface>
861 const std::filesystem::path &configurationDirectory);
880 std::optional<EFS::QualityMeasure::Description>
919 #ifdef NIST_EXTERN_FRIFTE_QUALITY_API_VERSION
Measurement on the biometric sample.
static std::shared_ptr< Interface > getImplementation(const std::filesystem::path &configurationDirectory)
Obtain a managed pointer to an object implementing Interface.
virtual VerboseQuality computeVerboseQuality(const Sample &sample) const =0
Compute detailed quality information about a sample.
static Compatibility getCompatibility()
Obtain information about API feature and version compatibility of this implementation.
virtual EFS::QualityMeasure computeUnifiedQualityScore(const Sample &sample) const =0
Compute an ISO/IEC 29794-1:2024 unified quality score.
static std::optional< EFS::QualityMeasure::Description > getProductIdentifier()
Obtain identification and version information.
Detailed quality information for a sample.
void setROI(const std::vector< Coordinate > &roi)
Define a region of interest of a sample.
void setUnifiedQualityScore(const EFS::QualityMeasure &uqs)
Set the unified quality score or communicate an error about its computation.
std::optional< std::unordered_map< Component, EFS::QualityMeasure > > getComponents() const
std::optional< std::vector< Coordinate > > getROI() const
std::optional< std::vector< EFS::RidgeQualityRegion > > getRidgeQualityMap() const
void removeComponent(const Component component)
Remove a quality component.
EFS::QualityMeasure getUnifiedQualityScore() const
void addComponent(const Component component, const EFS::QualityMeasure &value)
Append a quality component with associated measurement.
void setRidgeQualityMap(const std::vector< EFS::RidgeQualityRegion > &rqm)
Define a series of ridge quality regions.
FRIF TE Quality functionality.
uint16_t API_MINOR_VERSION
API minor version number.
Component
Quality components.
@ EvidenceOfFraud
Evidence that impression has been placed by artificial means.
@ SpottyRidges
Ridges are spotty, regardless of reason.
@ RidgeValleyUniformity
Consistency between ridge and valley widths.
@ SpatialSamplingRatePPI
Estimate of pixels per inch resolution of image.
@ IsolatedRidgeClusters
Significant portion of mark is not connected to other portions.
@ NumHighConfidenceMinutiae
Number of highly-certain minutiae (i.e., minutiae in high clarity areas).
@ AnatomicalCluesPresent
Presence of a feature that indicates the anatomical source.
@ ComplexSubstrate
The substrate (e.g., pattern, texture) makes the impression difficult to interpret.
@ OpenField
Large area without minutiae.
@ MultipleOverlappingImpressions
Multiple impressions in ROI that overlap.
@ DistinctiveClusterPresent
Presence of areas with unique clusters of minutiae.
@ ExtremeTip
Extreme tips or other regions not typically imaged in an exemplar impression.
@ EvenPressure
Friction ridges are deposited with an even pressure.
@ Amputated
Evidence of finger amputation.
@ Movement
Twists, pulls, slips, and other movement is present.
@ WetRidges
Ridges that are wet or deposited in a liquid matrix, including blood.
@ PatternClassification
Pattern classification can be determined.
@ PatternForceMinutiae
Impression contains mostly pattern force region.
@ CompressedRidges
Ridges appear wider than normal and potentially overlap, limiting the area of the valleys between.
@ Level3Present
Pores, incipient ridges, and/or edge shapes are clear.
@ RidgeColorUncertain
Inability to determine the ridge color in a large portion of the image.
@ MinutiaePresent
Ridge endings and bifurcations are present or implied.
@ RidgeFlowContinuity
Orientation differences between a region and its neighbors.
@ ClearCoreDeltaRidgeCount
Confidence that the computed core-delta ridge count is within two ridges of the true value.
@ ExcessiveDistortion
Evidence of excessive distortion.
@ OrientationClue
Information present to help orient the impression.
@ NumMinutiae
Total number of minutiae discovered.
@ OrientationCertaintyLevel
Consistency of orientations of ridges within subregions.
@ DeltaPresent
One or more deltas are present or implied.
@ FocalPointsPresent
Distinctive features other than cores or deltas are present.
@ RidgeValleyClarity
Percentage of usable area with good ridge-valley contrast.
@ Bandaged
Evidence of full or partial bandage.
@ TonalReversal
Valleys appear darker than ridges.
@ Condensation
Presence of condensation.
@ CorePresent
One or more cores are present or implied.
@ ComplexMatrix
The matrix makes the impression difficult to interpret.
@ MultipleNonOverlappingImpressions
Multiple impressions in ROI that do not overlap.
@ Ghosting
Evidence of non-primary impression in image.
@ DevelopmentArtifacts
Artifacts introduced in development of the impression have caused damage.
LibraryIdentifier getLibraryIdentifier()
uint16_t API_MAJOR_VERSION
API major version number.
uint16_t API_PATCH_VERSION
API patch version number.
std::tuple< std::optional< Image >, std::optional< EFS::Features > > Sample
Convenience definition for a friction ridge sample.
Identification information about the submitted library.
Information used by the NIST testing apparatus to help efficiently test this implementation.
bool nonDistalLatent
Will implementation process latent impressions from non-distal and non-palm regions (e....
bool nonDistalExemplar
Will implementation process exemplar impressions from non-distal and non-palm regions (e....
bool unknownLatent
Will implementation process latent impressions where the source region (e.g., finger,...
bool palmExemplar
Will implementation process exemplar impressions from palm regions?
bool regionOfInterest
Will implementation compute a region of interest?
bool distalExemplar
Will implementation process exemplar impressions from distal phalanx regions?
bool palmLatent
Will implementation process latent impressions from palm regions?
bool ridgeQualityMap
Will implementation compute a ridge quality map?
bool distalLatent
Will implementation process latent impressions from distal phalanx regions?
bool qualityComponents
Will implementation compute any Component?