|[eigen] Re: scaling in Umeyama|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: [eigen] Re: scaling in Umeyama
- From: "Radu B. Rusu" <radu.b.rusu@xxxxxxxxx>
- Date: Mon, 24 Sep 2012 12:34:22 -0700
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:reply-to:user-agent:mime-version:to:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=AWAY6J9Xdw4iCCt398QSvQ5OfrEsjgqcAlbyVXM2pLs=; b=O7nc+L2BDMNROi8ex0Zh31T/hjGNdL/H/kaAPBFlnVirWwVt3kCkG1UWo9B0lszhXl 8/pKkk03hJEyAAW/Y+zc8SAZyBA01c/oPfC75d6FB1guTjDGKt/CZpZqWJXdX+Y97CaI dd7aB6GuDfEfVGlRCgTj815KvfouVFLlOHC5CI2XxomNehtJNVXn/xq1VBntLstPIqNq Me22ApaGP2CcP63/Sh5qkPzAr8wVh1BiNsMsCI+/LYFXZb53qgA1PGEVAFPKwv/HmkNy ocxfYBFnJGXMo+HGUWk04BttZpVzu8HsR6MFTfmKVIcIHPFy0qL/8Jq+Ev1fMRx0ew5q p5Xg==
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
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.
http://eigen.tuxfamily.org/dox/group__Geometry__Module.html#gab3f5a82a24490b936f8694cf8fef8e60 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.