34 if (
static_cast<double>(
static_cast<int>(uqs_.
getValue())) !=
36 throw std::out_of_range{std::to_string(*uqs_) +
" "
37 "shall be a whole number [0,100]"};
40 if ((*uqs_ < 0) || (*uqs_ > 100))
41 throw std::out_of_range{std::to_string(*uqs_) +
" "
42 "shall be a whole number [0,100]"};
56 const std::vector<Coordinate> &roi_)
61std::optional<std::vector<FRIF::Coordinate>>
70 const std::vector<FRIF::EFS::RidgeQualityRegion> &rqm_)
75std::optional<std::vector<FRIF::EFS::RidgeQualityRegion>>
87 if (!this->components)
88 this->components.emplace();
163 if ((*value < 0) || (*value > 100) ||
164 (
static_cast<double>(
165 static_cast<int>(*value)) != *value))
166 throw std::out_of_range{std::to_string(*value) +
167 " shall be an integer on the range "
174 if ((*value < 0) || (
static_cast<double>(
175 static_cast<int>(*value)) != *value))
176 throw std::out_of_range{std::to_string(*value) +
177 " shall be 0 or a positive integer"};
181 if ((*value <= 0) || (
static_cast<double>(
182 static_cast<int>(*value)) != *value))
183 throw std::out_of_range{std::to_string(*value) +
184 " shall be a positive integer"};
190 this->components->insert_or_assign(component, value);
197 if (!this->components)
200 this->components->erase(component);
203std::optional<std::unordered_map<
208 return (this->components);
Measurement on the biometric sample.
bool hasValue() const noexcept
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.
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.