2
$\begingroup$

This is the first time I'm diving a little deep into images and computer vision. I have an aerial image taken from a drone (I know the pitch, roll, yaw of the drone and the angle of the camera relative to north). How do I transform the image so that it looks as if it is taken from the top? I want to map latitude, longitude on the aerial image to pixels (I know the lat, lon of all four corners of the image) and my understanding is that I need to transform the image before I can interpolate and map a new lat,lng pair to pixels.

$\endgroup$
0
$\begingroup$

Suppose you're imaging a square with sides of length $d$, and you're a height $h \gg d$ above the square. You're tilted in one dimension by $\theta$. Then the center of the square appears displaced by $-h \sin \theta$ and its apparent width along that dimension is $d \cos \theta$, not $d$. So, what object would be imaged onto a single pixel of size $d_p$? It would need to be a rectangle, displaced from the image center by $h \sin \theta$. Its width along the tilted dimension would have to be $d / cos \theta$, but along the untilted dimension it should still be $d$.

So after correction, the image consists of rectangular pixels of width $d / \cos \theta$. There's no transform on the raw image data that will implement this directly. However, it's easy to write a function that will return the value of the image at a given lat/long.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.