Error Metric Clarification
Opened this issue · 0 comments
alexs7 commented
Hello,
Thanks for you work!
I have a question about the error metrics:
# Compute err_q and err_t only when R, t are not None
err_q, err_t = np.inf, np.inf
if (R_1_actual is not None) and (R_2_actual is not None) and (
t_1_actual is not None) and (t_2_actual is not None):
# Compute dR, dt (actual)
dR_act = np.dot(R_2_actual, R_1_actual.T)
dt_act = t_2_actual - np.dot(dR_act, t_1_actual)
# Get R, t from calibration information
R_1, t_1 = calib1['R'], calib1['T'].reshape((3, 1))
R_2, t_2 = calib2['R'], calib2['T'].reshape((3, 1))
# Compute ground truth dR, dt
dR = np.dot(R_2, R_1.T)
dt = t_2 - np.dot(dR, t_1)
# Save err_, err_t
err_q, err_t = evaluate_R_t(dR, dt, dR_act, dt_act)
Taken from: https://github.com/ubc-vision/image-matching-benchmark/blob/master/utils/colmap_helper.py#L156
Which one is the ground truth here ?
dR
and dt
seem to be but then you have dR_act
and dt_act
just above that are retrieved from COLMAP (which what you use for ground truth ?)
Also dR_act = np.dot(R_2_actual, R_1_actual.T)
is the rotation between R_2_actual
and R_1_actual
?
What is dt_act = t_2_actual - np.dot(dR_act, t_1_actual)
? If it is the difference why is t_1_actual
multiplied by dR_act
?
Thanks!