pub trait MACEConst: AlgorithmTraitConst {
    fn as_raw_MACE(&self) -> *const c_void;

    fn same(&self, query: &dyn ToInputArray) -> Result<bool> { ... }
}
Expand 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: Savvides04

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);

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);

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);

Required Methods

Provided Methods

correlate query img and threshold to min class value

Parameters
  • query: a Mat with query image

Implementors