4
$\begingroup$

Is this even possible? Or does blender only support one focal length for x and y? And is it possible to set the focal length in pixels instead of mm? Because to set it in mm I would need to know the width of the image sensor, which I don't have. I am trying to model a real camera which I calibrated and the calibration software gives me fx, fy and the principal point I could set the principal point, but I'm still stuck with the focal length.

$\endgroup$
5
  • $\begingroup$ I believe this is NOT possible but Im still interested about the reason You need this. $\endgroup$
    – Jan Matys
    Sep 26, 2018 at 14:22
  • 1
    $\begingroup$ I think you are confusing something. Please see en.wikipedia.org/wiki/Focal_length One camera lens can only have one focal length at a time. It cannot be different in different axis - this does not make sense. It is measured in millimeters. Setting it in pixels would not make any sense as well since pixels do not represent any actual distance in the scene. $\endgroup$ Sep 26, 2018 at 14:24
  • 1
    $\begingroup$ I thought so too, but you can check here: ksimek.github.io/2013/08/13/intrinsic under focal length it explains why it makes sense to have these seperate. Setting it in pixels is very common, because a lot of calibration software for calibrating real cameras gives you the focal length for x and y in pixels and I would like to model a real camera. $\endgroup$
    – Hakaishin
    Sep 26, 2018 at 14:28
  • $\begingroup$ Btw does it make sense to specify the focal lenght in mm and the fov? it doesn't right it's either or? $\endgroup$
    – Hakaishin
    Sep 26, 2018 at 14:41
  • $\begingroup$ Related: blender.stackexchange.com/q/55473/599 $\endgroup$
    – gandalf3
    Mar 11, 2023 at 1:08

1 Answer 1

1
$\begingroup$

A Blender camera does have a different focal length (or expressed as an angle, field of view / FOV) in the X and Y, however, this just follows directly from the ratio between the image plane width and height. The focal length (or FOV) that you set in Blender refers to the horizontal/width of the image plane. For example, if you use the default image plane dimensions in Blender (1920px x 1080px; you can change this in Scene Properties > Format) and you set the camera FOV to 90 deg, the FOV will be 90 deg in the width/horizontal dimension of the image plane and 60 deg in the height/vertical dimension. I'm giving this example in terms of FOV rather than focal length (in mm) because it's more intuitive that way; but they are equivalent.

If you are setting up a camera in Blender using an intrinsic camera matrix, it's easier to use FOV angles since you can get these more easily from the matrix (see https://stackoverflow.com/questions/39992968/how-to-calculate-field-of-view-of-the-camera-from-camera-intrinsic-matrix). Set the camera image plane dimensions in Scene Properties to match the dimensions of your image plane and then set the FOV of the camera (in degrees) to match the FOV in the X-axis from the intrinsic matrix (the one derived from fx). The FOV in the Y-axis will automatically correspond to the FOV derived from fy based on the image plane ratio.

I think if your camera calibration includes distortion correction it's possible that the ratio of the FOV angles from the intrinsic matrix won't correspond exactly to the ratios of your original image plane, but it will be close (e.g., 1.6 vs 1.5). I think this would be because the distortion correction could alter slightly the dimensions of the image plane.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .