Friction Ridge Image and Features Technology Evaluations
API for participating in NIST's Friction Ridge Image and Features Technology Evaluations.
Loading...
Searching...
No Matches
quality.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
46
47#ifndef FRIFTE_QUALITY_H_
48#define FRIFTE_QUALITY_H_
49
50#include <frifte/common.h>
51#include <frifte/efs.h>
52#include <frifte/evaluations.h>
53#include <frifte/io.h>
54
57{
61
586
589 {
590 public:
600 void
602 const EFS::QualityMeasure &uqs);
603
612 void
614 const int uqs);
615
618 const;
619
633 void
634 setROI(
635 const std::vector<Coordinate> &roi);
636
637 std::optional<std::vector<Coordinate>>
638 getROI()
639 const;
640
650 void
652 const std::vector<EFS::RidgeQualityRegion> &rqm);
653
654 std::optional<std::vector<EFS::RidgeQualityRegion>>
656 const;
657
671 void
673 const Component component,
674 const EFS::QualityMeasure &value);
675
683 void
685 const Component component);
686
687 std::optional<std::unordered_map<Component,
690 const;
691
692 private:
694 std::optional<std::unordered_map<Component,
695 EFS::QualityMeasure>> components{};
696 std::optional<std::vector<Coordinate>> roi{};
697 std::optional<std::vector<EFS::RidgeQualityRegion>> rqm{};
698 };
699
702 {
703 public:
709 {
711 bool regionOfInterest{false};
712
714 bool ridgeQualityMap{false};
715
717 bool qualityComponents{false};
718
723 bool palmLatent{false};
728 bool palmExemplar{false};
729
734 bool distalLatent{false};
739 bool distalExemplar{false};
740
746 bool nonDistalLatent{false};
752 bool nonDistalExemplar{false};
753
759 bool unknownLatent{false};
760 };
761
791 virtual
794 const Sample &sample)
795 const = 0;
796
825 virtual
828 const Sample &sample)
829 const = 0;
830
831 /**************************************************************/
832
858 static
859 std::shared_ptr<Interface>
861 const std::filesystem::path &configurationDirectory);
862
879 static
880 std::optional<EFS::QualityMeasure::Description>
882
898 static
901
904 Interface(const Interface&) = delete;
906 Interface& operator=(const Interface&) = delete;
908
910 virtual ~Interface();
911 };
912
913 /*
914 * API versioning.
915 *
916 * NIST code will extern the version number symbols. Participant code
917 * shall compile them into their core library.
918 */
919 #ifdef NIST_EXTERN_FRIFTE_QUALITY_API_VERSION
921 extern uint16_t API_MAJOR_VERSION;
923 extern uint16_t API_MINOR_VERSION;
925 extern uint16_t API_PATCH_VERSION;
926 #else /* NIST_EXTERN_FRIFTE_QUALITY_API_VERSION */
928 inline uint16_t API_MAJOR_VERSION{0};
930 inline uint16_t API_MINOR_VERSION{0};
932 inline uint16_t API_PATCH_VERSION{1};
933 #endif /* NIST_EXTERN_FRIFTE_QUALITY_API_VERSION */
934}
935
936#endif /* FRIFTE_QUALITY_H_ */
Measurement on the biometric sample.
Definition efs.h:1120
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.
Definition quality.h:589
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.
Definition quality.h:57
uint16_t API_MINOR_VERSION
API minor version number.
Definition quality.h:930
Component
Quality components.
Definition quality.h:73
@ EvidenceOfFraud
Evidence that impression has been placed by artificial means.
Definition quality.h:267
@ SpottyRidges
Ridges are spotty, regardless of reason.
Definition quality.h:563
@ RidgeValleyUniformity
Consistency between ridge and valley widths.
Definition quality.h:537
@ SpatialSamplingRatePPI
Estimate of pixels per inch resolution of image.
Definition quality.h:550
@ IsolatedRidgeClusters
Significant portion of mark is not connected to other portions.
Definition quality.h:338
@ NumHighConfidenceMinutiae
Number of highly-certain minutiae (i.e., minutiae in high clarity areas).
Definition quality.h:418
@ AnatomicalCluesPresent
Presence of a feature that indicates the anatomical source.
Definition quality.h:100
@ ComplexSubstrate
The substrate (e.g., pattern, texture) makes the impression difficult to interpret.
Definition quality.h:155
@ OpenField
Large area without minutiae.
Definition quality.h:437
@ MultipleOverlappingImpressions
Multiple impressions in ROI that overlap.
Definition quality.h:406
@ DistinctiveClusterPresent
Presence of areas with unique clusters of minutiae.
Definition quality.h:235
@ ExtremeTip
Extreme tips or other regions not typically imaged in an exemplar impression.
Definition quality.h:298
@ EvenPressure
Friction ridges are deposited with an even pressure.
Definition quality.h:253
@ Amputated
Evidence of finger amputation.
Definition quality.h:88
@ Movement
Twists, pulls, slips, and other movement is present.
Definition quality.h:375
@ WetRidges
Ridges that are wet or deposited in a liquid matrix, including blood.
Definition quality.h:584
@ PatternClassification
Pattern classification can be determined.
Definition quality.h:474
@ PatternForceMinutiae
Impression contains mostly pattern force region.
Definition quality.h:490
@ CompressedRidges
Ridges appear wider than normal and potentially overlap, limiting the area of the valleys between.
Definition quality.h:170
@ Level3Present
Pores, incipient ridges, and/or edge shapes are clear.
Definition quality.h:351
@ RidgeColorUncertain
Inability to determine the ridge color in a large portion of the image.
Definition quality.h:504
@ MinutiaePresent
Ridge endings and bifurcations are present or implied.
Definition quality.h:364
@ RidgeFlowContinuity
Orientation differences between a region and its neighbors.
Definition quality.h:515
@ ClearCoreDeltaRidgeCount
Confidence that the computed core-delta ridge count is within two ridges of the true value.
Definition quality.h:130
@ ExcessiveDistortion
Evidence of excessive distortion.
Definition quality.h:284
@ OrientationClue
Information present to help orient the impression.
Definition quality.h:463
@ NumMinutiae
Total number of minutiae discovered.
Definition quality.h:428
@ OrientationCertaintyLevel
Consistency of orientations of ridges within subregions.
Definition quality.h:448
@ DeltaPresent
One or more deltas are present or implied.
Definition quality.h:208
@ FocalPointsPresent
Distinctive features other than cores or deltas are present.
Definition quality.h:312
@ RidgeValleyClarity
Percentage of usable area with good ridge-valley contrast.
Definition quality.h:526
@ Bandaged
Evidence of full or partial bandage.
Definition quality.h:111
@ TonalReversal
Valleys appear darker than ridges.
Definition quality.h:574
@ Condensation
Presence of condensation.
Definition quality.h:183
@ CorePresent
One or more cores are present or implied.
Definition quality.h:197
@ ComplexMatrix
The matrix makes the impression difficult to interpret.
Definition quality.h:141
@ MultipleNonOverlappingImpressions
Multiple impressions in ROI that do not overlap.
Definition quality.h:390
@ Ghosting
Evidence of non-primary impression in image.
Definition quality.h:326
@ DevelopmentArtifacts
Artifacts introduced in development of the impression have caused damage.
Definition quality.h:224
LibraryIdentifier getLibraryIdentifier()
uint16_t API_MAJOR_VERSION
API major version number.
Definition quality.h:928
uint16_t API_PATCH_VERSION
API patch version number.
Definition quality.h:932
std::tuple< std::optional< Image >, std::optional< EFS::Features > > Sample
Convenience definition for a friction ridge sample.
Definition io.h:352
Identification information about the submitted library.
Definition evaluations.h:27
Information used by the NIST testing apparatus to help efficiently test this implementation.
Definition quality.h:709
bool nonDistalLatent
Will implementation process latent impressions from non-distal and non-palm regions (e....
Definition quality.h:746
bool nonDistalExemplar
Will implementation process exemplar impressions from non-distal and non-palm regions (e....
Definition quality.h:752
bool unknownLatent
Will implementation process latent impressions where the source region (e.g., finger,...
Definition quality.h:759
bool palmExemplar
Will implementation process exemplar impressions from palm regions?
Definition quality.h:728
bool regionOfInterest
Will implementation compute a region of interest?
Definition quality.h:711
bool distalExemplar
Will implementation process exemplar impressions from distal phalanx regions?
Definition quality.h:739
bool palmLatent
Will implementation process latent impressions from palm regions?
Definition quality.h:723
bool ridgeQualityMap
Will implementation compute a ridge quality map?
Definition quality.h:714
bool distalLatent
Will implementation process latent impressions from distal phalanx regions?
Definition quality.h:734
bool qualityComponents
Will implementation compute any Component?
Definition quality.h:717