[][src]Trait opencv::face::MACE

pub trait MACE: AlgorithmTrait {
    pub fn as_raw_MACE(&self) -> *const c_void;
pub fn as_raw_mut_MACE(&mut self) -> *mut c_void; pub fn salt(&mut self, passphrase: &str) -> Result<()> { ... }
pub fn train(&mut self, images: &dyn ToInputArray) -> Result<()> { ... }
pub fn same(&self, query: &dyn ToInputArray) -> Result<bool> { ... } }

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]

Loading content...

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]

correlate query img and threshold to min class value

Parameters

  • query: a Mat with query image
Loading content...

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

Implementors

impl MACE for PtrOfMACE[src]

Loading content...