Friction Ridge Image and Features
API for participating in NIST's Friction Ridge Image and Features Technology Evaluations.
Loading...
Searching...
No Matches
FRIF::Evaluations::Exemplar1N::ExtractionInterface Class Referenceabstract

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

#include <e1n.h>

Classes

struct  Compatibility
 Information used by the NIST testing apparatus to help efficiently test this implementation. More...
 

Public Member Functions

virtual std::tuple< ReturnStatus, std::optional< CreateTemplateResult > > createTemplate (const TemplateType templateType, const std::string &identifier, const std::vector< Sample > &samples) const =0
 Extract features from one or more images and encode them into a template.
 
virtual std::optional< std::tuple< ReturnStatus, std::vector< TemplateData > > > extractTemplateData (const TemplateType templateType, const CreateTemplateResult &templateResult) const =0
 Extract information contained within a template.
 
virtual ReturnStatus createReferenceDatabase (const TemplateArchive &referenceTemplates, const std::filesystem::path &databaseDirectory, const uint64_t maxSize) const =0
 Create a reference database on the file system.
 
 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.
 
static std::optional< ProductIdentifiergetProductIdentifier ()
 Obtain identification and version information for the extraction portion of this submission.
 
static Compatibility getCompatibility ()
 Obtain information about API feature and version compatibility of this implementation.
 

Detailed Description

Interface for feature extraction implemented by participant.

Definition at line 73 of file e1n.h.

Constructor & Destructor Documentation

◆ ExtractionInterface()

FRIF::Evaluations::Exemplar1N::ExtractionInterface::ExtractionInterface ( )
default

◆ ~ExtractionInterface()

FRIF::Evaluations::Exemplar1N::ExtractionInterface::~ExtractionInterface ( )
virtualdefault

Member Function Documentation

◆ createTemplate()

virtual std::tuple< ReturnStatus, std::optional< CreateTemplateResult > > FRIF::Evaluations::Exemplar1N::ExtractionInterface::createTemplate ( const TemplateType templateType,
const std::string & identifier,
const std::vector< Sample > & 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 tuple containing a ReturnStatus on if the operation succeeded, and a CreateTemplateResult that contains a single template representative of samples when information was able to be extracted.
Note
If an implementation cannot extract information but did not encounter any errors, a ReturnStatus with Result::Success and no CreateTemplateResult would be expected.
The value of the returned CreateTemplateResult::data will only be recorded if ReturnStatus::result is ReturnStatus::Result::Success. On ReturnStatus::Result::Failure or when the optional CreateTemplateResult tuple member is std::nullopt, subsequent searches will automatically increase false negative identification rate and a zero-length template will be provided to ExtractionInterface::createReferenceDatabase.
This method must return in <= N * M milliseconds for each element of samples, on average, as measured on a fixed subset of data, where
  • N
    • 500 for exemplar images
    • 250 for feature sets
  • M
    • 1 for single fingers
    • 2 for two-finger simultaneous captures
    • 4 for four-finger simultaneous captures
    • 8 for half palm and joint regions
    • 16 for full palm
If samples contained RightThumb, and LeftFour, the time requirement would be <= ((500 * 1) + (500 * 4)) milliseconds.
This method shall not spawn threads.

◆ extractTemplateData()

virtual std::optional< std::tuple< ReturnStatus, std::vector< TemplateData > > > FRIF::Evaluations::Exemplar1N::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 (as noted in Compatibility::supportsTemplateIntrospection), 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.
Attention
Be sure to note if this method is supported (i.e., if this method returns something other than std::nullopt) by setting Compatibility::supportsTemplateIntrospection to true.
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.
This method shall return in <= 500 milliseconds.
This method shall not spawn threads.

◆ createReferenceDatabase()

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

Create a reference database on the file system.

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.
Implementations may not write more than 1000 total files.
Writing many files is detrimental to the performance of the file system during this evaluation. It is strongly encouraged to write a small number of large files to store the reference database. NIST reserves the right to reject the implementation based on the file system requirements of the reference database scheme employed.
Note
This method may use more than one thread.
maxSize is not necessarily the amount of RAM that will be available to SearchInterface to load the database. That value will be provided at search time as input to SearchInterface::load.
This method must return in <= 5 milliseconds * the number of lines in TemplateArchive::manifest.

◆ getImplementation()

static std::shared_ptr< ExtractionInterface > FRIF::Evaluations::Exemplar1N::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.
This method shall not spawn threads.

◆ getProductIdentifier()

static std::optional< ProductIdentifier > FRIF::Evaluations::Exemplar1N::ExtractionInterface::getProductIdentifier ( )
static

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

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

◆ getCompatibility()

static Compatibility FRIF::Evaluations::Exemplar1N::ExtractionInterface::getCompatibility ( )
static

Obtain information about API feature and version compatibility of this implementation.

Returns
Compatibility populated with information used to help efficiently run the evaluation of this implementation.
Note
This method shall return instantly.
This method shall not spawn threads.

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