findEssentialMat too slow on Android
I am trying to estimate camera pose on Android. I have on my laptop code to calculate relative monocular camera pose that runs at an average of 52.8 fps using an i5 processor and produces accurate results when provided scale data. The code works as follows:
I calibrate the camera, find 1000 keypoints per frame using FAST, then match them to the previous frame using calcOpticalFlowPyrLK. On a Nexus 6, these procedures take <20 ms each on average, which is sufficient. However, findEssentialMat takes over 2 seconds when the camera moves.
To speed up findEssentialMat, my current thought is to split RANSAC's iterations into threads. However, I am unsure if that would help or cause more issues. Given a calibrated camera and matched points, is there a faster way to produce a solution to the monocular pose estimation problem?