Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于使用Gauss-Newton求解过程中,雅克比矩阵J的构造 #3

Open
HuColin opened this issue Nov 28, 2019 · 1 comment
Open

Comments

@HuColin
Copy link

HuColin commented Nov 28, 2019

PnP_Solver/pnp_solver.cpp

Lines 530 to 534 in 835e358

// [B11 B12 B22 B13 B23 B33 B14 B24 B34 B44]
J ( i, 0 ) = 2 * betas[0] * L ( i, 0 ) + betas[1]* L ( i, 1 ) + betas[2]*L ( i, 3 ) + betas[3]*L ( i, 6 );
J ( i, 1 ) = betas[0] * L ( i, 1 ) + 2 * betas[1]* L ( i, 2 ) + betas[2]*L ( i, 3 ) + betas[3]*L ( i, 7 );
J ( i, 2 ) = betas[0] * L ( i, 3 ) + betas[1]* L ( i, 4 ) + 2 * betas[2]*L ( i, 5 ) + betas[3]*L ( i, 8 );
J ( i, 3 ) = betas[0] * L ( i, 6 ) + betas[1]* L ( i, 7 ) + betas[2]*L ( i, 8 ) + 2 * betas[3]*L ( i, 9 );

作者您好,我从您的知乎[PnP]PnP问题之EPnP解法这篇文章过来的,关于使用Gauss-Newton求解文章中公式19,您在文章中构造的雅克比矩阵J的形式如下:
image
image
但是似乎在您给出的代码中,关于J矩阵中的各个系数似乎并不全为2,似乎是下面这种形式:
image
哪一种写法是正确的呢?

@JiChun-Wang
Copy link

L ( i, 0 ) = S1_T * S1; L ( i, 1 ) = 2 * S1_T * S2; L ( i, 2 ) = S2_T * S2; L ( i, 3 ) = 2 * S1_T * S3; L ( i, 4 ) = 2 * S2_T * S3; L ( i, 5 ) = S3_T * S3; L ( i, 6 ) = 2 * S1_T * S4; L ( i, 7 ) = 2 * S2_T * S4; L ( i, 8 ) = 2 * S3_T * S4; L ( i, 9 ) = S4_T * S4;
在构造L的时候已经乘以2了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants