15 const std::string &probeIdentifier_,
16 const uint8_t probeInputIdentifier_,
18 const std::string &referenceIdentifier_,
19 const uint8_t referenceInputIdentifier_,
20 const Minutia &referenceMinutia_) :
22 probeIdentifier{probeIdentifier_},
23 probeInputIdentifier{probeInputIdentifier_},
24 probeMinutia{probeMinutia_},
25 referenceIdentifier{referenceIdentifier_},
26 referenceInputIdentifier{referenceInputIdentifier_},
27 referenceMinutia{referenceMinutia_}
34 const uint16_t theta_,
36 const std::optional<uint16_t> coordinateUncertainty_,
37 const std::optional<uint8_t> thetaUncertainty_) :
38 coordinate{coordinate_},
39 coordinateUncertainty{coordinateUncertainty_},
41 thetaUncertainty{thetaUncertainty_},
49 const std::optional<uint16_t> &direction_,
50 const std::optional<uint16_t> coordinateUncertainty_,
51 const std::optional<uint8_t> directionUncertainty_) :
52 coordinate{coordinate_},
53 coordinateUncertainty{coordinateUncertainty_},
54 direction{direction_},
55 directionUncertainty{directionUncertainty_}
62 const std::optional<std::tuple<std::optional<uint16_t>,
63 std::optional<uint16_t>, std::optional<uint16_t>>> &direction_,
64 const std::optional<uint16_t> coordinateUncertainty_,
65 const std::optional<std::tuple<std::optional<uint8_t>,
66 std::optional<uint8_t>, std::optional<uint8_t>>>
67 &directionUncertainty_) :
68 coordinate{coordinate_},
69 coordinateUncertainty{coordinateUncertainty_},
70 direction{direction_},
71 directionUncertainty{directionUncertainty_}
79 const std::vector<Segment> &segments_) :
111 if (std::get_if<PalmCrease>(&cld_) !=
nullptr) {
150 throw std::logic_error{
"CreaseClassification = "
151 "PalmCrease, but FrictionRidgeGeneralizedPosition "
152 "is not from a palm"};
212std::vector<FRIF::Segment>
216 return (this->segments);
223 this->segments.push_back(segment);
228 const std::vector<FRIF::Segment> &segments_)
230 this->segments = segments_;
235 const std::optional<PatternSubclassification> sub_,
236 const std::optional<WhorlDeltaRelationship> wdr_)
238 this->setPatternGeneralClassification(gcf_);
240 if (sub_.has_value())
241 this->setPatternSubclassification(sub_.value());
243 if (wdr_.has_value())
244 this->setWhorlDeltaRelationship(wdr_.value());
254 this->sub = std::nullopt;
255 this->wdr = std::nullopt;
264 if (std::get_if<ArchPatternSubclassification>(&sub_) ==
nullptr)
265 throw std::logic_error{
"PatternGeneralClassification = "
266 "Arch, but PatternSubclassification is not an "
267 "ArchPatternSubclassification"};
271 if (std::get_if<WhorlPatternSubclassification>(&sub_) ==
273 throw std::logic_error{
"PatternGeneralClassification = "
274 "Whorl, but PatternSubclassification is not a "
275 "WhorlPatternSubclassification"};
278 throw std::logic_error{
"PatternGeneralClassification is not "
290 throw std::logic_error{
"PatternGeneralClassification is not "
292 if (!this->sub.has_value())
293 throw std::logic_error{
"PatternSubClassification is not set"};
294 if (std::get_if<WhorlPatternSubclassification>(&this->sub.value()) ==
296 throw std::logic_error{
"PatternGeneralClassification = Whorl, "
297 "but PatternSubclassification is not a "
298 "WhorlPatternSubclassification"};
310std::optional<FRIF::EFS::PatternSubclassification>
317std::optional<FRIF::EFS::WhorlDeltaRelationship>
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
std::variant< FingerCrease, PalmCrease, LinearDiscontinuity > CreaseClassification
Collection of crease types.
PatternGeneralClassification
General classification of friction ridge structure.
std::variant< ArchPatternSubclassification, WhorlPatternSubclassification > PatternSubclassification
Subclassification of PatternClassification.
FrictionRidgeGeneralizedPosition
Friction positions codes from ANSI/NIST-ITL 1-2011 (2015).
@ LeftFullPalmAndWritersPalm
@ RightFullPalmAndWritersPalm
MinutiaType
Types of minutiae.
CorrespondenceType
Types of correspondence.
WhorlDeltaRelationship
Whorl-Delta relationship.
std::tuple< Coordinate, Coordinate > Segment
Line segment.
Pixel location in an image.
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 uint8_t probeInputIdentifier={}, const Minutia &probeMinutia={}, const std::string &referenceIdentifier={}, const uint8_t referenceInputIdentifier={}, const Minutia &referenceMinutia={})
CorrespondenceRelationship constructor.
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.
Friction ridge feature details.
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.