<div dir="ltr">From what I understand, you need to compare big images to big images for the minutiae algo to work good. If the verification images are small, they simply won't have enough minutiae. <div><br></div><div>I think Hans had a good point when he mentioned that the existing stitching code could be used. libfprint has the advantage that it doesn't guarantee interoperability between different scanners - that you can enroll with one scanner and verify with another. It doesn't need to have a very generic algorithm like the ones that academic papers focus on. The same device (and we're not even talking about the same model - it's the same physical device) produces very similar images all the time. There is already a method to score an overlap of 2 images that's used for stitching. If the rotation is taken care of, the rest should be possible. I was at some point thinking whether minutiae can be used as sort of "anchor points" to find approximate coordinates and angle (e.g. we have 3 similar minutiae which is not enough to compare but we can match their coordinates on 2 scans and use them to check for overlap).</div><div><br></div><div>This would still benefit greatly from an improved enrollment procedure, though. I imagine the one where you tap the sensor instead of swiping, as swiping stretches the skin and distorts the image. Such enrollment would also need to compare frames along x, y and account for rotation...</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jan 30, 2018 at 2:40 AM Vasily Khoruzhick <<a href="mailto:anarsoul@gmail.com">anarsoul@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I suggest improving enrollment procedure. It should stitch big image<br>
from several small images and use it later for comparison (using<br>
whatever algorithm - minutiae algo also may work).<br>
<br>
On Mon, Jan 29, 2018 at 7:38 AM, Hans de Goede <<a href="mailto:hdegoede@redhat.com" target="_blank">hdegoede@redhat.com</a>> wrote:<br>
> Hi,<br>
><br>
> On 23-01-18 22:58, Igor Filatov wrote:<br>
>><br>
>> I've updated the driver to support the devices known so far. Please see if<br>
>> it works for you. Please send me your logs if not. I've enabled all commands<br>
>> for all devices (except 0x4031 which I've enabled only on my 0x0907 -- no<br>
>> idea what it does, but the response is 0x01).<br>
>><br>
>> There's a bit mask in each command which you can use to enable/disable<br>
>> commands for a particular device.<br>
>><br>
>> As for calibration, the driver doesn't expect 0x03 because not all devices<br>
>> seem to return 0x03 or 0x01. Instead it will retry *only* if the response is<br>
>> 0x03 and until it's different.<br>
>><br>
>> I've enabled reset & fuse load for my device. Although I haven't seen it<br>
>> done by the original driver, it doesn't seem to hurt. So please see if it<br>
>> cause problems for you. Let's disable it only for devices where it does.<br>
>><br>
>> <a href="https://github.com/iafilatov/libfprint" rel="noreferrer" target="_blank">https://github.com/iafilatov/libfprint</a><br>
><br>
><br>
> This works for me with both the 0c16 and 0c26 readers I've access too.<br>
><br>
> But we really need someone (any takers?) to implement a different type<br>
> of recognition algorithm for these, not using minutia and then not treat<br>
> them as swipe readers. Basically what we need is some form of image<br>
> correlation<br>
> algorithm. Perhaps the stitching code (which does not seem to do a very good<br>
> job IMHO) can be used, to see if 2 images can be made to mostly overlap<br>
> with an acceptable shift.<br>
><br>
> Note that when I last looking into this I did a quick duckduckgo search<br>
> on low resolution fingerprint recognition and there are a number of<br>
> academic papers on how this can be done using image correlation, so<br>
> ideally some-one would go and implement something like this.<br>
><br>
> Regards,<br>
><br>
> Hans<br>
><br>
>> On Fri, Jan 19, 2018 at 3:33 PM TeEmZe <<a href="mailto:timo@teemze.de" target="_blank">timo@teemze.de</a><br>
>> <mailto:<a href="mailto:timo@teemze.de" target="_blank">timo@teemze.de</a>>> wrote:<br>
>><br>
>> Hi,<br>
>><br>
>> Sadly I won't be able to get the data until next week, as I currently<br>
>> don't have access to the Laptop. I'll notify you as soon as I manage to get<br>
>> the data.<br>
>><br>
>> Regards,<br>
>><br>
>> Timo<br>
>><br>
>> -----Original Message-----<br>
>> From: Hans de Goede [mailto:<a href="mailto:hdegoede@redhat.com" target="_blank">hdegoede@redhat.com</a><br>
>> <mailto:<a href="mailto:hdegoede@redhat.com" target="_blank">hdegoede@redhat.com</a>>]<br>
>> Sent: Thursday, 18 January 2018 16:14<br>
>> To: Sebastien Bechet <<a href="mailto:sebastien.bechet@osinix.com" target="_blank">sebastien.bechet@osinix.com</a><br>
>> <mailto:<a href="mailto:sebastien.bechet@osinix.com" target="_blank">sebastien.bechet@osinix.com</a>>>; Igor Filatov <<a href="mailto:ia.filatov@gmail.com" target="_blank">ia.filatov@gmail.com</a><br>
>> <mailto:<a href="mailto:ia.filatov@gmail.com" target="_blank">ia.filatov@gmail.com</a>>><br>
>> Cc: TeEmZe <<a href="mailto:timo@teemze.de" target="_blank">timo@teemze.de</a> <mailto:<a href="mailto:timo@teemze.de" target="_blank">timo@teemze.de</a>>>;<br>
>> <a href="mailto:konachan.700@gmail.com" target="_blank">konachan.700@gmail.com</a> <mailto:<a href="mailto:konachan.700@gmail.com" target="_blank">konachan.700@gmail.com</a>>;<br>
>> <a href="mailto:fprint@lists.freedesktop.org" target="_blank">fprint@lists.freedesktop.org</a> <mailto:<a href="mailto:fprint@lists.freedesktop.org" target="_blank">fprint@lists.freedesktop.org</a>><br>
>> Subject: Re: [fprint] elan patch + poc 0x903 and 0x0C03<br>
>><br>
>> Hi,<br>
>><br>
>> On 18-01-18 16:03, Sebastien Bechet wrote:<br>
>> > Thank you Igor. Hans, you can try again with last version.<br>
>><br>
>> Not tested, but looking at the code, it will loop in the calibration,<br>
>> my 2 devices both need a:<br>
>><br>
>> if (result == 0x03) break;<br>
>><br>
>> Directly after the:<br>
>><br>
>> printf("Calibration Status: 0x%x\n", result);<br>
>><br>
>> Line, currently the code only checks for result == 0x03 for the result<br>
>> of the get_cmd_status command, while it should check (for my devices) the<br>
>> result of the get_cmd_calibration command.<br>
>><br>
>> Regards,<br>
>><br>
>> Hans<br>
>><br>
>><br>
>><br>
>> ><br>
>> > I also tried to remove reset+fuseload then calibration not working<br>
>> > anymore for 0x0903. It seems it is a part for calibration (same pdf<br>
>> > file for reset _and_ calibration or .... reset _then_<br>
>> calibration?).<br>
>> ><br>
>> > <a href="https://github.com/sbechet/elanfp" rel="noreferrer" target="_blank">https://github.com/sbechet/elanfp</a><br>
>> ><br>
>> > Konata and timo, can you give us width, height, firmware version<br>
>> and<br>
>> > calibration status using elanfp.c please?<br>
>><br>
>><br>
>> ><br>
>> ><br>
>> ><br>
>> > Le jeudi 18 janvier 2018 à 14:02 +0000, Igor Filatov a écrit :<br>
>> >>> square and seems to contain the image 3 times<br>
>> >> Could be because convert is hardcoded at 96x96.<br>
>> >><br>
>> >> On Thu, 18 Jan 2018, 12:04 Hans de Goede, <<a href="mailto:hdegoede@redhat.com" target="_blank">hdegoede@redhat.com</a><br>
>> <mailto:<a href="mailto:hdegoede@redhat.com" target="_blank">hdegoede@redhat.com</a>>><br>
>><br>
>> >> wrote:<br>
>> >>> Hi,<br>
>> >>><br>
>> >>> On 18-01-18 10:48, Sébastien Béchet wrote:<br>
>> >>>> On 17-01-18 19:21, Igor Filatov wrote:<br>
>> >>>>> We didn't have the spec before so I had no idea how different<br>
>> >>> devices worked. Especially given that some commands which worked<br>
>> >>> fine for me produced errors one other devices. Now that we have<br>
>> the<br>
>> >>> docs I'll work on adapting the driver. Naturally, any info you<br>
>> have<br>
>> >>> is welcome and so is any help with testing.<br>
>> >>>><br>
>> >>>> I have done the<br>
>> [synthesis](<a href="https://github.com/sbechet/elanfp/blo" rel="noreferrer" target="_blank">https://github.com/sbechet/elanfp/blo</a><br>
>> >>> b/master/README.md) about all informations we have a prepare<br>
>> >>> questions for KT.<br>
>> >>><br>
>> >>> My 0x0c16 id reader has firmware version 1.56, resolution 96x96<br>
>> >>><br>
>> >>> I also have bought a stand-alone USB reader for when I would find<br>
>> >>> time to work on this, this has an usb-id of: 0x0c26.<br>
>> >>><br>
>> >>> After aking these changes:<br>
>> >>><br>
>> >>> --- elanfp.c~ 2018-01-18 10:58:59.919912347 +0100<br>
>> >>> +++ elanfp.c 2018-01-18 11:01:50.346280668 +0100<br>
>> >>> @@ -71,7 +71,8 @@<br>
>> >>> (desc.idVendor == 0x04f3) && (desc.idProduct<br>
>> ==<br>
>> >>> 0x0903) ||<br>
>> >>> (desc.idVendor == 0x04f3) && (desc.idProduct<br>
>> ==<br>
>> >>> 0x0907) ||<br>
>> >>> (desc.idVendor == 0x04f3) && (desc.idProduct<br>
>> ==<br>
>> >>> 0x0c03) ||<br>
>> >>> - (desc.idVendor == 0x04f3) && (desc.idProduct ==<br>
>> >>> 0x0c16) ) {<br>
>> >>> + (desc.idVendor == 0x04f3) && (desc.idProduct ==<br>
>> >>> 0x0c16) ||<br>
>> >>> + (desc.idVendor == 0x04f3) && (desc.idProduct ==<br>
>> >>> 0x0c26) ) {<br>
>> >>> r0 = 0;<br>
>> >>> printf("Device with vid %x pid %x found.\n",<br>
>> >>> desc.idVendor, desc.idProduct);<br>
>> >>> break;<br>
>> >>> @@ -156,7 +157,7 @@<br>
>> >>> printf("CMD Get Image Size sent\n");<br>
>> >>> }<br>
>> >>> r0 = libusb_bulk_transfer(handle, BULK_EP3_IN, img_buf, 4,<br>
>> >>> &transferred, 0);<br>
>> >>> - printf("Width x height = %dx%d\n", img_buf[0], img_buf[2]);<br>
>> >>> + printf("Width x height = %dx%d\n", (unsigned<br>
>> char)img_buf[0],<br>
>> >>> (unsigned char)img_buf[2]);<br>
>> >>><br>
>> >>> /* calibration */<br>
>> >>><br>
>> >>> @@ -180,6 +181,7 @@<br>
>> >>> }<br>
>> >>> r0 = libusb_bulk_transfer(handle, BULK_EP3_IN,<br>
>> &result,<br>
>> >>> 1, &transferred, 0);<br>
>> >>> printf("Calibration Status: 0x%x\n", result);<br>
>> >>> + if (result == 0x03) break;<br>
>> >>><br>
>> >>> r0 = libusb_bulk_transfer(handle, BULK_EP1_OUT,<br>
>> >>> get_cmd_status, 2, &transferred, 0);<br>
>> >>> if((r0 == 0) && (transferred == 2)) {<br>
>> >>><br>
>> >>> This one works with the POC too, although for some reason the<br>
>> >>> generated out.png is square and seems to contain the image 3<br>
>> times?<br>
>> >>><br>
>> >>> This one has firmware version 1.64, resolution 64x144 and as<br>
>> shown<br>
>> >>> in the necessary changes this one does report a calibration<br>
>> status<br>
>> >>> of 0x03 when it is done with the calibration, I think we should<br>
>> add<br>
>> >>> an extra column for this to the hardware report table.<br>
>> >>><br>
>> >>> Regards,<br>
>> >>><br>
>> >>> Hans<br>
>><br>
> _______________________________________________<br>
> fprint mailing list<br>
> <a href="mailto:fprint@lists.freedesktop.org" target="_blank">fprint@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/fprint" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/fprint</a><br>
</blockquote></div>