Interface for feature extraction implemented by participant.
More...
#include <elft.h>
Interface for feature extraction implemented by participant.
Definition at line 991 of file elft.h.
◆ ExtractionInterface()
| ELFT::ExtractionInterface::ExtractionInterface |
( |
| ) |
|
|
default |
◆ ~ExtractionInterface()
| ELFT::ExtractionInterface::~ExtractionInterface |
( |
| ) |
|
|
virtualdefault |
◆ getIdentification()
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
-
| templateType | Where this template will be used in the future. |
| identifier | Unique identifier used to identify the returned template in future search operations (e.g., Candidate::identifier). |
| samples | One 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()
Extract information contained within a template.
- Parameters
-
- 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
-
| referenceTemplates | One or more templates returned from createTemplate() with a templateType of TemplateType::Reference. |
| databaseDirectory | Entry to a read/write directory where the reference database shall be written. |
| maxSize | The 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.
-
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
-
| configurationDirectory | Read-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: