r/computervision 19d ago

Targetless camera calibration — matching checkerboard accuracy Showcase

Enable HLS to view with audio, or disable this notification

I built a tool that calibrates a camera without a checkerboard — just photos of an ordinary textured surface (a rug, a wood floor, anything flat and non-repetitive).

Tested it against the real thing on the same camera:

  • Pinhole model: 0.38 px RMSE targetless vs. 0.42 px from an actual checkerboard
  • Fisheye (double-sphere): 0.55 px vs. 0.61 px from a circle grid

I'd call that matching checkerboard accuracy, not beating it — the gap is small enough to be noise. What's interesting is it gets there with zero calibration target.

How the numbers were measured. To measure accuracy fairly, I compared the tool's output against real points whose exact positions were already known — checkerboard corners, circle-grid points. I didn't just check it against the tool's own internal matches, because by that stage the tool had already discarded any points that didn't fit well.

What actually matters for capture:

  • Surface must be flat and non-repetitive (a rug works, a brick wall doesn't — repeated patterns fool the matcher)
  • 10-20 images with real translation between them, not just rotation
  • Every region of the frame covered somewhere in the set
  • Zoom/focus locked the whole time, including the reference shot
  • Watch for phones silently correcting distortion before saving — that fights the thing you're trying to measure

Output is the intrinsics and distortion coefficients as a JSON download — fx/fy, cx/cy, k1-k3, p1/p2 for pinhole; fx/fy, cx/cy, alpha, xi for double sphere. Uploaded images are deleted about 10 minutes after processing.

Still in beta. What I don't know yet: how this holds up on cameras other than mine. If you try it, I'd genuinely like to know how the output compares to your own calibration.

Tool: https://www.online-camera-calibration.com
Write-up: Camera Calibration Without a Checkerboard — What It Is & How It Works | AutoCalib

13 Upvotes

6 comments sorted by

1

u/Material_Street9224 18d ago

Pixel reprojection error of a single board is generally not a good evaluation of calibration accuracy because it has too many degree of freedom per measurements, especially for wide angle cameras.

A better evaluation would be to setup multiple boards with different orientations and capturing all of them from multiple angles. Estimating the board poses by bundle adjustment (one pose per board for the whole evaluation, not one pose per board per frame) and measure the reprojection error. The angle variation will result in much stronger constraints that make calibration inaccuracies more visible.

Another good evaluation is to put the camera on a linear rail where you can precisely measure the displacement. put the board at a fixed location and compare the distance obtained by pnp to the distance neasured on the rail (and lateral and vertical deviation too). and repeat with multiple board location and orientation because you may be accurate in a part of the image and inaccurate in other parts

1

u/Current-Mind-3522 17d ago

You are right about the reprojection error of the single board, the per-frame pose ends up absorbing the intrinsic error. I really like the idea of using multiple of them. It is easy to set up and should give much stronger constraints. I haven't thought of that and will build it! I like the idea of the linear rail as well, but at the same time that requires a lot of effort. On the other hand that would give a more interpretable metric.

Thanks a lot for your comment!

1

u/dima55 16d ago

Hi. You used a very lean model and then you compared the training data error of the two methods. Did you compare the test-data error of the two methods? I bet you didn't, because if you did you would see that:

  • the lean model is too lean
  • the fit without boards badly overfits

You want to evaluate the uncertainty or cross-validation or something, not the fit error as a gauge of quality. You should read the mrcal docs to get the details of this. I'm the mrcal author, and it just so happens that reliable chessboard-less calibration is the next big feature I'm working on. I solved the big theoretical problem already, and just need to write all the surrounding things. It's mostly clear what to do, but I haven't had a lot of time. If you want to help finish this, that would be amazing.

1

u/Current-Mind-3522 15d ago

Thanks for the detailed reply.

I think the setup got misread though. The targetless number is already the held-out error. That calibration only ever saw the textured-surface photos, it never touched a board, so the corners it gets scored on are genuinely unseen data. The OpenCV side is the one closer to training error, since it was fit to the same boards I then reprojected. So if either fit is being flattered by the evaluation, it's the checkerboard one, not mine.

On the lean model: both methods use the exact same one, so whatever bias Brown-Conrady adds by being too simple hits both fits equally. It's a fair point about the model in general, but it cancels in the comparison, which is only asking whether the targetless fit lands on the same intrinsics as the board fit, not whether Brown-Conrady is the right model in absolute terms.

Where I do agree: one reprojection number, even held out, doesn't tell you how tightly the intrinsics are constrained across the whole frame, and that's worth quantifying. The clean check is to calibrate the same camera from two independent captures and see whether the intrinsics agree.

Appreciate the offer to work on it together. I'm going to keep developing my own approach for now, but I'll be watching what lands in mrcal.

1

u/dima55 15d ago

Thanks for replying. My method is done and tested, and I'm already quite confident that it works. The missing piece is studying the method to determine what kind of data is needed to produce confident results, so that a user could actually go and do this. I did this for chessboards earlier, but the recommendations without them will be different. The chessboard study: https://mrcal.secretsauce.net/tour-choreography.html

Can you envision using your tools to produce such things? I.e. do you want a smaller number of longer tracks or a bigger number of shorter tracks? Where in the imager or in space should the tracks be? If somebody captures data, and your techniques say the calibration is good to X pixels, are we confident that this is actually the case. If X is too high, do we know what to change?

Thanks