Daniel Drake wrote :
> wxCover wrote:
>> Hi!
>> Here comes a patch that should solve a few problems with aes1610. The 
>> changelog:
>> -Fixed seg fault when you don't move your finger on the sensor
>> -bz threshold is now 10 (instead of 15). I think it is ok for the 
>> moment. If we manage to get higher image quality in the future, we'll 
>> change that.
>
> I'm a little concerned at the increased risk of false acceptance, but
> OK, this will do for now :)
>
>> -max_frame is set to 350. 150 was too low => incomplete fingerprints
>> -the driver was designed to stop the acquisition as soon as it gets a 
>> blank frame (=> incomplete fingerprints). Now it waits to have at 
>> least 50 blank frames before stopping.
>
> 50 seems a bit excessive, but I suppose it scans quite quickly.
I've tried 30 but it was not enough. Anyway, this may change in the future.
>> Daniel, I'd like to look at the image quality. Can you tell me what 
>> you think about that? What step do you think is problematic? I only 
>> have images from my reader so it's not very easy to see what is wrong 
>> and what is ok.
>
> The image quality looks fine from what I could see before. Minutia
> detection also seemed near perfect, i.e. my eyes could not do better.
> The problem appears to be in the minutiae set comparison code which is
> called bozorth3 (bz3).
>
> The match score that bozorth3 produces is in some way related to the
> number of minutiae that it could match up. So the fact that you are
> getting only 10-15 minutia per scan makes achieving higher match 
> scores quite unrealistic.
>
> The next steps are to investigate bozorth3 and see how we can adjust 
> the scoring system to be more appropriate here. It may turn out that 
> it only works well with large numbers of minutiae by-design, in which 
> case we could implement a separate matching algorithm for the smaller 
> sensors.
Ok, I understand that.
> As for images from other devices, each driver page of the wiki 
> includes an image (for the devices that I have which present images to 
> the computer), and there are various AES2501 prints on the fprint_demo 
> wiki page.
I hadn't seen. sorry! I should really explore the entire site!
>> I've begun working on the gain. I'm trying to understand how it works 
>> from my logs. I hope I'll be able to make a patch for this soon...
>
> If you write some code as a result, please use inline comments to
> document your understanding. It is likely that the solutions for aes2501
> and aes4000 will be similar.
Yes, I'll document this (as I've done for what I know about the rest of 
the protocol)
> Some comments on the patch below:
> (please also use the -p flag to diff in future)
>
Ok
>> diff -aburN ../lib/libfprint/drivers/aes1610.c 
>> ./libfprint/drivers/aes1610.c
>> --- ../lib/libfprint/drivers/aes1610.c    2007-11-26 
>> 16:43:27.000000000 +0100
>> +++ ./libfprint/drivers/aes1610.c    2007-11-26 16:41:59.000000000 +0100
>> @@ -521,9 +504,7 @@
>>      memcpy(imgptr, buf + 1, 128*4);
>>      imgptr += 128*4;
>>  
>> -    for (nstrips = 0; nstrips < MAX_FRAMES; nstrips++) {
>> -        int threshold;
>> -
>> +    for (nstrips = 2; nstrips < MAX_FRAMES - 2; nstrips++) {
>
> Why 2? Is this because you captured 2 strips immediately before the
> loop? If so, why aren't those initial 2 captures inside the loop?
Yes, this is for that reason. I think I'll move it to the loop sooner or 
later. For now, I leave it here as I'm not sure about the number of 
strips we should capture between every gain adjustement. I'll fix it 
with gain stuff. I think.
>>          r = write_regv(dev, strip_scan_reqs, 
>> G_N_ELEMENTS(strip_scan_reqs));
>>          if (r < 0)
>>              goto err;
>> @@ -585,6 +573,12 @@
>>          fp_dbg("reversed scan direction");
>>      }
>>  
>> +    // img->height must be >= 12 (if not, we get seg fault)
>> +    // img->height = 8 when we don't move the finger on the sensor
>> +    // We set it to 12 to avoid a crash.
>> +    if (img->height < 12)
>> +        img->height = 12;
>> +   
>
> Why 12? Where does the segfault happen?
12 because this is the minimum to avoid the segfault. This is a dirty 
fix! The segfault happens on line 132 of libfprint/nbis/mindtct/maps.c.
>>      for (i = 0; i < img->height * FRAME_WIDTH; i++)
>>          img->data[i] = (cooked[i] << 4) | 0xf;
>>  
>> diff -aburN ../lib/patch_aes1610.patch ./patch_aes1610.patch
>> --- ../lib/patch_aes1610.patch    1970-01-01 01:00:00.000000000 +0100
>> +++ ./patch_aes1610.patch    2007-11-26 16:46:18.000000000 +0100
>> @@ -0,0 +1,105 @@
>> +diff -aburN ../lib/libfprint/drivers/aes1610.c 
>> ./libfprint/drivers/aes1610.c
>> +--- ../lib/libfprint/drivers/aes1610.c    2007-11-26 
>> 16:43:27.000000000 +0100
>> ++++ ./libfprint/drivers/aes1610.c    2007-11-26 16:41:59.000000000 
>> +0100
>> +@@ -58,7 +58,7 @@
>
> Looks like some junk was included in your patch.
Don't know what happened. I'll check it the next time!
> Thanks!
> Daniel
>
_______________________________________________
fprint mailing list
[email protected]
http://lists.reactivated.net/mailman/listinfo/fprint

Reply via email to