cv2.estimateRigidTransform with fullAffine = False - PullRequest
0 голосов
/ 10 ноября 2018

Согласно документации cv2.estimateRigidTransform имеет параметр fullAffine:

fullAffine - если true, функция находит оптимальное аффинное преобразование без дополнительных ограничений (6 степенейсвобода).В противном случае класс преобразований на выбор ограничен комбинациями перемещения, поворота и равномерного масштабирования (5 степеней свободы).

Я не понимаю, что подразумевается под 5 степенями свободыНасколько я понимаю, перевод, вращение и равномерное масштабирование могут быть выполнены с 4 переменными (дополнительная информация здесь http://nghiaho.com/?p=2208)

  1. По 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 уникальных значения):

enter image description here

Другой вопрос, как разложить матрицу m на матрицы вращения, масштабирования и перевода, т.е. m = R*T*S?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...