How to Figure Out a Drone's Angular Field of View

March 20, 2019 Off By HotelSalesCareers

You know what happens when I get a new toy? Physics happens. I can't stop myself, it's just the way I am.

In this case, the toy is a DJI Spark drone (it was a birthday present). I've always wanted a drone that could do some cool stuff. The one I had before was basically just a toy. But with this new toy, I am going to determine the angular field of view for the Spark camera.

Sometimes referred to as FOV, the angular field of view is the portion of the world that a camera can see.

Here, maybe this picture will help.

Anything within that angle (θ) can be seen by the camera. Who cares? If you know the FOV, you can get the angular size of objects that you see. Angular size depends on both the distance from the camera and the size of the object. If you measure the angular size in radians, then the following relationship holds.

In this expression, r is the distance to the object and L is the length of the object. But here's the real deal: If you know the distance to the object and the angular size, you can find the actual size of the object. Pretty awesome, right? Now you can fly over some structure or thing and get the size of it.

OK, one more thing before I move on to the measurements. Isn't it possible to just look up the technical specifications of the Spark drone to find the FOV? Most likely, yes. But what fun is that? It's always more fun to measure these things for yourself.

So, here is the plan. I am going to fly the drone and move UP while looking down at an object of known length. As the drone moves higher, the apparent size of the object decreases. By plotting the apparent size (in units of the width of the video) vs. one over the height, I'll get a line. The slope of that line will give me the angular field of view.

LEARN MORE

The WIRED Guide to Drones

Oh, but how do I get the height of the drone? There are three methods we could use. First, there is the height reading straight from the Spark (I assume this is measured based on the barometric pressure). Second, I can measure the height with a second video looking at the drone from the side and scaling the video with a stick of known length (OK—it's a yard stick).

Wait. What about the third way? Well, the third way is a fix for the second method. Cameras don't actually measure distances and positions. Instead, each pixel in a video corresponds to an angular position. If the distance from the camera to the object changes significantly, you can't really assume a constant distance scale. An alternative would be to use the camera to measure the angular position and then calculate the height using basic trigonometry.

How do these three different methods compare? Yes, I did all of these just for you. Here is what I get.

There is a small difference in altitude for the angular position and video analysis, but for the most part these methods seem to agree. Honestly, that's great—it means I can use the simplest version to calculate the height of the drone. Of course the easiest method is to just get the reading straight from the Spark.

The next step is to collect data on the height and the apparent angular size of an object. In this case, my object is a wooden board with tape marks 0.5 meters apart. Of course, I don't actually know the angular size since I don't know the FOV. However, if I measure the stick size relative to some unknown FOV then I can write the following:

Remember, r is the distance to the object and L is the actual length of the object. The variable s is the measured length and the FOV is the field of view. In this equation, the two values that will change are the r and the s. I want to get this in the form of a linear equation so that I can find the slope. How about this?

According to this, I should see two things. First, the plot of L/r vs. s should be a straight line. Second, the slope of this line should be the field of view (in radians). Let's do it.

Boom. It's linear with a y-intercept very close to zero (that's good) and a slope of 0.96345 radians. That gives the camera a field of view of 55.2 degrees. Oh wait! That is just for the video camera on the drone. I forgot to collect data for the photo camera—I'm pretty sure it has a different FOV. OK, I can fix this later.

But now what? What can you do with the FOV? Let's say you are flying over your house and you want to find the dimensions. Or maybe you are flying over a giant alligator that you happen to see. Either way, you can now find the size of that object. This only works if the drone camera is looking straight down so that the altitude is the same as the distance to the object. Once you have the video, measure the size as a fraction of the width of the video. Multiply this by the altitude and then multiply by 0.96345. That's it. Now you have the size of your object. It even works in distance units of feet instead of meters.

This is going to be useful. Trust me.