Evaluation of Latent Friction Ridge Technology
API for participating in NIST's evaluation of latent friction ridge identification algorithms.
Classes | Public Member Functions | Static Public Member Functions | List of all members
ELFT::ExtractionInterface Class Referenceabstract

Interface for feature extraction implemented by participant. More...

#include <elft.h>

Classes

struct  SubmissionIdentification
 Identifying information about this submission that will be included in reports. More...
 

Public Member Functions

virtual SubmissionIdentification getIdentification () const =0
 Obtain identification and version information for the extraction portion of this submission. More...
 
virtual CreateTemplateResult createTemplate (const TemplateType templateType, const std::string &identifier, const std::vector< std::tuple< std::optional< Image >, std::optional< EFS > > > &samples) const =0
 Extract features from one or more images and encode them into a template. More...
 
virtual std::optional< std::tuple< ReturnStatus, std::vector< TemplateData > > > extractTemplateData (const TemplateType templateType, const CreateTemplateResult &templateResult) const =0
 Extract information contained within a template. More...
 
virtual ReturnStatus createReferenceDatabase (const TemplateArchive &referenceTemplates, const std::filesystem::path &databaseDirectory, const uint64_t maxSize) const =0
 Create a reference database on the filesystem. More...
 
 ExtractionInterface ()
 
virtual ~ExtractionInterface ()
 

Static Public Member Functions

static std::shared_ptr< ExtractionInterfacegetImplementation (const std::filesystem::path &configurationDirectory)
 Obtain a managed pointer to an object implementing ExtractionInterface. More...
 

Detailed Description

Interface for feature extraction implemented by participant.

Definition at line 991 of file elft.h.

Constructor & Destructor Documentation

◆ ExtractionInterface()

ELFT::ExtractionInterface::ExtractionInterface ( )
default

◆ ~ExtractionInterface()

ELFT::ExtractionInterface::~ExtractionInterface ( )
virtualdefault

Member Function Documentation

◆ getIdentification()

virtual SubmissionIdentification ELFT::ExtractionInterface::getIdentification ( ) const
pure virtual

Obtain identification and version information for the extraction portion of this submission.

Returns
SubmissionIdentification populated with information used to identify the feature extraction algorithms in reports.
Note
This method shall return instantly.

◆ createTemplate()

virtual CreateTemplateResult ELFT::ExtractionInterface::createTemplate ( const TemplateType  templateType,
const std::string &  identifier,
const std::vector< std::tuple< std::optional< Image >, std::optional< EFS > > > &  samples 
) const
pure virtual

Extract features from one or more images and encode them into a template.

Parameters
templateTypeWhere this template will be used in the future.
identifierUnique identifier used to identify the returned template in future search operations (e.g., Candidate::identifier).
samplesOne or more biometric samples to be considered and encoded into a template.
Returns
A single CreateTemplateResult, which contains information about the result of the operation and a single template.
Note
This method must return in <= N * M seconds for each element of samples, on average, as measured on a fixed subset of data, where
  • N
    • 20.0 for latent images
    • 5.0 for exemplar images
    • 2.5 for feature sets
  • M
    • 1 for single fingers
    • 2 for two-finger simultaneous captures
    • 4 for four-finger simultaneous captures
    • 8 for upper palm, lower palm, and all other palm/joint regions except full palm
    • 16 for full palm
If samples contained RightThumb, LeftFour, and EJIOrTip, the time requirement would be <= ((5 * 1) + (5 * 4) + (5 * 8)) seconds.
The value of the returned CreateTemplateResult::data will only be recorded if CreateTemplateResult's ReturnStatus::result is ReturnStatus::Result::Success. On ReturnStatus::Result::Failure, subsequent searches will automatically increase false negative identification rate and a zero-byte template will be provided to ExtractionInterface::createReferenceDatabase.

◆ extractTemplateData()

virtual std::optional< std::tuple< ReturnStatus, std::vector< TemplateData > > > ELFT::ExtractionInterface::extractTemplateData ( const TemplateType  templateType,
const CreateTemplateResult templateResult 
) const
pure virtual

Extract information contained within a template.

Parameters
templateTypetemplateType passed to createTemplate().
templateResultObject returned from createTemplate().
Returns
A optional with no value if not implemented, or a ReturnStatus and one or more TemplateData describing the contents of CreateTemplateResult::data from templateResult otherwise. If CreateTemplateResult::data contains information separated by position (e.g., when provided a multi-position image) or multiple views of the same image (e.g., a compact and verbose template), there may be multiple TemplateData returned.
Note
You must implement this method to compile, but providing the requested information is optional. If provided, information may help in debugging as well as inform future NIST analysis.
You should not return information that was provided in createTemplate(). For instance, if Minutia was provided, EFS::minutiae should be left std::nullopt. However, if you discovered different Minutia, they should be returned.
The ReturnStatus member of CreateTemplateResult is not guaranteed to be populated with ReturnStatus::message and should not be consulted.
This method shall return in <= 500 milliseconds.

◆ createReferenceDatabase()

virtual ReturnStatus ELFT::ExtractionInterface::createReferenceDatabase ( const TemplateArchive referenceTemplates,
const std::filesystem::path &  databaseDirectory,
const uint64_t  maxSize 
) const
pure virtual

Create a reference database on the filesystem.

Parameters
referenceTemplatesOne or more templates returned from createTemplate() with a templateType of TemplateType::Reference.
databaseDirectoryEntry to a read/write directory where the reference database shall be written.
maxSizeThe maximum number of bytes of storage available to write.
Returns
Information about the result of executing the method.
Attention
Implementations must, at a minimum, copy the files pointed to by referenceTemplates to use SearchInterface. The files pointed to by referenceTemplates will not exist when SearchInterface is instantiated.
Note
This method may use more than one thread.
maxSize is not necessarily the amount of RAM that will be available to SearchInterface.
This method must return in <= 10 milliseconds * the number of lines in TemplateArchive::manifest.

◆ getImplementation()

static std::shared_ptr< ExtractionInterface > ELFT::ExtractionInterface::getImplementation ( const std::filesystem::path &  configurationDirectory)
static

Obtain a managed pointer to an object implementing ExtractionInterface.

Parameters
configurationDirectoryRead-only directory populated with configuration files provided in validation.
Returns
Shared pointer to an instance of ExtractionInterface containing the participant's code to perform extraction operations.
Note
A possible implementation might be: return (std::make_shared<ExtractionImplementation>( configurationDirectory));
This method shall return in <= 5 seconds.

The documentation for this class was generated from the following files: