You can try to match the images with knnMatch()
method, calculating the two nearest neighbors. For each descriptor in the first image you will have 2 closest matches in second image.
These matches are the two best ones based on distance between their descriptors. If the distances of these matches are similar, it is possible that you will select the wrong one. In that case, you should discard those matches. You can do that by checking the distance ratio. If ratio of distances between first match and second match is not greater than a chosen threshold you should discard those matches. Afterwards you can do for example a RANSAC test to get even better results.