My questions are:
- What is the reason behind this?
- What can I do in order to get better results?
What I tried:
Using different feature detection methods of opencv, like ORB, SIFT, SURF.
SURF is giving the best results of them, but still some images get skewed.
Played with different models' parameters.
Some tweaking had positive effect, like decreasing
hessianThresholdof SURF, but nothing really provided 100% of good results.
Implemented an algorithm that would select keypoints scattered over the original image. This mostly had a good effect. Thire was a significant improvement for ORB and a small one for SIFT and SURF. But results are still not ideal. I asked a separate question about the algorithm on Code Review Stack Exchange: Efficiently selecting spatially distributed weighted points
I asked a related question on SO: How to prevent rectified images to be cropped?