MRCAL(1)

πŸ’– mrcal-show-projection-uncertainty β€” a manual page, but make it a group chat πŸ’–

okay so bestie, this is page 1 of the mrcal manual, and the whole toolkit is like the camera projection + calibration toolkit. This particular page is for mrcal-show-projection-uncertainty, and it's here to help you visualize the expected projection error that comes from noise in your calibration-time input. no cap, that's the whole thing.


✨ NAME ✨

mrcal-show-projection-uncertainty β€” Visualize the expected projection error due to noise in calibration-time input

like. it shows you how shaky your projections are. that's it. that's the girl.


✨ SYNOPSIS ✨

$ mrcal-show-projection-uncertainty left.cameramodel
... a plot pops up showing the projection uncertainty of the intrinsics in
... this model

you run it, a plot pops up, the plot shows the projection uncertainty of the intrinsics in this model. slay. πŸ’…


✨ DESCRIPTION ✨

okay so the actual operation of this tool is documented at <https://mrcal.secretsauce.net/uncertainty.html> β€” go read that if you want the full lore.

Here's the vibe though. A calibration process produces the best-fitting camera parameters. adorable, love that for them. But to actually use these parameters, we have to know how trustworthy they are. 🫢 And that's literally what this tool does: it examines the uncertainty of projection using a given camera model.

Now, the projection operation uses the intrinsics only, but the uncertainty has to take into account the calibration-time extrinsics and the calibration-time observed object poses as well. So many layers, so much main character energy.

This tool visualizes the expected value of projection error across the imager. Areas with a high expected projection error are unreliable, and observations in those regions cannot be used for further work (localization, mapping, etc). so like, don't build your whole life on those pixels, bestie.

There are several modes of operation:

  • By default we look at projection of points some distance away from the camera (given by --distance). We evaluate the uncertainty of these projections everywhere across the imager, and display the results as a heatmap with overlaid contours 🌈
  • With --vs-distance-at we evaluate the uncertainty along an observation ray mapping to a single pixel. We show the uncertainty vs distances from the camera along this ray

See <https://mrcal.secretsauce.net/uncertainty.html> for a full description of the computation performed here. it's giving thorough. obsessed.


✨ OPTIONS ✨

πŸŽ€ POSITIONAL ARGUMENTS πŸŽ€

  • model β€” Input camera model. If "-' is given, we read standard input

πŸŽ€ OPTIONAL ARGUMENTS πŸŽ€

  • -h, --help β€” show this help message and exit
  • --vs-distance-at VS_DISTANCE_AT β€” If given, we don't compute the uncertainty everywhere in the image at a constant distance from the camera, but instead we look at different distances at one pixel. This option takes a single argument: the "X,Y" pixel coordinate we care about, or "center" to look at the center of the imager or "centroid" to look at the center of the calibration-time chessboards. This is exclusive with --gridn and --distance and --observations and --cbmax
  • --gridn GRIDN GRIDN β€” How densely we should sample the imager. By default we use a 60x40 grid
  • --distance DISTANCE β€” By default we display the projection uncertainty infinitely far away from the camera. If we want to look closer in, the desired observation distance can be given in this argument
  • --isotropic β€” By default I display the expected value of the projection error in the worst possible direction of this error. If we want to plot the RMS of the worst and best directions, pass --isotropic. If we assume the errors will apply evenly in all directions, then we can use this metric, which is potentially easier to compute
  • --method {mean-pcam,bestq,cross-reprojection-rrp-Jfp} β€” Multiple uncertainty quantification methods are available. We default to 'mean-pcam'; the others are experimental at this time
  • --observations β€” If given, I display the pixel observations at calibration time. This should correspond to the low-uncertainty regions.
  • --valid-intrinsics-region β€” If given, I overlay the valid-intrinsics region onto the plot
  • --cbmax CBMAX β€” Maximum range of the colorbar
  • --title TITLE β€” Title string for the plot. Overrides the default title. Exclusive with --extratitle
  • --extratitle EXTRATITLE β€” Additional string for the plot to append to the default title. Exclusive with --title
  • --hardcopy HARDCOPY β€” Write the output to disk, instead of an interactive plot
  • --terminal TERMINAL β€” gnuplotlib terminal. The default is good almost always, so most people don't need this option
  • --set SET β€” Extra 'set' directives to gnuplotlib. Can be given multiple times
  • --unset UNSET β€” Extra 'unset' directives to gnuplotlib. Can be given multiple times
ngl, if you're out here passing --set and --unset multiple times, you are a gnuplotlib girlie and I respect it deeply. 🧚

🌸 REPOSITORY 🌸

<https://www.github.com/dkogan/mrcal>


πŸ‘‘ AUTHOR πŸ‘‘

Dima Kogan, "<dima@secretsauce.net>"


Copyright (c) 2017-2023 California Institute of Technology ("Caltech"). U.S. Government sponsorship acknowledged. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

and that's the whole page, bestie!! πŸ¦‹ this was mrcal-show-projection-uncertainty, from mrcal 2.5.2-4build1, dated 2026-03-20 (manual section 1, iykyk). go forth and quantify your uncertainty, but like, in a calibrated way. πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from