Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get rotation, translation, shear from a 3x3 Homography matrix in c#

I calculated the 3x3 homography matrix and I need to get rotation, translation, shear and scale to use them as parameters in the windows8 media element attributes ?!

like image 294
Mohamed Magdy Avatar asked Feb 17 '23 04:02

Mohamed Magdy


1 Answers

see https://math.stackexchange.com/questions/78137/decomposition-of-a-nonsquare-affine-matrix

def getComponents(normalised_homography):
  '''((translationx, translationy), rotation, (scalex, scaley), shear)'''
  a = normalised_homography[0,0]
  b = normalised_homography[0,1]
  c = normalised_homography[0,2]
  d = normalised_homography[1,0]
  e = normalised_homography[1,1]
  f = normalised_homography[1,2]

  p = math.sqrt(a*a + b*b)
  r = (a*e - b*d)/(p)
  q = (a*d+b*e)/(a*e - b*d)

  translation = (c,f)
  scale = (p,r)
  shear = q
  theta = math.atan2(b,a)

  return (translation, theta, scale, shear)
like image 50
Tom Larkworthy Avatar answered Apr 30 '23 21:04

Tom Larkworthy