From 71e4bb39ec214883bc707b5ba2b95423f1fd05b6 Mon Sep 17 00:00:00 2001 From: Daniel Drake Date: Fri, 9 Nov 2007 14:57:42 +0000 Subject: [PATCH] Allow drivers to specify custom bz3 match threshold aes4000 detects fewer minutiae and hence returns lower scores. --- libfprint/drivers/aes4000.c | 3 +++ libfprint/fp_internal.h | 1 + libfprint/imgdev.c | 9 ++++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libfprint/drivers/aes4000.c b/libfprint/drivers/aes4000.c index 58e1e76..8198132 100644 --- a/libfprint/drivers/aes4000.c +++ b/libfprint/drivers/aes4000.c @@ -220,6 +220,9 @@ struct fp_img_driver aes4000_driver = { .img_width = 96, .enlarge_factor = 3, + /* temporarily lowered until image quality improves */ + .bz3_threshold = 9, + .init = dev_init, .exit = dev_exit, .capture = capture, diff --git a/libfprint/fp_internal.h b/libfprint/fp_internal.h index f32fc55..3ed42f2 100644 --- a/libfprint/fp_internal.h +++ b/libfprint/fp_internal.h @@ -127,6 +127,7 @@ struct fp_img_driver { int img_width; int img_height; unsigned int enlarge_factor; + int bz3_threshold; /* Device operations */ int (*init)(struct fp_img_dev *dev, unsigned long driver_data); diff --git a/libfprint/imgdev.c b/libfprint/imgdev.c index 6ccfd65..d8d651a 100644 --- a/libfprint/imgdev.c +++ b/libfprint/imgdev.c @@ -186,12 +186,16 @@ int img_dev_enroll(struct fp_dev *dev, gboolean initial, int stage, return FP_ENROLL_COMPLETE; } +#define BOZORTH3_DEFAULT_THRESHOLD 40 + static int img_dev_verify(struct fp_dev *dev, struct fp_print_data *enrolled_print) { struct fp_img_dev *imgdev = dev->priv; + struct fp_img_driver *imgdrv = fpi_driver_to_img_driver(dev->drv); struct fp_img *img; struct fp_print_data *print; + int match_score = imgdrv->bz3_threshold; int r; r = fpi_imgdev_capture(imgdev, 0, &img); @@ -209,11 +213,14 @@ static int img_dev_verify(struct fp_dev *dev, return FP_VERIFY_RETRY; } + if (match_score == 0) + match_score = BOZORTH3_DEFAULT_THRESHOLD; + r = fpi_img_compare_print_data(enrolled_print, print); fp_print_data_free(print); if (r < 0) return r; - if (r >= 40) + if (r >= match_score) return FP_VERIFY_MATCH; else return FP_VERIFY_NO_MATCH;