It is possible to semi-accurately georeference an image given only the following information?
I'd like to do this programmatically.
- Center point of terrain, Lat/Lng (WGS84)
- Pitch of camera
- FOV
- Altitude
My intuition says there's not enough reference points, but I hope I'm wrong.
If it's possible, can you provide any pointers to the math?
Answer
As BradHards said, you need to make many assumptions in order to locate your image. Furthermore, because of the geometry of your photo, you will have distortions even if you are in those ideal condition. So here are the expected characteristics :
Flat terrain
Low pitch and roll
Low field of view
The heading and the roll of your camera are required in addition to the pitch. For strongly oblique images, you need to orthorectify, but as you ask for a quick approximation, so I assume your roll and pitch can be neglected. However, you DO need the heading, otherwise you can't get the orientation of your image. If you have multiple successive images, maybe you can estimate the heading by looking at successive image centers, but this would make one more estimation. If you have only a few images, stop wasting your time with such approximation, and use GCP's on the ground.
You also need the mean elevation at the ground level, but this is quite easily accessible based on your coordinates and a free DEM like the SRTM.
You can guess the pixel size based on your field of view and the number of pixels in your image.
for georeferencing requires 6 parameters : pixel size in X and Y (equal if there is no pitch nor roll), rotations of the pixels (heading with respect to the north of your projection) and XY coordinates of one corner (lower right positive sizes in X and Y) that can be computed based on your central coordinates (again, without pitch and roll, the coordinates of the ground equal the coordinates of the plane, otherwise there is a shift equal to tan(pitch)*h in Y or tan(roll)*h in X where h is the distance between camera and ground : h = plane altitude - terrain elevation .
So now you need to estimate the AVERAGE pixel size (in the ideal conditions):
2 * tan(FOV/2)*h / (number of pixels)
As I said before, this will be very rough, use it only to get the footprint.
No comments:
Post a Comment