From: <HIDDEN>
Newsgroups: comp.soft-sys.matlab
Subject: Re: Homogeneous transform (angles required, matrix not given)
Date: Sat, 24 Jan 2009 20:35:03 +0000 (UTC)
Organization: The MathWorks, Inc.
Lines: 21
Message-ID: <glfu1n$8mv$>
References: <glcep2$jj1$> <glfnfm$3eu$> <glfqmp$267$> <glfrf5$kdl$>
Reply-To: <HIDDEN>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: 1232829303 8927 (24 Jan 2009 20:35:03 GMT)
NNTP-Posting-Date: Sat, 24 Jan 2009 20:35:03 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1187260
Xref: comp.soft-sys.matlab:513693

"Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <glfrf5$kdl$>...
> Hi Roger,
> I have not read in detail your method, but
> 1. Do you estimate the translation vector? 
> 2. Does the least-square 3x3 matrix is orthogonal?
> It seems that what the article claim to be. It seems like optimal to me, wonder if anyone has implement it using Matlab.
> Bruno

  Hello Bruno.  As to question 1., it can easily be proved that the optimal translation is to move one or both centroids so they coincide, which is what is done in the method above.  In that, both were moved to the origin.  The result in the fourth column of T is the same however it is done.

  In 2. is your question whether the 3 x 3 matrix P is an orthogonal (unitary) matrix?  The answer is yes, because it is product of two other unitary matrices, U and V', which are obtained with 'svd', (even if a change of sign of the 3rd column of V is done.)  That is true, of course, providing there is no rescaling performed aferwards.

  The argument for this being a true least squares solution for vertices that don't match looks mathematically valid to me.

  In the Statistics Toolbox there is a function known as 'procrustes' which finds the least squares translation/reflection/rotation/scaling transformation, but I don't think it can be made to do only translation and rotation.  That problem has arisen in the past in CSSM threads.

Roger Stafford