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<EFS::QualityMeasure>
689 const Component component)
690 const;
691
692 std::optional<std::unordered_map<Component,
695 const;
696
697 bool
699 const Component component)
700 const;
701
702 private:
704 std::optional<std::unordered_map<Component,
705 EFS::QualityMeasure>> components{};
706 std::optional<std::vector<Coordinate>> roi{};
707 std::optional<std::vector<EFS::RidgeQualityRegion>> rqm{};
708 };
709
712 {
713 public:
719 {
721 bool regionOfInterest{false};
722
724 bool ridgeQualityMap{false};
725
727 bool qualityComponents{false};
728
733 bool palmLatent{false};
738 bool palmExemplar{false};
739
744 bool distalLatent{false};
749 bool distalExemplar{false};
750
756 bool nonDistalLatent{false};
762 bool nonDistalExemplar{false};
763
769 bool unknownLatent{false};
770 };
771
801 virtual
804 const Sample &sample)
805 const = 0;
806
835 virtual
838 const Sample &sample)
839 const = 0;
840
841 /**************************************************************/
842
868 static
869 std::shared_ptr<Interface>
871 const std::filesystem::path &configurationDirectory);
872
889 static
890 std::optional<EFS::QualityMeasure::Description>
892
908 static
911
914 Interface(const Interface&) = delete;
916 Interface& operator=(const Interface&) = delete;
918
920 virtual ~Interface();
921 };
922
923 /*
924 * API versioning.
925 *
926 * NIST code will extern the version number symbols. Participant code
927 * shall compile them into their core library.
928 */
929 #ifdef NIST_EXTERN_FRIFTE_QUALITY_API_VERSION
931 extern uint16_t API_MAJOR_VERSION;
933 extern uint16_t API_MINOR_VERSION;
935 extern uint16_t API_PATCH_VERSION;
936 #else /* NIST_EXTERN_FRIFTE_QUALITY_API_VERSION */
938 inline uint16_t API_MAJOR_VERSION{0};
940 inline uint16_t API_MINOR_VERSION{0};
942 inline uint16_t API_PATCH_VERSION{1};
943 #endif /* NIST_EXTERN_FRIFTE_QUALITY_API_VERSION */
944}
945
946#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.
bool hasComponent(const Component component) const
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
std::optional< EFS::QualityMeasure > getComponent(const Component component) 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:940
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:938
uint16_t API_PATCH_VERSION
API patch version number.
Definition quality.h:942
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:719
bool nonDistalLatent
Will implementation process latent impressions from non-distal and non-palm regions (e....
Definition quality.h:756
bool nonDistalExemplar
Will implementation process exemplar impressions from non-distal and non-palm regions (e....
Definition quality.h:762
bool unknownLatent
Will implementation process latent impressions where the source region (e.g., finger,...
Definition quality.h:769
bool palmExemplar
Will implementation process exemplar impressions from palm regions?
Definition quality.h:738
bool regionOfInterest
Will implementation compute a region of interest?
Definition quality.h:721
bool distalExemplar
Will implementation process exemplar impressions from distal phalanx regions?
Definition quality.h:749
bool palmLatent
Will implementation process latent impressions from palm regions?
Definition quality.h:733
bool ridgeQualityMap
Will implementation compute a ridge quality map?
Definition quality.h:724
bool distalLatent
Will implementation process latent impressions from distal phalanx regions?
Definition quality.h:744
bool qualityComponents
Will implementation compute any Component?
Definition quality.h:727