Skip to content

Add support for 009a sensor initializer#7

Merged
uunicorn merged 1 commit into
uunicorn:device/009afrom
marto-ales:device/009a
Jul 3, 2020
Merged

Add support for 009a sensor initializer#7
uunicorn merged 1 commit into
uunicorn:device/009afrom
marto-ales:device/009a

Conversation

@marto-ales

@marto-ales marto-ales commented Jul 2, 2020

Copy link
Copy Markdown
Contributor

I'm not sure if this is useful but I was working on make the validity-sensors-initializer.py support the 06cb:009a device and other similar devices in the future. @uunicorn please feel free to review and change/reject this pull request at your discretion.

Maybe someone else with the same device can test this and confirm it is working fine.

Related to #3

hhgarnes added a commit to hhgarnes/libfprint-tod-vfs0090 that referenced this pull request Jul 2, 2020
Add 06cb:009a to the list of supported devices.

The initialization instructions on line 1449 will be updated for 9a in the pull request uunicorn/python-validity#7 unless I'm completely mistaken.
@uunicorn uunicorn merged commit 95bdee3 into uunicorn:device/009a Jul 3, 2020
@uunicorn

uunicorn commented Jul 3, 2020

Copy link
Copy Markdown
Owner

Thanks!

dmitriy-myz added a commit to dmitriy-myz/python-validity that referenced this pull request May 28, 2026
Two changes, big payoff: AAB0 #0 went from 243/250 to 250/250 byte-exact
on the captured Wine enrollment frame. Average across 9 AAB0s improved
from ~94% to ~98%.

1. FILL was 128 (= the Q0 mid-gray byte value). DLL pads its 3×3 tiles
   with Q16 mid-gray = 0x800000 (= 8388608). Using 128 propagated through
   the doh convolution chain to non-padding pixels and changed NMS
   results in EDGE TILES (rows 2 and cols 2 of the 3×3 grid). With the
   fix, my port's tile 8 is byte-exact with captured F250 tile 8.

2. Corner-tile tightening in _a960_passes_global_edge: for tile
   (i=GRID-1, j=GRID-1) — bottom-right — cap gy at oy + last_row_step
   (= 102 exclusive for 112-px frame). Without this, my port keeps
   7 tile-8 kps with gy in [102, 108] that DLL drops. Empirically
   derived from 9-AAB0 enrollment capture; the kp orientation of these
   kps and the per-AAB0 gy_max in DLL's tile 8 (range 82-101) suggests
   the actual rule may be more nuanced (per-frame variable), but the
   exclusive `gy < oy + step` empirically catches most edge cases for
   the captured data.

Per-AAB0 byte-exact (gx, gy) match after fix:
  #0: 250/250  #1: 239/250  #2: 239/250  #3: 243/250  #4: 244/250
  uunicorn#5: 248/250  uunicorn#6: 249/250  uunicorn#7: 246/250  uunicorn#8: 246/250

Residual drift (1-11 per frame) is concentrated in TILE 8 (corner)
where DLL applies a per-frame gy cut whose rule isn't yet pinned down.
For example AAB0 #1 DLL keeps only 3 of ~12 high-resp tile-8 kps;
DLL's kept kps have gy ≤ 82 while my port's only_mine kps have gy
in [89, 101]. The cut isn't strict top-N or fixed gy threshold.

Diagnostic tools added:
  dev/find_edge_bound.py     - per-tile bound aggregator across all
                                AAB0s (lists observed gx/gy ranges)
  dev/try_per_tile_bound.py  - tests a per-tile bound filter against
                                my port's output

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants