androidarcorefieldofviewcamera-intrinsics

Selecting a camera based on Field of View (FOV) preference


We are working with a phone which supports both, the Android Camera2 API and ARCore. If at all relevant, the phone is the Samsung S20 FE.

With the Camera2 API we gain access to camera configurations corresponding to different fields of view (FOVs). Specifically, in our case we gain access to frames captured with a narrower FOV (around 60 degrees), or with a wider FOV (around 100 degrees).

With the ARCore API we gain access to camera configurations (ArCameraConfig objects) which correspond to only the narrower FOV (around 60 degrees).

Based on the above, the 100-degree FOV camera seems to be inaccessible by the ARCore API, even though it is clearly supported by the phone hardware.

We have searched thoroughly throughout the ARCore documentation but have not found any reference to this issue.

Questions:


Solution

  • I believe ARCore runs an extensive calibration process for every device they support, so if they did not calibrate the 100-degree camera, it wouldn't be visible via the API. If so, there's not much you could do about it - even if you could trick it into showing the camera, it wouldn't have the detailed calibration information ARCore needs.

    It seems like the S20 FE has 3 cameras, so the 60-degree camera is likely the wide-angle camera (not the ultrawide or the telephoto), and is probably the default camera view you see in the device's own camera app. While I agree 60 degrees is a bit narrow for a wide-angle camera, it's not surprising it's the one that's been calibrated for ARCore.

    Hopefully ARCore will enable more sensors in the future, but until then, there's probably not much you can do to make it appear.