Package org.opencv.face
Class MACE
- java.lang.Object
-
- org.opencv.core.Algorithm
-
- org.opencv.face.MACE
-
public class MACE extends Algorithm
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);
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedMACE(long addr)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static MACE__fromPtr__(long addr)static MACEcreate()constructorstatic MACEcreate(int IMGSIZE)constructorprotected voidfinalize()static MACEload(java.lang.String filename)constructorstatic MACEload(java.lang.String filename, java.lang.String objname)constructorvoidsalt(java.lang.String passphrase)optionally encrypt images with random convolutionbooleansame(Mat query)correlate query img and threshold to min class valuevoidtrain(java.util.List<Mat> images)train 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 images-
Methods inherited from class org.opencv.core.Algorithm
clear, empty, getDefaultName, getNativeObjAddr, save
-
-
-
-
Method Detail
-
__fromPtr__
public static MACE __fromPtr__(long addr)
-
salt
public void salt(java.lang.String passphrase)
optionally encrypt images with random convolution- Parameters:
passphrase- a crc64 random seed will get generated from this
-
train
public void train(java.util.List<Mat> images)
train 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 images- Parameters:
images- a vector<Mat> with the train images
-
same
public boolean same(Mat query)
correlate query img and threshold to min class value- Parameters:
query- a Mat with query image- Returns:
- automatically generated
-
load
public static MACE load(java.lang.String filename, java.lang.String objname)
constructor- Parameters:
filename- build a new MACE instance from a pre-serialized FileStorageobjname- (optional) top-level node in the FileStorage- Returns:
- automatically generated
-
load
public static MACE load(java.lang.String filename)
constructor- Parameters:
filename- build a new MACE instance from a pre-serialized FileStorage- Returns:
- automatically generated
-
create
public static MACE create(int IMGSIZE)
constructor- Parameters:
IMGSIZE- images will get resized to this (should be an even number)- Returns:
- automatically generated
-
create
public static MACE create()
constructor- Returns:
- automatically generated
-
-