Search code examples
opencvarcgisgoogle-earth

Adjust drone images to google earth


I want to use opencv to automatically adjust Google earth photo overlays (photos directly embedded in the landscape) to Google Earth's 3D environment. Photos already have location, fov, and orientation as metadata so only a small adjustment between the real image and the image rendered by Google earth is required.

I have tried using feature detectors like shif, Azaka or fast, but most of the images are on forested areas and there are not many clear features to link (they all find trees to be the most prominent features and that is not good). Beside, these algorithms will look everywhere in the image, and I only want to focus on small translations and scale.

I have tried brute force by translating one of the images a few pixels and computing the overall difference between images, in order to find a best fit traslation. Again, no great result.

Finally I have tried obtaining the contours of both (canny algorithm) to try to use as key points in the images. But so far I find it too hard to find the correct parameters that would work in all the images.

I am fairly new to opencv and I think I am just missing something obvious, can anybody give me some hint or ideas I can try to do??

Thanks Real Image 3d Redered image


Solution

  • Direct methods can be applied if the images only differ by slight translation or rotation. This may be a similar approach as the brute force method you described. Here's a link to a short paper describing some of these methods: http://pages.cs.wisc.edu/~dyer/ai-qual/irani-visalg00.pdf Hope this helps.