Skip to content
This repository was archived by the owner on Feb 25, 2021. It is now read-only.

Use SSE instructions for point rotation in ORB extraction#59

Merged
shinsumicco merged 4 commits intoxdspacelab:developfrom
shinsumicco:refactor/orb-extractor
Jun 25, 2019
Merged

Use SSE instructions for point rotation in ORB extraction#59
shinsumicco merged 4 commits intoxdspacelab:developfrom
shinsumicco:refactor/orb-extractor

Conversation

@shinsumicco
Copy link
Collaborator

Fully use SSE instructions for point-rotation before comparing two points in ORB extraction.

#define COMPARE_ORB_POINTS(shift) \
        (_point_pairs = _mm_load_ps(orb_point_pairs + shift), \
         _mul1 = _mm_mul_ps(_point_pairs, _trig1), \
         _mul2 = _mm_mul_ps(_point_pairs, _trig2), \
         _vs = _mm_hadd_ps(_mul1, _mul2), \
         _vi = _mm_cvtps_epi32(_vs), \
         _mm_store_si128(reinterpret_cast<__m128i*>(ii), _vi), \
         center[ii[0] * step + ii[2]] < center[ii[1] * step + ii[3]])

@shinsumicco shinsumicco marked this pull request as ready for review June 16, 2019 05:31
@shinsumicco
Copy link
Collaborator Author

shinsumicco commented Jun 16, 2019

Tracking times are reduced by 2-3%.

(measured using KITTI 05 monocular seq., without OpenMP)
w/o SSE: 0.034165[s/frame]
w/ SSE: 0.0331221[s/frame]

@shinsumicco shinsumicco merged commit 380876a into xdspacelab:develop Jun 25, 2019
@shinsumicco shinsumicco deleted the refactor/orb-extractor branch June 25, 2019 09:06
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant