I confirm that this improves stitching. Especially with tall frames.
On Sat, Mar 3, 2018 at 12:07 AM Vasily Khoruzhick
wrote:
> Hi Timur,
>
> On Wed, Feb 28, 2018 at 12:41 PM, Timur Celik 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, _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, _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
>
___
fprint mailing list
fprint@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/fprint