You photographed six chessboards in a single frame and want one set of camera intrinsics out of it. The estimator refuses, and the tempting workaround — pasting the same points into several 'views' — either errors out or returns numbers nobody should trust. This guide explains what a calibration view really is, why your six boards count as one view, what a single photo can and cannot estimate, and the 10-20 image capture that produces one cameraParameters object you can defend in a design review.
Why six boards in one photo are one view, not six
A planar calibration function such as estimateCameraParameters expects image points shaped M-by-2-by-N: N is the number of camera poses, M the corners seen in each. One slice holds the points from exactly one perspective of the target. Other slices are meant to be other perspectives of the same board, and they must differ in orientation, not merely in position.
Six boards in one photograph were all seen from one pose, so they belong in a single slice — a 420-by-2 block if each board contributes 70 corners — not in six. Splitting them into six slices tells the solver there were six poses of one physical board, and it goes looking for five relative rotations that never happened. There is nothing real for the solve to converge on.
Copying the same slice three times fails differently, and more quietly. Identical views have zero relative rotation, which is the degenerate configuration for planar calibration: the equations that would pin the focal length never become independent. The solver may reject the set, or it may return values that simply weight one viewpoint three times. Translation without tilt is no fix either — sliding a board around in front of the lens adds no constraint a planar solver can use. Rotation is the informative change: two views taken from the same spot but rotated against each other already carry usable constraints.
What a single photo can actually estimate
One view of one plane yields one homography: eight usable constraints. The solve needs eleven unknowns before distortion even enters — fx, fy, the principal point cx and cy, plus six pose values. Eight equations against eleven unknowns is underdetermined, so no solver can return a unique answer from it.
Boards parallel to each other in the same frame do not change that. Each one adds only a scale and a shift, and the scale trades exactly against the unknown board distance: a longer focal length with a farther board reproduces the same image pixel for pixel. Six parallel boards hold no more focal-length information than one.
Boards fixed at genuinely different angles to the camera are the exception — that geometry underlies published multiplane calibration. A single-view multiplane solve, though, needs the inter-board geometry measured and a custom bundle adjustment written, because the standard planar estimator models one plane per view. That is a research detour, not a calibration afternoon. Unless your line cannot stop for a re-shoot and your boards are welded at measured, non-parallel angles, capture separate frames instead.
What you need
- A printed chessboard: asymmetric, for example 9 by 6 inner corners with 25 mm squares. The arithmetic: (9 − 1) × 25 = 200 mm and (6 − 1) × 25 = 125 mm, so the pattern spans 200 × 125 mm. Asymmetry stops the detector from matching the pattern rotated 180°.
- A rigid backing: glass or an aluminium composite plate. Paper bows by tenths of a millimetre across a 200 mm board once humidity or mounting tension gets in — the same order as the corner accuracy you are trying to preserve.
- Calipers, to measure one printed square. Office printers drift one to two percent from design size; the intrinsics survive a scale error, but every estimated distance scales with it, so enter what you measured.
- A fixed optical configuration: tape the focus ring, fix the iris, never zoom. Focusing moves the lens groups and shifts the effective focal length measurably, and the estimator fits one intrinsics set to every view.
- Even, glare-free light, and a tripod or fixed mount.
A static target and a static camera also mean a rolling shutter sensor is no handicap in this job. For clean, interpolation-free corners, a mono C-mount camera such as the MV-CS200-10UM works well:
- Sensor format
- 1"
- Lens mount
- C-mount
- Interface
- USB3
- Resolution
- 16-25 MP
If you are still choosing hardware, the area scan cameras category filters by sensor format, mount and interface.
Capture the image set
- Mount the target flat and light it evenly, with no specular glare on the print. Diffuse front light works; a bare spotlight across glossy paper does not.
- Take one front-on shot with the board centred. This anchors the principal point.
- Tilt the board 20-45° about its vertical axis and shoot. Do the same about the horizontal axis, then add the four corner-tilt combinations. You want at least three distinct orientations — the tilts are what make the focal length observable.
- Move the board through every region of the frame, edges and corners included. Radial distortion lives at the edges; a set that keeps the board centred leaves it unestimated.
- Repeat until you hold 10-20 sharp frames, checking each for detection success and motion blur before it enters the solve. A missing view costs nothing; a corrupted one poisons the estimate.
- If focus or iris moves at any point, re-shoot the entire set. Two optical configurations fit neither.
Assemble the arrays and run the estimate
Shape the data exactly as the solver expects:
imagePointsAll % M-by-2-by-N double: one M-by-2 slice per photograph
worldPointsAll % M-by-2 double: the same board in millimetres, identical for every slice
imgSize % 1-by-2 double: [height width] in pixels, e.g. [3000 4000]
params = estimateCameraParameters(imagePointsAll, worldPointsAll, 'ImageSize', imgSize);
worldPointsAll stays the same for every slice because every view sees the same physical board; its millimetre values come from the square pitch you measured. The returned cameraParameters object is your single projection matrix for the whole set, and the calibration report attached to it lists a mean reprojection error per view, in pixels. That report is the acceptance test below.
The same one-plane-per-view discipline carries over when you calibrate a stereo pair from paired checkerboard images — there, one slice per synchronized frame.
Sanity-check the focal length before you look at any error values:
A worked check on the numbers
Take the LS-CMR-0166, a 12 MP USB3 area scan camera with a 1/1.7" IMX226 sensor, rolling shutter and 4000 × 3000 resolution:
- Sensor format
- 1/1.7"
- Interface
- USB3
- Resolution
- 12 MP
- Shutter
- Rolling
Its images are 4000 × 3000 px, so the principal point should land near (2000, 1500) px. Fit an 8 mm lens and assume a 1/1.7-class sensor about 7.4 mm wide: the formula predicts fx ≈ 8 × (4000 / 7.4) ≈ 4,324 px, call it 4,300 px. A calibration returning fx = 4290 px with cx = 1985 px passes; fx = 6100 px signals something structural — usually a focus change mid-set or a wrong sensor width in the formula.
Now count what the solve has to work with. The 9 × 6 board gives 54 corners per view. Fifteen views give 15 × 54 = 810 points, which is 1,620 scalar equations. The unknowns are four intrinsics (skew is normally fixed at zero), four distortion terms and six pose values per view: 4 + 4 + (6 × 15) = 98. That is about 16 observations per unknown — comfortable redundancy.
Run the same count on one photo of one board, tripled. The three slices contribute 3 × 108 = 324 equations, but each is a copy of the same 108, and one homography carries only 8 independent numbers. The extra 216 equations add weight, not information — which is why the solver either refuses or invents.
Suppose the report comes back with a mean of 0.18 px and one view at 0.61 px. Drop that view and re-run: the mean falls to 0.16 px and the remaining views sit between 0.11 and 0.24 px. That is a calibration you can ship.
Verify before you trust it
- Mean reprojection error: treat 0.3 px as the working target for measurement work and 0.5 px as the ceiling for pose guidance. These are practice values, not a written standard, and they assume a flat board captured as above.
- Per-view spread: any view two to three times above the mean is a bad detection, not a bad lens. Drop it and re-estimate; the mean should fall.
- Physical sanity: the principal point within a few percent of image centre, fx within about 5% of the nominal-focal-length prediction, and small radial terms — for a distortion-corrected C-mount lens, |k1| well under 0.1. A value far outside these ranges means a mid-set focus change, a wrong sensor width or a corrupted view.
Finish with an independent measurement: image a part with known dimensions and measure it through the calibration, exactly the method in camera calibration for length measurement from image markers. If a 100.0 mm gauge feature reads 100.2 mm, the 0.3 px budget is doing its job.
Mistakes that force a re-shoot
- Duplicated views. The worst case is not an error but acceptance: you get confident-looking intrinsics from one viewpoint.
- Boards entered as views: six camera poses that never existed.
- Fronto-parallel only. Thirty square-on frames are still the degenerate set; tilt is not optional.
- Autofocus left on: every frame then comes from a different effective focal length, and one intrinsics set fits none of them.
- Board never visiting the frame corners: the radial model stays unestimated exactly where it is largest.
- Mixed optics: any lens swap, zoom or refocus between frames splits the set into configurations that share no parameters.
The decision, case by case
- You already hold one photo with six boards: extract all 420 corners as one view if you want a geometry sanity check, but plan the re-shoot — 10-20 frames, one board, at least three tilts.
- The rig is sealed and the board cannot tilt: shim it anyway. A 10° wedge already breaks the parallel-planes degeneracy, and two or three shims give a workable set; translate the board across the frame between tilts.
- Photos arrive one board at a time: that is the standard route, one slice per photo. Different boards are fine as long as they share pattern and pitch, as prints from one run do.
- You need one projection matrix for 3D work: the cameraParameters object from this capture is the K in the pipeline described in decompose a projection matrix into camera intrinsics.
- No chessboard available at all: the surveyed-scene route in stereo calibration without a chessboard swaps the target for measured scene points.
- One camera, no stereo pair, and you are unsure what a minimal calibration needs: the constraints line up with single camera calibration when your device has no stereo pair.
Choosing hardware for the station itself starts at the camera finder or the camera step of the configurator; more capture-geometry material sits on the 3D topic page.
Questions
Can estimateCameraParameters take several chessboards from one photo?
It takes one plane per view: one array slice per camera pose, and every slice shows the same physical board. Boards sharing one photograph share one pose, so they form at most one view — and a single view cannot fix the focal length. Capture separate tilted photos of one board instead.
How many images does camera calibration need?
Two tilted views are the mathematical minimum to observe the focal length and three give a workable distortion fit. Practice starts at 10-20 photos, at least three distinct tilts, and the board passing through every region of the frame. Extra views mainly average out corner-detection noise, so sharpness matters more than sheer count.
What mean reprojection error should I accept?
Treat 0.3 px as the working target for measurement tasks and 0.5 px as the ceiling for pose guidance — practice values rather than a written standard. The per-view spread matters as much as the mean: one view sitting well above the rest points to a bad detection, and dropping it usually lowers the mean itself.
Should I recalibrate after changing the lens or refocusing?
Yes. An intrinsics set belongs to one optical configuration: a focus change, a lens swap or a different camera each invalidate it. Moving the whole rig without touching focus is the one case you can skip. Recalibrate per configuration — it costs the same 10-20 photos each time.
Why did duplicating one calibration image break the estimate?
Duplicated views carry zero relative rotation — the degenerate configuration for planar targets — so focal length and distortion become inseparable. Some solvers refuse the set outright; worse, one returns an intrinsics set that quietly weights a single viewpoint several times while looking healthy. Copies add weight to the equations, never information.
Can a single photo of boards at different angles work?
In principle: single-view multiplane calibration with measured board geometry exists in the calibration literature. It needs the inter-board angles and offsets known precisely and a custom bundle adjustment, because standard planar tools model one plane per view. For production work, 10-20 tilted photos of one board are faster to capture and far easier to defend.

