Class MACE
java.lang.Object
org.opencv.core.Algorithm
org.opencv.face.MACE
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: CITE: 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);
-
Field Summary
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic MACE__fromPtr__(long addr) static MACEcreate()constructorstatic MACEcreate(int IMGSIZE) constructorstatic MACEconstructorstatic MACEconstructorvoidoptionally encrypt images with random convolutionbooleancorrelate query img and threshold to min class valuevoidtrain it on positive features compute the mace filter:h = D(-1) * X * (X(+) * D(-1) * X)(-1) * Calso calculate a minimal threshold for this class, the smallest self-similarity from the train imagesMethods inherited from class Algorithm
clear, empty, getDefaultName, getNativeObjAddr, save
-
Constructor Details
-
MACE
protected MACE(long addr)
-
-
Method Details
-
__fromPtr__
-
salt
optionally encrypt images with random convolution- Parameters:
passphrase- a crc64 random seed will get generated from this
-
train
-
same
correlate query img and threshold to min class value- Parameters:
query- a Mat with query image- Returns:
- automatically generated
-
load
-
load
-
create
constructor- Parameters:
IMGSIZE- images will get resized to this (should be an even number)- Returns:
- automatically generated
-
create
-