KumarRobotics / msckf_vio

Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight
Other
1.71k stars 599 forks source link

two-point ransac model and rescalePoints function #64

Closed struggleforbetter closed 3 years ago

struggleforbetter commented 5 years ago

about the two-point ransac model,after rescalePoints (),the t maybe change. suppose: t:(1,1,1)^T R:I(Identity matrix) x2:(1/2,0,1)^T x1:(0,-1,1)^T x2^T [t]x R *x1 == 0

now suppose scale_factor = 2 x2=>x2' ,x1=>x1' (only change x,y coordinate) x2':(1,0,1) x1':(0,-2,1) now,x2'^T [t]× x1' /= 0 I have another question: suppose p_1,P_2 are the features in previous and current normalized plane .they are satisfied with : p_2^T [t]× R p_1 = 0;when taking matrix H = (s,0,0;0,s,0;0,0,1) to p_1,p_2,then p_1' = Hp_1,p_2' = Hp_2. does a R' ,t' exist to p_2'^T [t']× R' p_1' = 0? that is ,H[t]× R H == [t']× * R' ? sorry for my poor English,sorry

ke-sun commented 5 years ago

Not sure for a general essential matrix. But for the cases where R is identity, the translation vector corresponds to the scaled points is t'=(tx/s, ty/s, tz/s^2), where t=(tx, ty, tz).

Yes, you are right. Thanks for the catch. It is a bug in the implemented two-point RANSAC. Thanks to the second problem you pointed out, it seems rescaling the points wont' affect finding the correct inliner set. It is just the fitted model is wrong. But I do agree it requires a proper fix to avoid confusion.

struggleforbetter commented 5 years ago

Thank you very much.It helps me a lot.

realdealneil commented 5 years ago

Since rescaling the points does not affect finding the correct inlier set, do you believe you'd get the same results without scaling at all? Or, does the scaling help with numerical errors?

manhtoanbkhn commented 4 years ago

any update?