Для каждого кадра у меня есть несколько objp, imgp, где imgp — обнаруженные точки цели калибровки. Я использую их для вычисления внешних показателей [R|t] (с помощью cv2.solvePnP).
Как мне усреднить все эти данные? Если я правильно понимаю, я не могу просто выполнить усреднение кватернионов и усреднение перевода на необработанных результатах cv2.solvePnP, поскольку - когда цель вращается и перемещается - система отсчета будет другой.
Сначала я попробовал изменить систему отсчета, как показано ниже:
Код: Выделить всё
def get_extrinsics_fixed_to_global_reference(R_ref, t_ref, R_other, t_other):
# Get the extrinsics of the other camera in the reference camera's coordinate system
R = R_other @ R_ref.T
t = t_other - R @ t_ref
return R, t
Изменить: Чтобы уточнить, моя идея заключалась в том, чтобы по существу сравнить результирующие преобразования между системами координат cam_0 и cam_k для k > 0. Для каждого набора кадров (соответствующего калибровочной цели, наклоненной определенным образом) я получаю набор указанных преобразований (
Код: Выделить всё
cam_0 -> cam_kПодробнее здесь: https://stackoverflow.com/questions/792 ... d-at-diffe
Мобильная версия