| OpenCV 5.0.0alpha Open Source Computer Vision

Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
cv::face::MACE Class Referenceabstract
Face Analysis

Minimum Average Correlation Energy Filter useful for authentication with (cancellable) biometrical features. (does not need many positives to train (10-50), and no negatives at all, also robust to noise/salting) More...

`#include <opencv2/face/mace.hpp>`

Collaboration diagram for cv::face::MACE:

## Public Member Functions
virtual void | salt (const cv::String &passphrase)=0
| optionally encrypt images with random convolution
virtual bool | same (cv::InputArray query) const =0
| correlate query img and threshold to min class value
virtual void | train (cv::InputArrayOfArrays images)=0
| train it on positive features compute the mace filter: `h = D(-1) * X * (X(+) * D(-1) * X)(-1) * C` also calculate a minimal threshold for this class, the smallest self-similarity from the train images
Public Member Functions inherited from cv::Algorithm
| Algorithm ()
virtual | ~Algorithm ()
virtual void | clear ()
| Clears the algorithm state.
virtual bool | empty () const
| Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read.
virtual String | getDefaultName () const
virtual void | read (const FileNode &fn)
| Reads algorithm parameters from a file storage.
virtual void | save (const String &filename) const
virtual void | write (FileStorage &fs) const
| Stores algorithm parameters in a file storage.
void | write (FileStorage &fs, const String &name) const

## Static Public Member Functions
static cv::Ptr< MACE > | create (int IMGSIZE=64)
| constructor
static cv::Ptr< MACE > | load (const String &filename, const String &objname=String())
| constructor
Static Public Member Functions inherited from cv::Algorithm
template<typename _Tp >
static Ptr< _Tp > | load (const String &filename, const String &objname=String())
| Loads algorithm from the file.
template<typename _Tp >
static Ptr< _Tp > | loadFromString (const String &strModel, const String &objname=String())
| Loads algorithm from a String.
template<typename _Tp >
static Ptr< _Tp > | read (const FileNode &fn)
| Reads algorithm from the file node.

## Additional Inherited Members
Protected Member Functions inherited from cv::Algorithm
void | writeFormat (FileStorage &fs) const

## Detailed Description

Minimum Average Correlation Energy Filter useful for authentication with (cancellable) biometrical features. (does not need many positives to train (10-50), and no negatives at all, also robust to noise/salting)

see also: [237]

this implementation is largely based on: https://code.google.com/archive/p/pam-face-authentication (GSOC 2009)

use it like:

Ptr<face::MACE> mace = face::MACE::create(64);
vector<Mat> pos_images = ...
mace->train(pos_images);
Mat query = ...
bool same = mace->same(query);
cv::Mat
n-dimensional dense array class
Definition mat.hpp:951
cv::face::MACE::create
static cv::Ptr< MACE > create(int IMGSIZE=64)
constructor
cv::face::MACE::same
virtual bool same(cv::InputArray query) const =0
correlate query img and threshold to min class value
cv::Ptr
std::shared_ptr< _Tp > Ptr
Definition cvstd_wrapper.hpp:23

you can also use two-factor authentication, with an additional passphrase:

String owners_passphrase = "ilikehotdogs";
Ptr<face::MACE> mace = face::MACE::create(64);
mace->salt(owners_passphrase);
vector<Mat> pos_images = ...
mace->train(pos_images);
// now, users have to give a valid passphrase, along with the image:
Mat query = ...
cout << "enter passphrase: ";
string pass;
getline(cin, pass);
mace->salt(pass);
bool same = mace->same(query);
cv::String
std::string String
Definition cvstd.hpp:151

save/load your model:

Ptr<face::MACE> mace = face::MACE::create(64);
mace->train(pos_images);
mace->save("my_mace.xml");
// later:
Ptr<MACE> reloaded = MACE::load("my_mace.xml");
reloaded->same(some_image);
cv::face::MACE::load
static cv::Ptr< MACE > load(const String &filename, const String &objname=String())
constructor

## Member Function Documentation

## ◆ create()

static cv::Ptr< MACE > cv::face::MACE::create | ( | int | IMGSIZE = 64 | ) |
| static

Python:
| cv.face.MACE.create( | [, IMGSIZE] | ) -> | retval
| cv.face.MACE_create( | [, IMGSIZE] | ) -> | retval

constructor

Parameters

  IMGSIZE | images will get resized to this (should be an even number)

## ◆ load()

static cv::Ptr< MACE > cv::face::MACE::load | ( | const String & | filename,
|  | const String & | objname = String() )
| static

Python:
| cv.face.MACE.load( | filename[, objname] | ) -> | retval
| cv.face.MACE_load( | filename[, objname] | ) -> | retval

constructor

Parameters

  filename | build a new MACE instance from a pre-serialized FileStorage
  objname | (optional) top-level node in the FileStorage

## ◆ salt()

virtual void cv::face::MACE::salt | ( | const cv::String & | passphrase | ) |
| pure virtual

Python:
| cv.face.MACE.salt( | passphrase | ) -> | None

optionally encrypt images with random convolution

Parameters

  passphrase | a crc64 random seed will get generated from this

## ◆ same()

virtual bool cv::face::MACE::same | ( | cv::InputArray | query | ) | const
| pure virtual

Python:
| cv.face.MACE.same( | query | ) -> | retval

correlate query img and threshold to min class value

Parameters

  query | a Mat with query image

## ◆ train()

virtual void cv::face::MACE::train | ( | cv::InputArrayOfArrays | images | ) |
| pure virtual

Python:
| cv.face.MACE.train( | images | ) -> | None

train it on positive features compute the mace filter: `h = D(-1) * X * (X(+) * D(-1) * X)(-1) * C` also calculate a minimal threshold for this class, the smallest self-similarity from the train images

Parameters

  images | a vector<Mat> with the train images

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

- opencv2/face/mace.hpp