jacobian in LM optimization in findhomography

asked 2018-07-27 03:33:11 -0500

updated 2018-07-27 04:23:45 -0500

Eduardo gravatar image

I'm trying to understand the code of findhomography function, while for the pose refine after ransac/prosac, ie. the createLMSolver(makePtr<HomographyRefineCallback>(src, dst), 10)->run(H8); line in findHomography() function, I'm confused about the computation of the jacobian (in the compute() function of HomographyRefineCallback when implementing the LM solver:

Jptr[0] = Mx*ww; Jptr[1] = My*ww; Jptr[2] = ww;
Jptr[3] = Jptr[4] = Jptr[5] = 0.;
Jptr[6] = -Mx*ww*xi; Jptr[7] = -My*ww*xi;
Jptr[8] = Jptr[9] = Jptr[10] = 0.;
Jptr[11] = Mx*ww; Jptr[12] = My*ww; Jptr[13] = ww;
Jptr[14] = -Mx*ww*yi; Jptr[15] = -My*ww*yi;

The source and dest points are 2d points, and the homography matrix to refine is a 3*3 matrix (opencv sets the last element to 1, so h has 8 elements here), so why the jacobian here has 16 elements? Could anyone explain it, or provide the original paper on this solution here?


edit retag flag offensive close merge delete