FINGERQUALITYAPI / README.md
sol9x-sagar's picture
initial setup
e735bf3
metadata
title: Flask Finger Quality API
sdk: docker
app_port: 7860

Here is how to read each score and why some “good-looking” images still fail overall.


1. What each score means

These ranges are based on the thresholds used in the code you ran (blur_min=80, illum_min=60, illum_max=200, coverage_min=0.10, orientation_max_deviation=30, vertical_expected=True).

Blur score (variance of Laplacian)

  • Metric: “How sharp is the finger texture?” Higher is better.
  • Rough scale (with current threshold 80):
    • 0–30 → Very blurry (fail).
    • 30–60 → Soft / borderline sharpness (often fail, might be visually OK).
    • 80–200 → Good sharpness for most mobile cases (pass).
    • 200+ → Very sharp (pass).

Illumination score (mean grayscale in ROI)

  • Metric: “Average brightness of the finger region.”
  • Thresholds now: 60 ≤ illumination ≤ 200.
  • Rough interpretation:
    • < 50 → Too dark / underexposed (fail).
    • 50–200 → Acceptable brightness (pass).
    • 200 → Too bright / overexposed (fail).

Coverage ratio

  • Metric: “Fraction of the full frame covered by segmented finger pixels.”
  • Threshold now: coverage ≥ 0.10 (10% of frame).
  • Rough interpretation:
    • < 0.10 → Finger too small, far away, or segmentation bad (fail).
    • 0.10–0.20 → Minimum acceptable; finger is present but not very large.
    • ≥ 0.20–0.40 → Good coverage for biometric capture (pass).

Orientation angle

  • Metric: PCA angle of the main axis of the finger ROI, in degrees relative to x‑axis, normalized to about −90° to 90°.
  • With vertical_expected=True, the code expects the finger to be vertical (angle near ±90°).
  • Threshold now: within 30° of the expected orientation.
    • If vertical expected:
      • Angles near +90° or −90° → good.
      • Big deviation from vertical → fail. Deviation allowed - 45°
    • If horizontal finger is desired, you would set vertical_expected=False to expect angles near 0°.