Computation of the translation synchronization
qsisi opened this issue · 3 comments
Thanks for the great work, I have a question for your implementation of translation synchronization.
In your implementation, the translation is computed using:
SGHR/TransSync/Laplacian_TS.py
Lines 47 to 90 in 14b7253
which corresponds to your paper:
But the original paper "Learning Transformation Synchronization" computes the translation following :
Because I failed to understand your implementation and the original implementation is more clearer, so following your code, I compute the translation using:
b = np.zeros([3*N])
for pid in range(len(locws)):
i, j, w = int(locws[pid,0]), int(locws[pid,1]), locws[pid,2]
xs, xe = i * 3, i * 3 + 3
b[xs:xe] -= w * Rs[pid] @ (-Rs[pid].T@ts[pid])
tpre = np.linalg.pinv(L) @ b
tpre = tpre.reshape(N, 3)
However, the result tpre does not stay the same with your implementation.
So the two questions are:
Q1. What is the difference between these two implementations?
Q2. Why the results of these two implementations are not the same?
Thank you so much for your help.
Hi @qsisi ,
Sorry for the late reply and thanks for your interest!
In SGHR, the relative transformation aligns point cloud
In LTS, the basic relative transformation is formulated as:
Thus,
Such a difference causes the differences of rotation and translation synchronization formulations. Specifically, for rotation synchronization, LTS uses
For translation sychronization, I have not derived LTS‘s formulation carefully, but I believe it can be derived with the basic least square method or its variants: https://en.wikipedia.org/wiki/Least_squares, where the translation solution of SGHR comes from.
Yours,
Thanks for your prompt reply, I did notice the "inverse" relations on rotations between LTS and SGHR, but I still could not derive the translation synchronization of your implementation. So may I ask did the code scripts come from other code bases?
Thank you so much for your help.
Hi @qsisi,
Sorry for the late reply!
This code snippet is original and is implemented based on Linear Least Square Algorithm and the following formulas:
SGHR/TransSync/Laplacian_TS.py
Lines 48 to 58 in 14b7253
yours,