Camera calibration without a checkerboard

I created the website https://online-camera-calibration.com/ where you can calibrate a camera without a checkerboard or any other custom-made calibration target. All you need is a flat, textured surface. Upload the images directly, or point it at a ROS bag and it will pull the frames out. That means no failing target detections, and you don’t have to buy a big board and try to glue a large print onto it without wrinkles.

What you need:

  • A flat, textured surface. The method is based on matching feature points, so there must be sufficient texture for a feature detector
  • One straight-on shot, which is going to be the reference
  • 10 - 20 additional photos of the same surface. The entire image plane needs to be covered somewhere in the image set (you don’t need to cover the entire image plane in one shot)
  • Tilt the camera in both directions across the set, but not in the reference image. (What pins down the focal length is foreshortening, the surface going perspectively squashed as you view it at an angle.)
  • If you upload a ROS bag: the frames are sampled uniformly across the recording, so the recording has to be made with that in mind.

Currently supported is the pinhole camera model with Brown-Conrady distortion (the OpenCV standard model) and the double sphere camera model for fisheye cameras. The output is a JSON file with the intrinsics and distortion coefficients. There is no camera_info YAML export yet, so tell me if that’s what you’d want.

For the accuracy, take a look at Camera Calibration Without a Checkerboard — What It Is & How It Works | AutoCalib

In short: in my experiments it comes quite close to a checkerboard calibration, and the board I compared against was a very large, precisely made one.

Uploaded images and bags are deleted about 10 minutes after processing.

I would really like to get some feedback on this method. Is it helpful to you? Is the quality sufficient for your use case?

1 Like

Hi, is there a reason why it’s an online service and not a R0S package?

What happens to them in between?

Hey, the reason that it’s not a ROS package yet is that it has not been made with ROS in mind. It has been made to provide a convenient way for camera calibration in general. It is not open source and not a ROS package because the method might go into a commercial product at some point. For now it is completely free and there is no sign-up required.

The images are being used only for the user triggered camera calibration job. The reason for the delay between image processing and image deletion is purely technical (they are deleted by a clean-up job). The images are not used for any other purpose and they are not shared with anyone.