1

Consider the following diagram and equations representing a pinhole camera:

Suppose the image size is W times H pixels, and that there is no nonlinear distortion. To compute the field of view I proceed as in the picture below:

where \tilde{H} is the image width in the image plane, not in the pixel coordinates, and s_y is the height of a pixel in the image plane units.

In an exercise I'm told to account for the fact that the principal point might not be in the image center.

  1. How could this happen, how do we correct the FOV in this case?

Moreover, suppose the image was distorted as follows, before being projected on the pixel coordinates:

  1. How do we account for the distortion in the FOV? How is it even defined?
Francesco Callari
  • 11,300
  • 2
  • 25
  • 40
Lilla
  • 209
  • 3
  • 9

1 Answers1

1
  1. The principal point may not be centered in the image for a variety of reasons, for example, the lens may be slightly decentered due to the mechanics of the mount, or the image may have been cropped. To compute the FOV with a decentered principal point you just redo your computation separately for the angles to the left and right sides of the focal axis (for the horizontal FOV, above and below for the vertical), and add the angles up.

  2. The FOV is defined exactly in the same way, as the angle between the light rays that project to left and right extrema of the image image row containing the principal point. To compute it you need to first undistort those pixel coordinates. For ordinary photographic lenses, where the barrel term dominates the distortion, the result is a slightly larger FOV than what you compute ignoring the distortion. Note also that, due to the nonlinearitiy of the distortion, the horizontal, vertical and diagonal FOV's are not simply related through the image aspect ratio when the distortion is taken into account.

Francesco Callari
  • 11,300
  • 2
  • 25
  • 40
  • Thank you, now it's clearer: here is what I understood to implement, based on your suggestions. Suppose (cx,cy) are the undistorted pixel coordinates of the principal point. Consider the points p0=(0,0), p=(W,H) in distorted pixel coordinates. Undistort them. Compute the undistorted height and width by (W_undistorted,H_undistorted)=p_undistorted-p0_undistorted. Apply FOV_y=atan((H_undistorted-cy)/fy)+atan(H_undistorted/fy) ecc. Is this correct? – Lilla Nov 16 '20 at 22:54