compute inverse only once
parent
7dab718861
commit
0ae5a92d42
|
@ -127,16 +127,19 @@ Point2 Cal3Bundler::calibrate(const Point2& pi,
|
|||
// Dcal = -inv(H_uncal_pn) * df/pi = -inv(H_uncal_pn) * (-I) = inv(H_uncal_pn)
|
||||
// Dp = -inv(H_uncal_pn) * df/K = -inv(H_uncal_pn) * H_uncal_K
|
||||
Matrix23 H_uncal_K;
|
||||
Matrix22 H_uncal_pn;
|
||||
Matrix22 H_uncal_pn, H_uncal_pn_inv;
|
||||
|
||||
if (Dcal || Dp) {
|
||||
// Compute uncalibrate Jacobians
|
||||
uncalibrate(pn, Dcal ? &H_uncal_K : nullptr, H_uncal_pn);
|
||||
|
||||
if (Dp) *Dp = H_uncal_pn.inverse();
|
||||
if (Dcal) *Dcal = -H_uncal_pn.inverse() * H_uncal_K;
|
||||
H_uncal_pn_inv = H_uncal_pn.inverse();
|
||||
|
||||
if (Dp) *Dp = H_uncal_pn_inv;
|
||||
if (Dcal) *Dcal = -H_uncal_pn_inv * H_uncal_K;
|
||||
|
||||
}
|
||||
|
||||
return pn;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue