Согласно документации cv2.estimateRigidTransform
имеет параметр fullAffine
:
fullAffine - если true, функция находит оптимальное аффинное преобразование без дополнительных ограничений (6 степенейсвобода).В противном случае класс преобразований на выбор ограничен комбинациями перемещения, поворота и равномерного масштабирования (5 степеней свободы).
Я не понимаю, что подразумевается под 5 степенями свободыНасколько я понимаю, перевод, вращение и равномерное масштабирование могут быть выполнены с 4 переменными (дополнительная информация здесь http://nghiaho.com/?p=2208)
- По
uniform scaling
они означают, что масштаб x и y будет одинаковым?
Я пробовал
print('cv2.__version__', cv2.__version__)
m = cv2.estimateRigidTransform(_prev_pts, _curr_pts, fullAffine=False)
print('m.shape', m.shape)
print('m',m)
Вывод:
cv2.__version__ 3.4.3
m.shape (2, 3)
m [[ 1.00165841e+00 -2.10742695e-04 4.28874117e+00]
[ 2.10742695e-04 1.00165841e+00 1.23242652e+00]]
Вывод выглядит так, как указано в документации (4 уникальных значения):
Другой вопрос, как разложить матрицу
m
на матрицы вращения, масштабирования и перевода, т.е.
m = R*T*S
?