|Re: [eigen] Re: scaling in Umeyama|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Re: scaling in Umeyama
- From: David Breen <dbreen01@xxxxxxxxx>
- Date: Tue, 25 Sep 2012 11:00:49 -0600
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=Fdg28PykJ7RdLF7+Isp1QvseAELxcLwdmONkpCfN7k4=; b=bWcvLC1HH1EidCGXBPkgUQAsRFmF8ErBDNDfOWWmy/yN5rP0pGudhVDPwiSx+njquF uUAloE9Se3o6ZZbWS4P4vSn+ruDDccJQemUcXyQncvAxIvFLqaOvOc1J63VT+hnUEpHB O/gdhx7LSIGy82cpPDyImphOm9R5SKPneFncfgI64X8wnySosExpC+XncihR01oPWnep WaNSJ2eGyvsqSDL457TCQk8GuifUdl45Np8bWtbWZLc9LtTmw6SUxA+bHO3WfS9GYxkw TKwYubI5ffONL2eRO/DlGtxuq52A1NZzSdelj6RZN33LdzQz53+5drqjnPvyjcf8Mf4p y5SQ==
On Tue, Sep 25, 2012 at 3:44 AM, Hauke Heibel <hauke.heibel@xxxxxxxxx>
it seems as if I never properly tested the case c=1. The unit tests
test for random c>=0.
I looked at the code and what you say makes sense. I pushed a fix
though I did not find the time to test it and hope that I did not
On Mon, Sep 24, 2012 at 9:34 PM, Radu B. Rusu <radu.b.rusu@xxxxxxxxx> wrote:
> Maybe to make a correction: the math does look good (i.e., properly
> implemented as in the original paper), however the values that we obtain for
> the translation are all off. Looking at our own implementation (and a few
> other implementations around the web), we calculate the translation simply
> by: t = u_y - R * u_x, so without multiplying with the c Scalar.
> Did anyone perform any regression tests on ground truth data to see how it
> performs (with and without (42) as in the Umeyama paper)?
> On 09/24/2012 12:23 PM, Radu B. Rusu wrote:
>> I noticed a small discrepancy between the documentation for Umeyama and
>> the actual implementation, and I was wondering
>> if this is a bug.
>> states "with_scaling
>> Sets c=1 when false is passed." However, looking at
>> http://eigen.tuxfamily.org/dox/Umeyama_8h_source.html, I see:
>> 00157 const Scalar c = 1/src_var * svd.singularValues().dot(S);
>> which is then applied to the translation component. In our tests, this led
>> to a bad translation while the rotation was
>> correct when with_scaling was set to false.