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