How to calculate altitude from a aerial photography taken with a GoPro3be.
I was wondering how to estimate altitude by measuring length of a known object from a flat Aerial photography taken from my GoPro attached on a kite or on my Phantom. Browsing on internet I found this nice article:
http://balloons.space.edu/habp/photogrametry/Why not trying this method on my pictures to roughly estimate the altitude? Roughly, because normally the lens used for high altitude photography are more like 35 mm flat lens with a minimum lens distortion and the GoPro lens is 2.8mm (very wide angle) with lot of lens distortion.
What do I need:
• A display (or a printout) of a non cropped picture from the GoPro . It’s important to use a non cropped image which is a scaled version of the image display on the sensor.
• The picture must be as flat as possible. The lens plan must be parallel to the ground plan.
• The ref line to measure must be centered in the middle of the picture to minimize lens distortion.
• The line to measure must be parallel to one of the edge of the picture (horizontal or vertical).
• Size of the Gopro sensor : 5.70x4.28 mm
• Size of the pict on the display : 220x170 mm
• Object length on picture = 80mm
• Object length in Google earth= 93000 mm
The formula to calculate altitude is Altitude=Focal Length / Representative Fraction.
The representative fraction is the distance printed on the camera sensor divided by the measured distance on the ground.
Because my ref object to measure is vertical, I’m using the height size of the (display/sensor) as calculation variable. If the measured object was horizontal I would have take the width of the picture/sensor.
So let start the calculation:
RF=(80mm*(4.28mm/170mm))/93000mm=2.165 E-05
Altitude= Focal Length / RF=2.8/2.165 E-05=129287 mm= 129m
My estimate altitude when I took the shot was 140m. The calculation sound coherent for me.
What do you think of it?
Comments
I fly with an Immersion RC GPS screen overlay which is good to the nearest metre.
Wish I could work so high!
B
The spreadsheet is in the LibraOffice ODS format but I think you should be able to read it with Excel. If not I can convert it and post the Excel file. You need to enter data in cells with the black font for the heading and the headings with the green font will be calculated for you.
You should be able to get the following parameters from the EXIF:
Focal length
FocalPlaneXResolution
FocalPlaneYResolution
To get the object length on the sensor you'll need to measure the length of the object using software what lets you measure the length of the reference object, in pixels, on the photo. I use GIMP but I expect Photoshop and other software has the same capability.
This hasn't been tested so I'd welcome feedback.
Ned
i'll try your sheet later. i have few flat shot to try with.
In case that doesn't work the formulas are:
F2: =D2/(((B2+C2)/2)/25.4)
G2: =F2/(E2*1000)
H2: =A2/(G2*1000)
From the exif i can read FocalPlaneXResolution 72px/in FocalPlaneYResolution=72px/inch
Foclal lenght = 2.8mm
The ref object measured in pixel is 1450px the lenght on google earth is 93m.
The result given by your calulation is flying height =0.5m
I'm afraid to say that something is wrong.
I had hoped this approach would work for most cameras but didn't realize it wasn't universally recorded as an EXIF tag. My next step was to create a addition to my ImageJ plugin to automate flying height calculations by having the user draw a line on the image and entering the object length. Oh well, back to the drawing board...
FocalPlaneXResolution = 4000 pixels / 5.70 mm * 25.4 mm/inch = 17824.56 pixels/inch
FocalPlaneYResolution = 3000 pixels / 4.28 mm * 25.4 mm/inch = 17803.74 pixels/inch
I prefer metric too but the cameras I looked at used pixels/inch for FocalPlaneXResolution so I stuck with that convention.
I calculated that the object (dock) size on the sensor was 1412 pixels long. Using those numbers the spreadsheet calculated a flying height of 129.3 m.