Hi SAV,
Thank you very much for the answer and the link.
I am calculating the GSD the following way:
GSDh = ( [Flight Height] * [Sensor Height] ) / ( [Focal Length] * [Image Height] )
GSDw = ( [Flight Height] * [Sensor Width] ) / ( [Focal Length] * [Image Width] )
GSD = Max Of ( GSDh, GSDw)
All units in centimeters,
For DJI Mavic PRO I am using :
Sensor Width = 4.7 mm
Sensor Height = 6.3 mm
Focal Length = 28 mm
Example Flight Height = 4790 cms
So I obtained :
GSD = 0.35925
That way, the real world dimensions are (assuming drone photo are 4000 x 3000 pixels):
Image width in cms = GSD * 4000 = 1437 cms
Image height in cms = GSD * 3000 = 1077.75 cms
But by simple viewing the photo you can see that the real world dimensions of the area is much bigger.
Do you think that the sensor and focal length parameters are wrong and is the reason of the wrong results ?
Also, additionally, after checking your link, I tried calculating with the formula provided but I have the doubt about the gimbal parameters.
The drone will give you the following angles:
GimbalRollDegree
GimbalPitchDegree
GimbalYawDegree
I am assuming
xgimbal = GimbalRollDegree
ygimbal = GimbalPitchDegree
But the results are completely wrong, example in c# language
double xsensor = 4.7;
double ysensor = 6.3;
double focallen = 28;
double altitude = 48; // approx
double xgimbal = 0;
double ygimbal = -90;
double xview = 2 * 57.296 * (Math.Atan(xsensor / (2 * focallen)));
double yview = 2 * 57.296 * (Math.Atan(ysensor / (2 * focallen)));
// from drone to bottom of picture
double dbp = Math.Round(altitude * Math.Tan(0.01745 * (xgimbal - 0.5 * xview)), 2);
// from drone to top of picture
double dtp = Math.Round(altitude * Math.Tan(0.01745 * (xgimbal + 0.5 * xview)), 2);
// from drone to left of picture
double dlp = Math.Round(altitude * Math.Tan(0.01745 * (ygimbal - 0.5 * yview)), 2);
// From drone to right of picture:
double drp = Math.Round(altitude * Math.Tan(0.01745 * (ygimbal + 0.5 * yview)), 2);
// height of photo footprint
double heightOfPhotoFootprint = drp - dlp;
// width of photo footprint
double widthOfPhotoFootprint = dtp - dbp;
results are :
heightOfPhotoFootprint = -851.56;
widthOfPhotoFootprint = 8.04
0.01745 = conversion from degrees to radians
57.296 = conversion from radians to degrees
Thank you