[−][src]Trait 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: 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
pub fn as_raw_MACE(&self) -> *const c_void
[src]
pub fn as_raw_mut_MACE(&mut self) -> *mut c_void
[src]
Provided methods
pub fn salt(&mut self, passphrase: &str) -> Result<()>
[src]
optionally encrypt images with random convolution
Parameters
- passphrase: a crc64 random seed will get generated from this
pub fn train(&mut self, images: &dyn ToInputArray) -> Result<()>
[src]
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
with the train images
pub fn same(&self, query: &dyn ToInputArray) -> Result<bool>
[src]
Implementations
impl<'_> dyn MACE + '_
[src]
pub fn load(filename: &str, objname: &str) -> Result<Ptr<dyn MACE>>
[src]
constructor
Parameters
- filename: build a new MACE instance from a pre-serialized FileStorage
- objname: (optional) top-level node in the FileStorage
C++ default parameters
- objname: String()
pub fn create(imgsize: i32) -> Result<Ptr<dyn MACE>>
[src]
constructor
Parameters
- IMGSIZE: images will get resized to this (should be an even number)
C++ default parameters
- imgsize: 64