Hi Timur, On Wed, Feb 28, 2018 at 12:41 PM, Timur Celik <clk...@gmail.com> wrote: > Hello everybody, > > I have already discussed this with Igor. There are two different bugs in the > assembling of frames. I think this needs some attention because it made > libfprint unusable for me and it affects all sensors. > > In forward mode every frame stores the delta from the previous frame, in > reverse mode it stores the delta to the next frame. This causes images to > use the wrong delta while assembling in forward mode. The resulting > stitching artifacts may be subtle when the movement was continuous, because > the deltas will be similar.
Thanks for report. I'll try to look into it this weekend. > --- > libfprint/assembling.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/libfprint/assembling.c b/libfprint/assembling.c > index 1052f99..bf2ff13 100644 > --- a/libfprint/assembling.c > +++ b/libfprint/assembling.c > @@ -279,11 +279,18 @@ struct fp_img *fpi_assemble_frames(struct > fpi_frame_asmbl_ctx *ctx, > do { > fpi_frame = stripe->data; > > - y += fpi_frame->delta_y; > - x += fpi_frame->delta_x; > + if(reverse) { > + y += fpi_frame->delta_y; > + x += fpi_frame->delta_x; > + } > > aes_blit_stripe(ctx, img, fpi_frame, x, y); > > + if(!reverse) { > + y += fpi_frame->delta_y; > + x += fpi_frame->delta_x; > + } > + > stripe = g_slist_next(stripe); > i++; > } while (i < stripes_len); > -- > 2.14.3 > > > The second bug is in reverse mode. The last image is always misplaced > because the sign of the delta vector isn't corrected. This bug is always be > visible. > > --- > libfprint/assembling.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/libfprint/assembling.c b/libfprint/assembling.c > index bf2ff13..0781006 100644 > --- a/libfprint/assembling.c > +++ b/libfprint/assembling.c > @@ -131,8 +131,8 @@ static unsigned int do_movement_estimation(struct > fpi_frame_asmbl_ctx *ctx, > > if (reverse) { > find_overlap(ctx, prev_stripe, cur_stripe, &min_error); > - prev_stripe->delta_y = -prev_stripe->delta_y; > - prev_stripe->delta_x = -prev_stripe->delta_x; > + cur_stripe->delta_y = -cur_stripe->delta_y; > + cur_stripe->delta_x = -cur_stripe->delta_x; > } > else > find_overlap(ctx, cur_stripe, prev_stripe, &min_error); > -- > 2.14.3 > > > I have opened a ticket on bugzilla > (https://bugs.freedesktop.org/show_bug.cgi?id=105027) and hope to see this > confirmed and merged soon. > > Timur > > _______________________________________________ > 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