NIST Biometric Evaluation Framework
Software components for biometric technology evaluations
be_feature_sort.h
Go to the documentation of this file.
1/*
2 * This software was developed at the National Institute of Standards and
3 * Technology (NIST) by employees of the Federal Government in the course
4 * of their official duties. Pursuant to title 17 Section 105 of the
5 * United States Code, this software is not subject to copyright protection
6 * and is in the public domain. NIST assumes no responsibility whatsoever for
7 * its use by other parties, and makes no guarantees, expressed or implied,
8 * about its quality, reliability, or any other characteristic.
9 */
10
11#ifndef BE_FEATURE_SORT_H_
12#define BE_FEATURE_SORT_H_
13
14#include <be_feature_minutiae.h>
15#include <be_image.h>
16
17namespace BiometricEvaluation
18{
19 namespace Feature
20 {
22 namespace Sort
23 {
25 enum class Kind
26 {
84 Unknown
85 };
86
88 class XY
89 {
90 public:
96 bool
99 MinutiaPoint &lhs,
101 MinutiaPoint &rhs)
102 const;
103 };
104
106 class YX
107 {
108 public:
114 bool
117 MinutiaPoint &lhs,
119 MinutiaPoint &rhs)
120 const;
121 };
122
125 {
126 public:
131 bool
134 MinutiaPoint &lhs,
136 MinutiaPoint &rhs)
137 const;
138 };
139
141 class Angle
142 {
143 public:
145 bool
148 MinutiaPoint &lhs,
150 MinutiaPoint &rhs)
151 const;
152 };
153
159 class Polar
160 {
161 public:
174 &center);
175
177 bool
180 MinutiaPoint &lhs,
182 MinutiaPoint &rhs)
183 const;
184
201 MinutiaPointSet &mps);
202
217 &size);
218
219 private:
222
237 uint64_t
238 distanceFromCenter(
240 &coordinate)
241 const;
242 };
243
249 void
252
267 std::vector<Feature::MinutiaPoint>
269 std::vector<Feature::MinutiaPoint> &minutia,
270 const Kind &sortOrder);
271
287 std::vector<Feature::MinutiaPoint>
289 std::vector<Feature::MinutiaPoint> &minutia,
290 const Kind &sortOrder);
291 }
292 }
293}
294
297 BE_Feature_Sort_Kind_EnumToStringMap);
298
299#endif /* BE_FEATURE_SORT_H_ */
BE_FRAMEWORK_ENUMERATION_DECLARATIONS(BiometricEvaluation::Feature::Sort::Kind, BE_Feature_Sort_Kind_EnumToStringMap)
Sort by increasing angle (theta)
bool operator()(const BiometricEvaluation::Feature::MinutiaPoint &lhs, const BiometricEvaluation::Feature::MinutiaPoint &rhs) const
MinutiaPoint angle ascending comparator.
Sort by increasing distance from center and angle (theta).
static BiometricEvaluation::Image::Coordinate centerOfMinutiaeMass(const BiometricEvaluation::Feature::MinutiaPointSet &mps)
Obtain the center of minutiae mass.
Polar(const BiometricEvaluation::Image::Coordinate &center)
Polar constructor.
static BiometricEvaluation::Image::Coordinate centerOfImage(const BiometricEvaluation::Image::Size &size)
Obtain the center point of an image.
bool operator()(const BiometricEvaluation::Feature::MinutiaPoint &lhs, const BiometricEvaluation::Feature::MinutiaPoint &rhs) const
MinutiaPoint polar ascending comparator.
Sort by increasing minutiae quality.
bool operator()(const BiometricEvaluation::Feature::MinutiaPoint &lhs, const BiometricEvaluation::Feature::MinutiaPoint &rhs) const
MinutiaPoint quality ascending comparator.
Sort by increasing Cartesian X-Y coordinate.
bool operator()(const BiometricEvaluation::Feature::MinutiaPoint &lhs, const BiometricEvaluation::Feature::MinutiaPoint &rhs) const
MinutiaPoint Cartesian X-Y ascending comparator.
Sort by increasing Cartesian Y-X coordinate.
bool operator()(const BiometricEvaluation::Feature::MinutiaPoint &lhs, const BiometricEvaluation::Feature::MinutiaPoint &rhs) const
MinutiaPoint Cartesian Y-X ascending comparator.
Kind
Sort order of MinutiaPointSets.
@ QualityDescending
Highest to lowest quality value.
@ QualityAscending
Lowest to highest quality value.
@ PolarCOIAscending
Lowest to highest distance from center of image, followed by angle (theta).
@ PolarCOIDescending
Highest to lowest distance from center of img, followed by angle (theta).
@ PolarCOMAscending
Lowest to highest distance from center of minutia mass, followed by angle (theta).
@ PolarCOMDescending
Highest to lowest distance from center of minutia mass, followed by angle (theta).
@ YXAscending
Lowest to highest Y value, followed by X value.
@ XYAscending
Lowest to highest X value, followed by Y value.
@ YXDescending
Highest to lowest Y value, followed by X value.
@ AngleAscending
Lowest to highest angle (theta) value.
@ XYDescending
Highest to lowest X value, followed by Y value.
@ AngleDescending
Highest to lowest angle (theta) value.
std::vector< Feature::MinutiaPoint > stableSort(std::vector< Feature::MinutiaPoint > &minutia, const Kind &sortOrder)
Sort minutia, maintaining existing order if elements are otherwise deemed equal.
std::vector< Feature::MinutiaPoint > sort(std::vector< Feature::MinutiaPoint > &minutia, const Kind &sortOrder)
Sort minutia.
void updateIndicies(BiometricEvaluation::Feature::MinutiaPointSet &mps)
Renumber index numbers in a MinutiaPointSet in place.
Biometric information relating to biometric features not specific to any type of biometric record.
Definition: be_feature.h:27
std::vector< MinutiaPoint > MinutiaPointSet
This software was developed at the National Institute of Standards and Technology (NIST) by employees...
Representation of a finger minutiae data point.
A structure to contain a two-dimensional coordinate without a specified origin.
Definition: be_image.h:67
A structure to represent the size of an image, in pixels.
Definition: be_image.h:159