I would like to emulate the optical behavior of a certain camera knowing only the following parameters:
- it is a fisheye lens
- focal length in mm
- sensor size (horizontal and vertical) in mm
- sensor resolution (horizontal and vertical) in pixels
- HFOV and VFOV in degrees or radians
My goal is to transform a set of 3D points in space into 2D points on the camera's sensor. It looks like cv2.projectPoints() can do this, but it requires a set of distortion coefficients, K1, K2, P1, P2, etc.
Most people get these coefficients by calibrating using a real camera. I would like to work with a notional camera. One such example is for a GoPro, a person found these values:
[[-2.57614020e-01, 8.77086999e-02, -2.56970803e-04, -5.93390389e-04, -1.52194091e-02]]
I haven't been able to find an explanation of these parameters w.r.t. the input variables I've listed, and I don't understand enough about optics to know how to generate them.
How do I generate the distortion coefficients needed to use projectPoints() for a notional fisheye lens?