How to get the coordinates (lat, lng) of the four corners of an image in MATLAB and display them together with the image?

조회 수: 14 (최근 30일)
I want to locate a certain point in an image automatically by displaying the coordinates of the whole image in MATLAB. What should I do?
  댓글 수: 5
Cristel Esmerna
Cristel Esmerna 2022년 4월 19일
These are the sample images that i have the image of the rice field and the gps info of the drone where it is located. Assuming that the drone is at the center and I want to get the coordinates of the corners of the image using matlab so that I can locate a point anywhere on the image using the range of the coordinates of the corners. Thanks for helping.

댓글을 달려면 로그인하십시오.

답변 (1개)

William Rose
William Rose 2022년 5월 24일
편집: William Rose 2022년 5월 24일
[edited: corrected typos]
Let's assume you know the field of view (FOV), in degrees, of the drone camera. Typically this is given by the camera maker or drone maker for the "horizontal" (wider) dimension of the image. You also know the aspect ratio (AR) of the image, for example 16:9=1.778 or 4:3=1.333. Let's assume the camera is pointed straight down. We also assume the ground under the drone is flat. I assume the altitude (Alt) is in meters. You also need to know the orientation of the image, i.e. the true compass bearing that corresponds to "up" in the image. I will assume the image is oriented so that "up" on the image corresponds to the north direction. We can adjust for other orientaitons later. Then the left side of the image is Alt*tand(FOV/2) meters west of the sub-drone point (where tand(x)=tangent of (x in degrees)), and the right side of the image is Alt*tand(FOV/2) meters east of the sub-drone point. The top edge of the image is Alt*tand(FOV/(2*AR)) meters north of the sub-drone point, and the right side of the image is Alt*tand(FOV/(2*AR)) meters south of the sub-drone point. Convert meters north/south to degrees of latitude (offset from sub-drone point) using the conversion factor 6371000*2*pi meters=360 degrees, i.e,. 1.112e5 m = 1 degree of latitude. Convert meters east/west to degrees of longitude using the conversion factor 6371000*2*pi*cos(Lat) meters)=360 degrees, i.e. 1.112e5*cos(Lat) meters = 1 degree of longitude. These conversion factors assume a spherical Earth, which is not quite correct. However, the error introduced by this assumption is almost surely smaller than the errors introduced by violations of other assumtptions.
The calculations above will yield estimates for the Lat, Long of the corners.
Once you have estimated the Lat, Long of the corners, you can use linear interpolation to estimate the lat & long of selected points or pixels in the image. That will be OK, but it is good to be aware of sources of error. Error source 1: One degree in the center of the image covers a shorter meter-distance, or lat-long difference, than one degree at the edge of the image, because the ground in the center is closer to the camera than the ground at the image edges, assuming the camera is pointed straight down. You can correct for this by using the inverse tangent function. Error source 2: Lens distortion, that is, a non-linear mapping of angles to pixels across the image.
Good luck with your image analysis.

카테고리

Help CenterFile Exchange에서 Automated Driving Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by