13#include "enrollment/Export.h"
33 class Config :
public Serializable
50 static constexpr unsigned int MaxRotation = 180;
51 if (value > MaxRotation)
72 writer.Write(
"r", maxRotation);
99 static constexpr unsigned int DefaultMaxRotation = 180;
100 unsigned int maxRotation = DefaultMaxRotation;
114 log.LogInfo(
"Matching applicant probe %v and gallery %v with config %v", probe, gallery, cfg);
115 auto probeTemplate = probe.ToTemplate();
116 auto galleryTemplate = gallery.ToTemplate();
117 auto score =
Match(*probeTemplate, *galleryTemplate);
118 log.LogInfo(
"Matching applicant probe %v and gallery %v with score %v", probe, gallery, score);
132 log.LogInfo(
"Matching applicant template probe %v and gallery %v with config %v", probe, gallery, cfg);
134 MatchIrises(probe.GetIrisTemplates(), gallery.GetIrisTemplates()),
135 MatchPrints(probe.GetPrintTemplates(), gallery.GetPrintTemplates()) };
136 log.LogInfo(
"Matching applicant template probe %v and gallery %v with score %v", probe, gallery, score);
149 const std::vector<std::shared_ptr<PrintTemplate>>& probe,
150 const std::vector<std::shared_ptr<PrintTemplate>>& gallery)
const
157 ->GetModalitiesICSTemplateData();
159 ->GetModalitiesICSTemplateData();
161 exec->Verify(log.GetLogger(),
166 cfg.GetMaxRotation(),
184 const std::vector<std::shared_ptr<FaceTemplate>>& gallery)
187 for (
const auto& probeFace : probe)
189 for (
const auto& galleryFace : gallery)
191 auto score = probeFace->SimilarWith(*galleryFace);
192 faceScore = std::max(faceScore, score);
207 const std::vector<std::shared_ptr<IrisTemplate>>& gallery)
213 unsigned int irisUnknownScoreCount = 0;
214 unsigned int irisLeftScoresCount = 0;
215 unsigned int irisRightScoresCount = 0;
216 for (
const auto& probeIris : probe)
218 for (
const auto& galleryIris : gallery)
220 if (probeIris->IsIrisTemplateBiometricPositionKnown() &&
221 galleryIris->IsIrisTemplateBiometricPositionKnown())
226 auto score = probeIris->SimilarWith(*galleryIris);
227 irisLeftScore = std::max(irisLeftScore, score);
228 irisLeftScoresCount = 1;
233 auto score = probeIris->SimilarWith(*galleryIris);
234 irisRightScore = std::max(irisRightScore, score);
235 irisRightScoresCount = 1;
240 auto score = probeIris->SimilarWith(*galleryIris);
241 irisUnknownScore += score;
242 irisUnknownScoreCount++;
247 if (
auto scoresCount = irisUnknownScoreCount + irisLeftScoresCount + irisRightScoresCount; scoresCount != 0)
249 irisScore = (irisLeftScore + irisRightScore + irisUnknownScore) / scoresCount;
272 : cfg(std::move(config))
285 : cfg(std::move(config))
287 , exec(std::move(executor))
303 std::shared_ptr<MultiModalityExecutor> executor,
304 std::shared_ptr<Logger> logger)
305 : cfg(std::move(config))
306 , log(std::move(logger))
307 , exec(std::move(executor))
323 , exec(std::move(executor))
340 std::shared_ptr<MultiModalityExecutor> exec;
Applicant represent enrolled person.
Definition Applicant.h:255
Base exception for all enrollment-sdk invalid argument exceptions.
Definition EnrollmentException.h:96
Holds instance of Logger.
Definition Logger.h:275
Holds instance of MultiModalityExecutor.
Definition MultiModalityExecutor.h:434
ModalitiesICSTemplateDefaultFactory creates biometric representations from all modality templates.
Definition ModalitiesICSTemplateDefaultFactory.h:28
Applicant template in serialized form used for biometric operations.
Definition ModalitiesTemplate.h:54
ModalitiesVerifyMatcher configuration.
Definition ModalitiesVerifyMatcher.h:33
void WriteTo(Writer &writer) const final
Function serializes configuration via provided Writer.
Definition ModalitiesVerifyMatcher.h:69
void SetMaxRotation(unsigned int value)
Set the Max Rotation.
Definition ModalitiesVerifyMatcher.h:47
static Config Default()
Provides default config.
Definition ModalitiesVerifyMatcher.h:80
Config()=default
Default configuration is.
unsigned int GetMaxRotation() const
Get the Max Rotation.
Definition ModalitiesVerifyMatcher.h:61
ModalitiesVerifyMatcher is template matcher that uses Innovatrics proprietary verification algorithm.
Definition ModalitiesVerifyMatcher.h:27
static IrisSimilarityScore MatchIrises(const std::vector< std::shared_ptr< IrisTemplate > > &probe, const std::vector< std::shared_ptr< IrisTemplate > > &gallery)
Calculates face similarity score of probe and gallery that contains only irises.
Definition ModalitiesVerifyMatcher.h:205
ModalityScore Match(const ModalitiesTemplate &probe, const ModalitiesTemplate &gallery) const final
Calculates similarity score of probe and gallery applicant for each applicant modality.
Definition ModalitiesVerifyMatcher.h:128
ModalityScore Match(const Applicant &probe, const Applicant &gallery) const final
Calculates similarity score of probe and gallery applicant template for each modality.
Definition ModalitiesVerifyMatcher.h:111
ModalitiesVerifyMatcher()
Constructor with default Config GlobalMultiModalityExecutor is used to execute matching.
Definition ModalitiesVerifyMatcher.h:258
ModalitiesVerifyMatcher(Config config)
Constructor uses Config to setup matching algorithm.
Definition ModalitiesVerifyMatcher.h:270
ModalitiesVerifyMatcher(Config config, std::shared_ptr< MultiModalityExecutor > executor, std::shared_ptr< Logger > logger)
Constructor uses Config to setup matching algorithm.
Definition ModalitiesVerifyMatcher.h:301
static FaceSimilarityScore MatchFaces(const std::vector< std::shared_ptr< FaceTemplate > > &probe, const std::vector< std::shared_ptr< FaceTemplate > > &gallery)
Calculates face similarity score of probe and gallery that contains only faces.
Definition ModalitiesVerifyMatcher.h:182
virtual PrintSimilarityScore MatchPrints(const std::vector< std::shared_ptr< PrintTemplate > > &probe, const std::vector< std::shared_ptr< PrintTemplate > > &gallery) const
Calculates prints similarity score of probe and gallery that contains only prints.
Definition ModalitiesVerifyMatcher.h:147
ModalitiesVerifyMatcher(Config config, std::shared_ptr< MultiModalityExecutor > executor)
Constructor uses Config to setup matching algorithm.
Definition ModalitiesVerifyMatcher.h:283
ModalitiesVerifyMatcher(std::shared_ptr< MultiModalityExecutor > executor)
Constructor with default Config.
Definition ModalitiesVerifyMatcher.h:319
Contains scores of multiple modalities.
Definition SimilarityScore.h:75
Null argument is not allowed.
Definition EnrollmentException.h:156
static std::vector< std::shared_ptr< ICSTemplate > > ToICSTemplates(const std::vector< std::shared_ptr< PrintTemplate > > &templates)
Converts a PrintTemplate objects into a ICSTemplate objects.
Definition PrintTemplate.h:38
Provides interface for serialization of all classes.
Definition Writer.h:164
unsigned int FaceSimilarityScore
It is similarity score between face Templates.
Definition SimilarityScore.h:69
unsigned int IrisSimilarityScore
It is similarity score between iris Templates.
Definition SimilarityScore.h:40
@ RIGHT_EYE
Iris of right eye.
Definition IrisPosition.h:24
@ LEFT_EYE
Iris of left eye.
Definition IrisPosition.h:26
unsigned int PrintSimilarityScore
It is similarity score between print Templates.
Definition SimilarityScore.h:28