Friction Ridge Image and Features Technology Evaluations
API for participating in NIST's Friction Ridge Image and Features Technology Evaluations.
Loading...
Searching...
No Matches
efs.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
11#ifndef FRIF_EFS_H_
12#define FRIF_EFS_H_
13
14#include <unordered_map>
15#include <variant>
16
17#include <frifte/common.h>
18
20namespace FRIF::EFS
21{
35
36 using IMP = Impression;
37
53 const std::underlying_type_t<Impression> i);
54
68
73
89 const std::underlying_type_t<FrictionRidgeCaptureTechnology> i);
90
145
150
166 const std::underlying_type_t<FrictionRidgeGeneralizedPosition> i);
167
181
186
202 const std::underlying_type_t<ProcessingMethod> i);
203
223
228
244 const std::underlying_type_t<PatternGeneralClassification> i);
245
258
274 const std::underlying_type_t<ArchPatternSubclassification> i);
275
290
306 const std::underlying_type_t<WhorlPatternSubclassification> i);
307
315 using PatternSubclassification = std::variant<
317
323
337
353 const std::underlying_type_t<WhorlDeltaRelationship> i);
354
360
363 {
364 public:
372 const std::optional<PatternSubclassification> = {},
373 const std::optional<WhorlDeltaRelationship> = {});
374
380 void
383
394 void
397
404 void
407
414 const;
415
420 std::optional<PatternSubclassification>
422 const;
423
428 std::optional<WhorlDeltaRelationship>
430 const;
431
432 private:
434 std::optional<PatternSubclassification> sub{};
435 std::optional<WhorlDeltaRelationship> wdr{};
436 };
437
448
453
469 const std::underlying_type_t<ValueAssessment> i);
470
490
506 const std::underlying_type_t<Substrate> i);
507
516
532 const std::underlying_type_t<MinutiaType> i);
533
535 struct Minutia
536 {
540 std::optional<uint16_t> coordinateUncertainty{};
541
546 uint16_t theta{};
548 std::optional<uint8_t> thetaUncertainty{};
549
552
569 Minutia(
570 const Coordinate &coordinate = {},
571 const uint16_t theta = {},
573 const std::optional<uint16_t> coordinateUncertainty = {},
574 const std::optional<uint8_t> thetaUncertainty = {});
575 };
576
578 struct Core
579 {
583 std::optional<uint16_t> coordinateUncertainty{};
584
590 std::optional<uint16_t> direction{};
592 std::optional<uint8_t> directionUncertainty{};
593
609 Core(
610 const Coordinate &coordinate = {},
611 const std::optional<uint16_t> &direction = {},
612 const std::optional<uint16_t> coordinateUncertainty = {},
613 const std::optional<uint8_t> directionUncertainty = {});
614 };
615
617 struct Delta
618 {
622 std::optional<uint16_t> coordinateUncertainty{};
623
630 std::optional<std::tuple<std::optional<uint16_t>,
631 std::optional<uint16_t>, std::optional<uint16_t>>>
634 std::optional<std::tuple<std::optional<uint8_t>,
635 std::optional<uint8_t>, std::optional<uint8_t>>>
637
653 Delta(
654 const Coordinate &coordinate = {},
655 const std::optional<std::tuple<std::optional<uint16_t>,
656 std::optional<uint16_t>, std::optional<uint16_t>>>
657 &direction = {},
658 std::optional<uint16_t> coordinateUncertainty = {},
659 const std::optional<std::tuple<std::optional<uint8_t>,
660 std::optional<uint8_t>, std::optional<uint8_t>>>
662 };
663
666 {
668 int16_t direction{0};
676 std::optional<uint8_t> uncertainty{15};
677
687 const int16_t direction = 0,
688 const std::optional<uint8_t> &uncertainty = 15);
689 };
690
728
744 const std::underlying_type_t<CorrespondenceType> i);
745
748 {
751
760 std::string probeIdentifier{};
770
779 std::string referenceIdentifier{};
787 /**
788 * Location in the reference image of a probe image feature.
789 * @note
790 * This Minutia may be omitted if the #type indicates it.
791 */
793
795
823 const CorrespondenceType type = {},
824 const std::string &probeIdentifier = {},
826 const uint8_t probeInputIdentifier = {},
827 const Minutia &probeMinutia = {},
828 const std::string &referenceIdentifier = {},
830 const uint8_t referenceInputIdentifier = {},
831 const Minutia &referenceMinutia = {});
832 };
833
859
875 const std::underlying_type_t<RidgeQuality> i);
876
879 {
890 std::vector<Coordinate> region{};
893 };
894
905
921 const std::underlying_type_t<FingerCrease> i);
922
946
962 const std::underlying_type_t<PalmCrease> i);
963
966 {
971 /*
972 * XXX: Considered a distinctive area in ANSI/NIST-ITL 1-2011
973 * Update:2015, requiring a polygon, not a segment.
974 */
975// PermanentScar,
977 };
978
994 const std::underlying_type_t<LinearDiscontinuity> i);
995
1005
1008 {
1009 public:
1028 Crease(
1030 const CreaseClassification cld,
1031 const std::vector<Segment> &segments);
1032
1039 const;
1040
1045 void
1048
1055 const;
1056
1065 void
1067 const CreaseClassification cld);
1068
1080 std::vector<Segment>
1081 getSegments()
1082 const;
1083
1088 void
1089 addSegment(
1090 const Segment &segment);
1091
1096 void
1098 const std::vector<Segment> &segments);
1099
1100 private:
1115 std::vector<Segment> segments{};
1116 };
1117
1120 {
1121 public:
1123 enum class Status : uint8_t
1124 {
1127
1131 Error = 255
1132 };
1133
1136 {
1138 std::optional<ProductIdentifier> identifier{};
1140 std::optional<std::string> version{};
1142 std::optional<std::string> comment{};
1144 std::optional<std::string> modelSHA256{};
1145
1146 std::strong_ordering
1148 const Description&)
1149 const;
1150 bool operator==(const Description&) const;
1151 };
1152
1154 static const Description NFIQ2v23;
1155
1158 {
1159 std::size_t
1160 operator()(
1161 const Description &d)
1162 const;
1163 };
1164
1166
1172 const double value);
1173
1183 const std::string &errorMessage);
1184
1192 explicit operator bool()
1193 const
1194 noexcept;
1195
1201 bool
1202 hasValue()
1203 const
1204 noexcept;
1205
1217 double
1218 operator*()
1219 const;
1220
1227 double
1228 getValue()
1229 const;
1230
1231 Status
1232 getStatus()
1233 const;
1234
1243 void
1244 setError(
1245 const std::string &errorMessage);
1246
1247 std::optional<std::string>
1248 getMessage()
1249 const;
1250
1258 void
1259 setMessage(
1260 const std::string &message);
1261
1262 private:
1265
1273 std::optional<double> value{};
1274
1284 std::optional<std::string> message{};
1285 };
1286
1288 using QualityMeasureMap = std::unordered_map<
1291
1301 {
1306 uint8_t identifier{};
1307
1312 uint16_t ppi{};
1313
1323 std::optional<QualityMeasureMap> quality{};
1324
1330
1333
1335 std::optional<Orientation> orientation{};
1337 std::optional<std::vector<ProcessingMethod>> lpm{};
1339 std::optional<ValueAssessment> valueAssessment{};
1341 std::optional<Substrate> lsb{};
1343 std::optional<PatternClassification> pat{};
1344
1348 std::optional<bool> plr{};
1353 std::optional<bool> trv{};
1354
1365 std::optional<std::vector<Core>> cores{};
1376 std::optional<std::vector<Delta>> deltas{};
1392 std::optional<std::vector<Minutia>> minutiae{};
1394 std::optional<std::vector<Crease>> creases{};
1406 std::optional<std::vector<Coordinate>> roi{};
1407
1422 std::optional<std::vector<RidgeQualityRegion>> rqm{};
1423
1433 std::optional<bool> complex{};
1434 };
1435}
1436
1437#endif /* FRIF_EFS_H_ */
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
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.
Definition efs.h:1120
Status
Status of QualityMeasure value computation.
Definition efs.h:1124
@ NotComputed
No attempt made to compute value.
Definition efs.h:1129
@ Success
Value computed successfully.
Definition efs.h:1126
@ Error
Error occurred during computation of value.
Definition efs.h:1131
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.
Definition efs.h:788
void setError(const std::string &errorMessage)
Communiate error in computation.
Types (mostly) mirroring the ANSI/NIST-ITL Type 9 Extended Feature Set.
Definition efs.h:21
FrictionRidgeGeneralizedPosition FGP
Convenience FrictionRidgeGeneralizedPosition type using ANSI/NIST-ITL mnemonic.
Definition efs.h:149
ArchPatternSubclassification toArchPatternSubclassification(const std::underlying_type_t< ArchPatternSubclassification > i)
Convert integer to enumerated type.
std::variant< ArchPatternSubclassification, WhorlPatternSubclassification > PatternSubclassification
Subclassification of PatternClassification.
Definition efs.h:315
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.
Definition efs.h:212
Impression IMP
Convenience Impression type using ANSI/NIST-ITL mnemonic.
Definition efs.h:36
WhorlDeltaRelationship WDR
Convenience WhorlDeltaRelationship type using ANSI/NIST-ITL mnemonic.
Definition efs.h:359
PatternGeneralClassification GCF
Convenience PatternGeneralClassification type using ANSI/NIST-ITL mnemonic.
Definition efs.h:227
PatternGeneralClassification toPatternGeneralClassification(const std::underlying_type_t< PatternGeneralClassification > i)
Convert integer to enumerated type.
PatternSubclassification SUB
Convenience PatternSubclassification type using ANSI/NIST-ITL mnemonic.
Definition efs.h:322
CorrespondenceType TOC
Definition efs.h:727
FingerCrease
Permanent flexion creases on fingers.
Definition efs.h:897
@ DistalInterphalangeal
Below distal phalanx.
Definition efs.h:899
@ ProximalDigital
Between proximal phalanx and palm.
Definition efs.h:903
@ ProximalInterphalangeal
Below medial phalanx.
Definition efs.h:901
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).
Definition efs.h:93
LinearDiscontinuity
Linear discontinuities that are not named permanent creases.
Definition efs.h:966
WhorlPatternSubclassification
Subclassification when PatternClassification is Whorl.
Definition efs.h:284
FrictionRidgeCaptureTechnology
Capture device codes from ANSI/NIST-ITL 1-2011 (2015).
Definition efs.h:57
ValueAssessment EAA
Convenience ExaminerValueAssessment type using ANSI/NIST-ITL mnemonic.
Definition efs.h:452
ProcessingMethod
Processing method codes from ANSI/NIST-ITL 1-2011 (2015).
Definition efs.h:170
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.
std::unordered_map< QualityMeasure::Description, QualityMeasure, QualityMeasure::DescriptionHash > QualityMeasureMap
Convenience type for storing QualityMeasure.
Definition efs.h:1288
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.
Definition efs.h:24
@ PlainContactlessStationary
Definition efs.h:29
@ RolledContactlessStationary
Definition efs.h:30
ProcessingMethod LPM
Convenience LatentProcessingMethod type using ANSI/NIST-ITL mnemonic.
Definition efs.h:185
ArchPatternSubclassification
Subclassification when PatternClassification is Arch.
Definition efs.h:254
CorrespondenceType toCorrespondenceType(const std::underlying_type_t< CorrespondenceType > i)
Convert integer to enumerated type.
FrictionRidgeCaptureTechnology FCT
Convenience FrictionRidgeCaptureTechnology type using ANSI/NIST-ITL mnemonic.
Definition efs.h:72
ValueAssessment
Value assessment codes from ANSI/NIST-ITL 1-2011 (2015).
Definition efs.h:442
FingerCrease toFingerCrease(const std::underlying_type_t< FingerCrease > i)
Convert integer to enumerated type.
MinutiaType
Types of minutiae.
Definition efs.h:510
LinearDiscontinuity toLinearDiscontinuity(const std::underlying_type_t< LinearDiscontinuity > i)
Convert integer to enumerated type.
CorrespondenceType
Types of correspondence.
Definition efs.h:699
@ Definite
Probe feature definitely corresponds.
Definition efs.h:701
@ OutOfRegion
Probe feature lies outside the reference.
Definition efs.h:717
@ Possible
Probe feature possibly/debatably corresponds.
Definition efs.h:703
@ DoesNotExist
Probe feature definitely does not exist.
Definition efs.h:710
@ UnclearArea
Probe feature lies in an area experiencing quality issues in the reference.
Definition efs.h:725
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.
Definition efs.h:925
@ ProximalTransverse
Diagonal across palm.
Definition efs.h:932
@ Bottom
Colloquial definition for RadialLongitudinal.
Definition efs.h:939
@ WristBracelet
Colloquial definition for Wrist.
Definition efs.h:944
@ Wrist
Bottom of the palm at the wrist.
Definition efs.h:942
@ RadialLongitudinal
Around the base of thenar.
Definition efs.h:937
@ Top
Colloquial definition for DistalTransverse.
Definition efs.h:929
@ DistalTransverse
Bottom of the interdigital area.
Definition efs.h:927
@ Middle
Colloquial definition for ProximalTransverse.
Definition efs.h:934
RidgeQuality
Local ridge quality codes from ANSI/NIST-ITL 1-2011 (2015).
Definition efs.h:836
@ DebatableMinutiae
Continuity of ridge flow is certain; minutiae are debatable.
Definition efs.h:845
@ DebatableRidgeFlow
Continuity of ridge flow is uncertain.
Definition efs.h:840
@ DefinitiveRidgeEdges
Ridge edges, minutiae, and ridge flow are obvious and unambiguous; pores are either debatable or not ...
Definition efs.h:855
@ DefinitivePores
Pores and ridge edges are obvious and unambiguous.
Definition efs.h:857
@ Background
No ridge information.
Definition efs.h:838
@ DefinitiveMinutiae
Minutiae and ridge flow are obvious and unambiguous; ridge edges are debatable.
Definition efs.h:850
FrictionRidgeCaptureTechnology toFrictionRidgeCaptureTechnology(const std::underlying_type_t< FrictionRidgeCaptureTechnology > i)
Convert integer to enumerated type.
Substrate
Substrate codes from ANSI/NIST-ITL 1-2011 (2015).
Definition efs.h:473
WhorlDeltaRelationship
Whorl-Delta relationship.
Definition efs.h:332
std::variant< FingerCrease, PalmCrease, LinearDiscontinuity > CreaseClassification
Collection of crease types.
Definition efs.h:1003
std::tuple< Coordinate, Coordinate > Segment
Line segment.
Definition common.h:253
Pixel location in an image.
Definition common.h:226
std::optional< uint16_t > direction
Direction pointing away from the center of the curve, in degrees [0,359] counterclockwise to the righ...
Definition efs.h:590
std::optional< uint8_t > directionUncertainty
Uncertainty of direction, in degrees [0, 180].
Definition efs.h:592
std::optional< uint16_t > coordinateUncertainty
Uncertainty of coordinate, radius, in pixels.
Definition efs.h:583
Coordinate coordinate
Location of the feature.
Definition efs.h:581
Core(const Coordinate &coordinate={}, const std::optional< uint16_t > &direction={}, const std::optional< uint16_t > coordinateUncertainty={}, const std::optional< uint8_t > directionUncertainty={})
Core constructor.
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.
Definition efs.h:760
std::string referenceIdentifier
Identifier from the reference template.
Definition efs.h:779
FrictionRidgeGeneralizedPosition probeFGP
Probe finger position.
Definition efs.h:762
FrictionRidgeGeneralizedPosition referenceFGP
Reference finger position.
Definition efs.h:781
Minutia referenceMinutia
Location in the reference image of a probe image feature.
Definition efs.h:792
CorrespondenceType type
Type of correspondence seen at these points.
Definition efs.h:750
Minutia probeMinutia
Location in the probe image of a reference image feature.
Definition efs.h:769
uint8_t referenceInputIdentifier
Link to Image::identifier and/or Features::identifier for reference.
Definition efs.h:786
uint8_t probeInputIdentifier
Link to Image::identifier and/or Features::identifier for probe.
Definition efs.h:767
std::optional< uint16_t > coordinateUncertainty
Uncertainty of coordinate, radius, in pixels.
Definition efs.h:622
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.
Definition efs.h:620
std::optional< std::tuple< std::optional< uint8_t >, std::optional< uint8_t >, std::optional< uint8_t > > > directionUncertainty
Uncertainty of direction, in degrees [0, 180].
Definition efs.h:636
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 ...
Definition efs.h:632
Collection of ANSI/NIST-ITL 1-2011 (Update: 2015) Extended Feature Set fields understood by FRIF.
Definition efs.h:1301
std::optional< Substrate > lsb
Substrate from which the print was developed.
Definition efs.h:1341
std::optional< std::vector< Coordinate > > roi
Closed convex polygon forming region of interest.
Definition efs.h:1406
std::optional< std::vector< ProcessingMethod > > lpm
Methods used process the print.
Definition efs.h:1337
std::optional< std::vector< RidgeQualityRegion > > rqm
Assessment of ridge quality within local areas of an image.
Definition efs.h:1422
std::optional< bool > plr
Image is known to be or may possibly be laterally reversed.
Definition efs.h:1348
std::optional< Orientation > orientation
Deviation of the friction ridge from an upright position/.
Definition efs.h:1335
std::optional< std::vector< Delta > > deltas
Delta locations.
Definition efs.h:1376
std::optional< ValueAssessment > valueAssessment
Examiner/algorithmic value assessment for identification.
Definition efs.h:1339
std::optional< bool > complex
Whether or not feature extraction was complex.
Definition efs.h:1433
std::optional< std::vector< Minutia > > minutiae
Locations of minutiae.
Definition efs.h:1392
Impression imp
Impression type of the depicted region.
Definition efs.h:1326
std::optional< std::vector< Core > > cores
Core locations.
Definition efs.h:1365
uint16_t ppi
Resolution of the image used to derive these features in pixels per inch.
Definition efs.h:1312
FrictionRidgeGeneralizedPosition frgp
Description of the depicted region.
Definition efs.h:1331
std::optional< PatternClassification > pat
Observed pattern classification.
Definition efs.h:1343
std::optional< QualityMeasureMap > quality
Quality measures of the biometric sample.
Definition efs.h:1323
std::optional< bool > trv
Part or all of image is known to be or may possibly be tonally reversed.
Definition efs.h:1353
std::optional< std::vector< Crease > > creases
Creases and other linear discontinuities.
Definition efs.h:1394
uint8_t identifier
An identifier for this set of data.
Definition efs.h:1306
FrictionRidgeCaptureTechnology frct
Capture technology that created this image.
Definition efs.h:1328
Friction ridge feature details.
Definition efs.h:536
std::optional< uint8_t > thetaUncertainty
Uncertainty of theta, in degrees [0, 180].
Definition efs.h:548
uint16_t theta
Ridge direction of the feature, in degrees [0,359], following conventions from ANSI/NIST-ITL 1-2011 (...
Definition efs.h:546
MinutiaType type
Type of feature.
Definition efs.h:551
std::optional< uint16_t > coordinateUncertainty
Uncertainty of coordinate, radius, in pixels.
Definition efs.h:540
Coordinate coordinate
Location of the feature.
Definition efs.h:538
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.
std::optional< uint8_t > uncertainty
Uncertainty of direction in degrees [0,180].
Definition efs.h:676
Orientation(const int16_t direction=0, const std::optional< uint8_t > &uncertainty=15)
Orientation constructor.
int16_t direction
Degrees needed to rotate image upright.
Definition efs.h:668
Hash function for Description.
Definition efs.h:1158
std::size_t operator()(const Description &d) const
Description of algorithm that computed a QualityMeasure.
Definition efs.h:1136
std::optional< ProductIdentifier > identifier
Registered algorithm identifier (QAV, QAP).
Definition efs.h:1138
std::optional< std::string > comment
Other information (QCM).
Definition efs.h:1142
std::optional< std::string > modelSHA256
Model SHA-256 checksum (QCK).
Definition efs.h:1144
std::strong_ordering operator<=>(const Description &) const
bool operator==(const Description &) const
std::optional< std::string > version
Algorithm product version (QPV).
Definition efs.h:1140
Region defined in a map of ridge quality/confidence.
Definition efs.h:879
std::vector< Coordinate > region
Closed convex polygon whose contents is quality.
Definition efs.h:890
RidgeQuality quality
Clarity of ridge features enclosed within region.
Definition efs.h:892