Skip to content

Conversation

@nushakrishnan
Copy link
Contributor

This pull request implements a new camera model called the Aria Fisheye model. The Aria Fisheye model includes:

  • Radial distortion (6 distortion coefficients)
  • Tangential distortion (2 distortion coefficients)
  • Thin-prism distortion (4 distortion coefficients)

The camera model is described here -
https://facebookresearch.github.io/projectaria_tools/docs/tech_insights/camera_intrinsic_models#the-fisheyeradtanthinprism-fisheye624-model

For more details, one can also refer to the Project Aria implementation here -
https://github.com/facebookresearch/projectaria_tools/blob/main/core/calibration/camera_projections/FisheyeRadTanThinPrism.h

Thanks!

@nushakrishnan
Copy link
Contributor Author

Converted to draft to debug

@nushakrishnan nushakrishnan marked this pull request as draft September 16, 2024 10:12
@B1ueber2y B1ueber2y self-requested a review September 16, 2024 15:28
@nushakrishnan nushakrishnan marked this pull request as ready for review September 16, 2024 15:48
@nushakrishnan
Copy link
Contributor Author

nushakrishnan commented Sep 16, 2024

To test the camera model implementation -

  • Selected two images and obtained the common 3d points visible in both these images using MPS. An example of such a point
    image

  • Compared the projection of the 3d point in the Aria Fisheye COLMAP camera to the projection using Project Aria's implementation here.

  • Ensure that the projections are equivalent.

I have also uploaded the script of this test for further clarity.
test_aria_camera_model.zip

Copy link
Contributor

@B1ueber2y B1ueber2y left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can confirm that the code is correct from my pass.

Copy link
Contributor

@ahojnnes ahojnnes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, looks great.

@ahojnnes ahojnnes enabled auto-merge (squash) September 17, 2024 05:08
const T theta_divr =
(r < std::numeric_limits<T>::epsilon()) ? static_cast<T>(1.0) : theta / r;

const T x = th_radial * theta_divr * u;
Copy link
Contributor

@B1ueber2y B1ueber2y Sep 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we move the theta_divr mapping outside the distortion function, such that the distortion returns zero offset for extra params all zero

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok we could also do it a separate PR by also updating OpenCVFisheye. Lets keep it in the current way for now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants