Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Camera intrinsic calibration validation #51

Merged

Conversation

marip8
Copy link
Collaborator

@marip8 marip8 commented Jun 3, 2020

This PR adds capability for validating the accuracy of a camera intrinsic calibration.

Assumptions

Given a set of camera intrinsic parameters and a set of observations:

  1. The correspondence set in each observation can be split into two independent correspondence sets
    • s1 = (c[0], ..., c[n/2])
    • s2 = (c[(n/2)+1], c[n])
  2. A PnP optimization can accurately* determine the transformation of the origin of each virtual observation set relative to the camera
    • The residual error threshold for the PnP optimization can be specified to account for the noise level of the sensor
  3. Although the two virtual correspondence sets contain different features, those features share the same origin. Therefore, the transform from the camera to the origin of both virtual correspondence sets should be the same, given perfect camera intrinsic parameters. For imperfect camera intrinsic parameters, there will be some error between the transforms
  4. Calculating the mean and standard deviation between virtual correspondence sets for all observations provides a means of assessing the accuracy of the camera intrinsic calibration

Results with the data set in rct_examples

Using Kinect camera estimated intrinsic parameters

  • Positional Error:
    • Mean (m): 0.00836456
    • Std. Dev. (m): 0.00868565
  • Angular Error:
    • Mean (rad): 0.0327079
    • Std. Dev. (rad): 0.0242015

This means that the upper bound (mean + 2 sigma) of the transform error from one virtual correspondence set to the other was 25.7 mm and 4.64 degrees (i.e. really bad)

Using Kinect camera calibrated intrinsic parameters

  • Positional Error:
    • Mean (m): 0.00590141
      • Std. Dev. (m): 0.0058142
  • Angular Error:
    • Mean (rad): 0.0273891
    • Std. Dev. (rad): 0.0218903

This means that the upper bound (mean + 2 sigma) of the transform error from one virtual correspondence set to the other was 17.5 mm and 4.07 degrees (i.e. still pretty bad)

These results along with @schornakj 's covariance analysis in #46 seem to show that there was probably a lack of data diversity in these images. We should eventually create a data set of really good intrinsic calibration images with which to run this test.

@marip8 marip8 mentioned this pull request Jun 8, 2020
@marip8
Copy link
Collaborator Author

marip8 commented Jun 10, 2020

@schornakj @colin-lewis-19 can you review this?

@marip8 marip8 force-pushed the feature/camera_intrinsic_calibration_validation branch from f5c6fe1 to 6cdc4bb Compare June 23, 2020 20:19
@marip8
Copy link
Collaborator Author

marip8 commented Jun 23, 2020

@schornakj this is ready for review when you get the chance

Copy link
Contributor

@schornakj schornakj left a comment

Choose a reason for hiding this comment

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

Looks good to me!

@marip8 marip8 force-pushed the feature/camera_intrinsic_calibration_validation branch 3 times, most recently from 6824132 to ddbc1f0 Compare June 24, 2020 19:15
@marip8 marip8 force-pushed the feature/camera_intrinsic_calibration_validation branch from ffe8e4f to d2e52a4 Compare June 24, 2020 19:52
@marip8 marip8 merged commit d4a4f41 into Jmeyer1292:master Jun 24, 2020
@marip8 marip8 deleted the feature/camera_intrinsic_calibration_validation branch June 24, 2020 20:26
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.

None yet

2 participants