Inversed-Tech / eyelid

Private iris matching
Apache License 2.0
0 stars 0 forks source link

2.1.3. Implement Iris code data structures supporting different resolutions, dynamic and static masking #62

Closed teor2345 closed 1 month ago

teor2345 commented 3 months ago

This is deliverable 3 in milestone 1 of phase 2.

Iris code data structure abstraction:

Iris code encoding methods that can support dynamic and 50% static masking for medium and high resolution iris codes: Dynamic Masking:

Static Masking (in encoded):

bgillesp commented 1 month ago

Following up on a question from @teor2345:

What's needed for dynamic and static masking?

Dynamic masking is the default operation mode for the current implementation: iris codes are represented as a "masked iris code" encoding plus a somewhat redundant "mask only" encoding; the iris code encoding has coefficients "1 for unmasked 0-bit, -1 for unmasked 1-bit, 0 for masked bit", and the mask encoding has coefficients "1 for unmasked bit, 0 for masked bit".

For static masking, a "query" encoding is like the dynamic masked iris code encoding, but a fixed global static mask is used. This static mask is chosen to represent the most reliable iris code bits on average, as measured over a reference dataset. For this encoding, the iris code is aligned prior to encoding so that the measured mask has maximal overlap with the static mask, and then is encoded as a masked iris code, but using the static mask. Separately, a "database" encoding omits mask data entirely, using coefficients "1 for 0-bit" and "-1 for 1-bit" without regard to any measured or static mask. Here only one encoding is needed for each query and database entry, in contrast with the two separate "iris code" and "mask" encodings needed for the dynamic mask computations.

(Design note for future reference: the advantage of encoding the static mask in the query rather than the database entry is that this allows easy revisions to the chosen static mask and alignment protocol without having to update the database.)

So the main computational steps needed to support static masking are the following:

I'll extend the main task list for this issue to reflect these specifics.

teor2345 commented 1 month ago

We opened a ticket for static masking only