<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1005278713;
        mso-list-type:hybrid;
        mso-list-template-ids:-246792960 536870927 536870937 536870939 536870927 536870937 536870939 536870927 536870937 536870939;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=en-DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>Hi Igor,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>I finally managed to test it.<br>The results however weren’t that great. I made 15 random fingerprint scans of my right index finger and none matched with any of the other ones (the maximum was 64%, while the maximum of a few scans of my left index finger was 57%).<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>I assume that the problem is indeed caused by the fact, that the algorithm currently expects exactly the same region of the fingerprint.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>I now have two solutions for this in my mind, however you might come up with a better one:<o:p></o:p></span></p><ol style='margin-top:0cm' start=1 type=1><li class=MsoListParagraph style='margin-left:0cm;mso-list:l0 level1 lfo1'><span lang=EN-GB style='mso-fareast-language:EN-US'>Assemble enrolled scans to one big print<br>-> I imagine this to be quite difficult, as we’d have to assemble two dimensional, while we’re already struggling assembling one dimensional<o:p></o:p></span></li><li class=MsoListParagraph style='margin-left:0cm;mso-list:l0 level1 lfo1'><span lang=EN-GB style='mso-fareast-language:EN-US'>Extract common regions<br>-> If I’m not mistaken you once suggested this, and it sounds for me like the best solution. I don’t know exactly how to do this, but I’ll take a look at it<o:p></o:p></span></li></ol><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>If you have a better idea, let me know.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>Regards<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>Timo<o:p></o:p></span></p><p class=MsoNormal><span lang=en-DE style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US>From:</span></b><span lang=EN-US> fprint <fprint-bounces@lists.freedesktop.org> <b>On Behalf Of </b>TeEmZe<br><b>Sent:</b> Sunday, 11 February 2018 00:07<br><b>To:</b> 'Igor Filatov' <ia.filatov@gmail.com><br><b>Cc:</b> fprint@lists.freedesktop.org<br><b>Subject:</b> Re: [fprint] elan patch + poc 0x903 and 0x0C03<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>Hi,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>Well, that’s the problem. Currently the orientations of blocks of 16x8 (those dimensions can be changed quite easily) pixels are compared. <br>That means that the orientation of the top left block of the enrolled fingerprint is compared to the direction of the top left block of the verify fingerprint.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>So it does work if you scan a slightly different area, but the bigger the difference, the lower the matching percentage.<br>However, I think this can be solved by having like 10 images from the enrol process with different regions of the fingerprint.<br>This would of course have to be tested and if 10 different regions of the finger aren’t enough, we’d probably have to find a different solution (for example you once suggested using the minutiae to extract common regions).<br>But I already tried it with one fingerprint, which matched well, so I think another solution isn’t required.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>Scanning multiple times and different regions of the fingerprint actually is quite common among other readers (like the ones of the mobile phones).<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>I’ll try to manage to test it myself soon, so that we’ll see how well it actually works.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>Kind regards<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB style='mso-fareast-language:EN-US'>Timo<o:p></o:p></span></p><p class=MsoNormal><span lang=en-DE style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=EN-US>From:</span></b><span lang=EN-US> Igor Filatov [<a href="mailto:ia.filatov@gmail.com">mailto:ia.filatov@gmail.com</a>] <br><b>Sent:</b> Saturday, 10 February 2018 23:45<br><b>To:</b> TeEmZe <<a href="mailto:timo@teemze.de">timo@teemze.de</a>><br><b>Cc:</b> <a href="mailto:fprint@lists.freedesktop.org">fprint@lists.freedesktop.org</a><br><b>Subject:</b> Re: [fprint] elan patch + poc 0x903 and 0x0C03<o:p></o:p></span></p><p class=MsoNormal><span lang=en-DE><o:p> </o:p></span></p><div><p class=MsoNormal><span lang=en-DE>Hi Timo,<o:p></o:p></span></p><div><p class=MsoNormal><span lang=en-DE><o:p> </o:p></span></p></div><div><p class=MsoNormal><span lang=en-DE>I'll only be able to test closer to the end of next week... Although I'm not sure I understand what you mean by "same region" here. Will it work if the images have , say, 70% overlap? Because we can't expect users to scan the very same area all the time. <o:p></o:p></span></p></div></div><p class=MsoNormal><span lang=en-DE><o:p> </o:p></span></p><div><div><p class=MsoNormal><span lang=en-DE>On Sat, Feb 10, 2018 at 11:12 PM TeEmZe <<a href="mailto:timo@teemze.de">timo@teemze.de</a>> wrote:<o:p></o:p></span></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>Hi,</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>I fixed the issue with differently sized images and managed to test it with another fingerprint, which shouldn’t match, and got 48%. This is good, as it means that it didn’t match. </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>I think the algorithm is at a state, at which testing is required – all that’s left to do is some parameter optimizing, and those might already be optimized enough for the real world.<br>Ok, that might not be 100%  true, as the image still has to be from the same region of the fingerprint, but this could be solved by taking multiple images at the enrol process and check all enrolled images for a match.</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>So I’d be happy if some people could test it so that we can soon implement the algorithm into the actual tool.</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>Kind regards</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>Timo</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span lang=EN-US>From:</span></b><span lang=EN-US> fprint [mailto:<a href="mailto:fprint-bounces@lists.freedesktop.org" target="_blank">fprint-bounces@lists.freedesktop.org</a>] <b>On Behalf Of </b>TeEmZe<br><b>Sent:</b> Friday, 9 February 2018 23:48<br><b>To:</b> 'Igor Filatov' <<a href="mailto:ia.filatov@gmail.com" target="_blank">ia.filatov@gmail.com</a>>; <a href="mailto:fprint@lists.freedesktop.org" target="_blank">fprint@lists.freedesktop.org</a></span><span lang=en-DE><o:p></o:p></span></p></div></div></div></div><div><div><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US><br><b>Subject:</b> Re: [fprint] elan patch + poc 0x903 and 0x0C03</span><span lang=en-DE><o:p></o:p></span></p></div></div></div></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>Hi Igor,</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>I implemented the basis of an algorithm – you can take a look at it <a href="https://github.com/MetaColon/Libfprint/tree/master/Algorithm" target="_blank">here</a>.<br>It is however far from finished or even optimised and is in need of some testing.<br>I however don’t currently have the possibility to test it, so I’m asking you whether you could test it and maybe take a look at the todos written as comments in the source code.</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>I had one image to test it with, and the result was 75%, which is good, as the paper I used as a reference said that it’s a match as soon as the percentage is above 70%.</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>Kind regards</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>Timo</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span lang=EN-US>From:</span></b><span lang=EN-US> fprint [<a href="mailto:fprint-bounces@lists.freedesktop.org" target="_blank">mailto:fprint-bounces@lists.freedesktop.org</a>] <b>On Behalf Of </b>Igor Filatov<br><b>Sent:</b> Friday, 9 February 2018 20:43<br><b>To:</b> <a href="mailto:fprint@lists.freedesktop.org" target="_blank">fprint@lists.freedesktop.org</a><br><b>Subject:</b> Re: [fprint] elan patch + poc 0x903 and 0x0C03</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE>Hi Timo,<o:p></o:p></span></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE>I've noticed this when working on the initial implementation - that rows at bottom and top are bad (and I've seen a number of scans sent by different people - it's never on the sides for some reason). That's why there was the frame_margin param which means "cut this many px from top and bottom". Actually, in recent commits this has changed and it just crops the frame to max 50px by height. Since assembly doesn't really work for frames higher than that.<o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE>But ultimately libfprint needs a different algo for small sensors. No getting around it. Telling people they need to swipe even though they see have a touch sensor isn't feasible and seems to already be failing in practice. I've trained myself to swipe reliably but still... don't want to spoil my karma with a driver that pretends to work but is hardly usable.<o:p></o:p></span></p></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt'><div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>Hi,</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>I might actually have another solution. </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>The fingerprint images, that are created by the swiping, are assembled out of multiple images, the reader got, right?<br>I now realized that each of those images seems to have about one or two rows of pixels at the top and at the bottom, which are simply black.<br>Those rows alter the image, so that similar fingers aren’t matching, as the rows are at different positions in the image if the finger was moved with a different speed – which is always the case.<br>So I think we should try changing the way we generate the image with the swipe movement by cropping each image, of which the final image is assembled, by two pixels at the top and the bottom.<br>I don’t know whether this solves all problems, but I can at imagine that it’d at least improve it.<br>I am however still working on an alternative algorithm, which uses cross correlation of field orientation, but I can imagine that this won’t be necessary anymore.</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>I don’t know the way you’re currently assembling the joined fingerprint image, so maybe someone who does could give this a try?<br>I’ll be happy to test it afterwards.</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>Kind regards</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB> </span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-GB>Timo</span><span lang=en-DE><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span lang=EN-US>From:</span></b><span lang=EN-US> fprint [mailto:<a href="mailto:fprint-bounces@lists.freedesktop.org" target="_blank">fprint-bounces@lists.freedesktop.org</a>] <b>On Behalf Of </b>wp12880529-timo wp12880529-timo<br><b>Sent:</b> Friday, 9 February 2018 03:30<br><b>To:</b> Hans de Goede <<a href="mailto:hdegoede@redhat.com" target="_blank">hdegoede@redhat.com</a>>; Sebastien Bechet <<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><b>Cc:</b> <a href="mailto:fprint@lists.freedesktop.org" target="_blank">fprint@lists.freedesktop.org</a></span><span lang=en-DE><o:p></o:p></span></p></div></div></div></div><div><div><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US><br><b>Subject:</b> Re: [fprint] elan patch + poc 0x903 and 0x0C03</span><span lang=en-DE><o:p></o:p></span></p></div></div></div></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p><p><span lang=en-DE>Hi Igor,<o:p></o:p></span></p><p><span lang=en-DE> <o:p></o:p></span></p><p><span lang=en-DE>I tried the new version, which doesn't seem to work significantly better - it detects about 50% of the tries. I think the best solution will be another algorithm, which I'm currently working on.<o:p></o:p></span></p><p><span lang=en-DE> <o:p></o:p></span></p><p><span lang=en-DE>Kind regards<o:p></o:p></span></p><p><span lang=en-DE> <o:p></o:p></span></p><p><span lang=en-DE>Timo<o:p></o:p></span></p><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt'><span lang=en-DE>Igor Filatov <<a href="mailto:ia.filatov@gmail.com" target="_blank">ia.filatov@gmail.com</a>> hat am 4. Februar 2018 um 16:07 geschrieben: <o:p></o:p></span></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE>Hi everybody,<o:p></o:p></span></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE>Base on the new info I got I've updated the driver in a few places:<o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE>1. Frames are cropped to 30px by height. I've received some examples of images from 96px readers and it seems that the assembling procedure just doesn't work for frames of greater height. I _think_ this is largely because the skin stretches and deforms in a non-uniform way when you swipe. E.g. the same part of the print is slightly different when it's near the bottom of the frame than when it's near the top. Plus, there often seem to be sensor artifacts near the edges, so.<o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE>2. Sensor reset is out. Devices do it when they power up. I'm not entirely sure that it's absolutely not needed, though. I'm thinking about suspend & resume, for one. But anyway, I've used my reader for long without any reset and I'm suspending all the time and I haven't had any problems because of it.<o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE>3. Some changes around calibration. You can get a calibration status of 0x01 (ongoing) and 0x03 (completed) from the device. But I've noticed that very often the first response I get is 0x03, which later (~100 ms) changes to 0x01, then back to 0x03. So now to make sure it actually completes, the driver first wants to see 0x01 at least once and then it waits for 0x03.<o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE>4. KT has recommended a different frame extraction algo. First we subtract the background which we got during calibration. This helps quite significantly. Then we split values into 3 groups and apply a different transformation to each group (see comments for detail). And this seems to give slightly worse results on my reader than simple linear scaling like there was before. So I've left both methods and it's possible to configure the method for each device. YMMV.<o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE>Please see if it now works better/same/worse for you. I think verification is now slightly better on my device but I need to use it for a couple of days to know.<o:p></o:p></span></p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=en-DE> <o:p></o:p></span></p></div></blockquote></div></div></blockquote></div></blockquote></div></div></div></div></blockquote></div></div></body></html>