# How to compute intrinsic camera matrix for a camera

The intrinsic camera matrix is useful in depth cameras to obtain the 3D position of any given pixel in the camera coordinate system. The pinhole camera model used for the intrinsic camera matrix is explained beautifully here.

The intrinsic camera matrix is of the form:

```f_x s   x
0   f_y y
0   0   1
```

Here, `f_x` and `f_y` are the focal lengths of the camera in the X and Y directions. `s` is the axis skew and is usually `0`. `x` and `y` are the X and Y dimensions of the image produced by the camera, measured from the center of the image. (So, they are half the length and width of the image.)

We typically know the dimensions of the image produced by the camera. What is typically not provided are the focal lengths. Instead camera manufacturers provide the field of view (FOV) angle in the horizontal and vertical directions.

Using the FOV angles, the focal lengths can be computed using trigonometry. For example, given the FOV `a_x` in the horizontal direction, the focal length `f_x` can be computed using:

```f_x = x / tan(a_x / 2)
```

We divide the FOV by 2 because this angle spans the entire horizontal or vertical view.

As an example, consider the Primesense Carmine 1.09 depth camera. It produces a VGA (640×480) image. Its specifications state a horizontal FOV of 57.5 degrees and vertical FOV of 45 degrees.

Using the above information, we can compute its intrinsic camera matrix as:

```583.2829786373293 0.0               320.0
0.0               579.4112549695428 240.0
0.0               0.0               1.0
```

## 4 thoughts on “How to compute intrinsic camera matrix for a camera”

1. John Bell says:

Hello. This is really useful. So for a new image of width x and height y, is there a way to calculate a useable FOV for x and y? What is a_x and a_y for a random image, of unknown origin?

Like

1. Ashwin says:

John Bell: I do not believe you can compute FOV of camera for a random image.

Like

2. ColdStart says:

If the manufacturer supplies f – e.g. 1.8mm – how would f_x and f_y be calculated?

Like

This site uses Akismet to reduce spam. Learn how your comment data is processed.