Package org.opencv.face
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 MACE
create()
constructorstatic MACE
create
(int IMGSIZE) constructorprotected void
finalize()
static MACE
constructorstatic MACE
constructorvoid
optionally encrypt images with random convolutionboolean
correlate query img and threshold to min class valuevoid
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 imagesMethods inherited from class org.opencv.core.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
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
-
same
correlate query img and threshold to min class value- Parameters:
query
- a Mat with query image- Returns:
- automatically generated
-
load
constructor- Parameters:
filename
- build a new MACE instance from a pre-serialized FileStorageobjname
- (optional) top-level node in the FileStorage- Returns:
- automatically generated
-
load
constructor- Parameters:
filename
- build a new MACE instance from a pre-serialized FileStorage- Returns:
- automatically generated
-
create
constructor- Parameters:
IMGSIZE
- images will get resized to this (should be an even number)- Returns:
- automatically generated
-
create
constructor- Returns:
- automatically generated
-
finalize
-