File Exchange

image thumbnail

2D Homography Matrix Decomposition Using Polar Decomposition

version 1.0 (3.91 KB) by

2D Homography Matrix Decomposition Using Polar Decomposition



This is a MATLAB MEX implementaion.
A 2D homography matrix M can be meaningful primitive components, as

H = RSN = R(UKU')N

where R is a rotation matrix, N is ±I, and S is a symmetric positive definite stretch matrix. The stretch matrix can optionally be factored, though not uniquely, as UKU', where U is a rotation matrix and K is diagonal and positive. N can be multiplied into S if desired.

Copyright 2017 Han Gong, Unviersity of East Anglia

Reference: Shoemake, Ken, and Tom Duff. "Matrix animation and polar decomposition." In Proceedings of the conference on Graphics interface, vol. 92, pp. 258-264. 1992.


$ make


[r,u,k,n] = TransformDecompose(H);

Note that the rotation r and u are returend in quaternion parameter form. Use quat2rotm to convert a quaternion to a rotation matrix. k is the diagnal elements of the diagnal matrix K. n is a sign paramter (-1 or 1). Please also see "Demo.m" for the usage of 2D homographical change interpolation.

Comments and Ratings (0)

MATLAB Release
MATLAB 8.0 (R2012b)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Win prizes and improve your MATLAB skills

Play today