daniilidis-group / event_feature_tracking

This repo contains MATLAB implementations of the event-based feature tracking methods described in "Event-based Feature Tracking with Probabilistic Data Association" and "Event-based Visual Inertial Odometry".
Other
82 stars 33 forks source link

I have some questions about em1 and em2. #5

Open neulky opened 5 years ago

neulky commented 5 years ago

My first confuse is: This system defines two templates 'ef.prev_shifted_weights' and 'ef.template_decimated'? Can em1 use 'ef.template_decimated' as a template?

My second confuse is: In the em2_affine.m,Line 230: time_shifted_points = bsxfun(@minus, events(1:2, :), ... feature_pos + flow * dt) + ... bsxfun(@times, flow, (events(3, end) - events(3, :))); In order to calculate 'time_shifted_points', Can this use the new feature point position and the new optical flow after the affine warping?

alexzzhu commented 5 years ago

ef.templated_decimated is a boolean to indicated whether the template has undergone sphere decimation. Do you mean ef.prev_shifted_points? In that case, there is the option to use this as the template for em1 to simplify the flow estimation step.

I'm not sure what you mean by the second question, but the transformation is defined as x' = A(x-xdot dt), so the points are time shifted, and then the affine transformation is applied.

neulky commented 5 years ago

Thank you Alex, I'm Sorry, I didn't express my questions clearly. In my first question, I mean that this system defines two templates 'ef.prev_shifted_points' and 'ef.template_points'. Now I understand using the template 'ef.prev_shifted_points' instead of 'ef.template_points' for em1 is simplifying the flow estimation step. In my second question, In the em2_affine.m,Line 230: time_shifted_points = bsxfun(@minus, events(1:2, :), feature_pos + flow dt) + bsxfun(@times, flow, (events(3, end) - events(3, :))); Can I replace the above codes as following? time_shifted_points = bsxfun(@minus, events(1:2, :), feature_pos - pos_shift + flow dt) + bsxfun(@times, flow, (events(3, end) - events(3, :))); The change here is to replace feature_pos with feature_pos - pos_shift. I think this need to use the feature position after affine warping.

alexzzhu commented 5 years ago

Hmm I think you're right... I think the best way would be to replace feature_pos with feature_pos_out there. Have you tested this locally, does the tracking still work? I'm out of the office for the week so will have to check next week.

neulky commented 5 years ago

Thank you for your help. Yes, I replace feature_pos with feature_pos_out, the tracking still works.But by observing the results, I don't know the tracking accuracy is improving or not.