You want focal length, principal point and a distortion model, and there is no checkerboard in sight: the camera is bolted inside a machine, the only reference in view is a fixture of points you can have surveyed, or corner detection keeps failing on your pattern. The calibration app in your toolbox probably accepts only checkerboard images; the estimator underneath it does not have that limitation, and the estimateCameraParameters function (or any equivalent) takes plain 3D-to-2D point lists from any target. This guide gives the data you must supply, the accuracy your world coordinates need, the point and view counts that solve the problem, and the checks that say the result is trustworthy. Once intrinsics exist, finding where the camera sits is the separate, easier problem covered in extrinsic calibration without a checkerboard.
Can I calibrate a camera without a checkerboard?
Yes: any estimator that ingests 3D-to-2D point correspondences will solve the full intrinsic set from your own known points, and the practical floor is about 20 points per view over 3 or more non-planar views.
The restriction lives in the app's front end, not in the mathematics. A calibration solve needs correspondences — world coordinates paired with image coordinates — and the checkerboard is merely the one pattern the app can find and label without help. Feed the same lists from a dot grid, a surveyed fixture or a stage-positioned point, and the solver returns the identical result: f_x, f_y, c_x, c_y, distortion coefficients, and the pose of the camera in every view.
What changes is the burden of proof. A checkerboard hands the solver exact relative geometry and asks you to measure a single number. Your own points hand it whatever accuracy you paid for, coordinate by coordinate, and that difference drives every recommendation below. If the intrinsics are already settled and only the camera's position is wanted, four well-placed known points are enough — see ground plane pose from one image.
What does the estimator actually need from me?
Per view, one list of world points in millimeters and one list of pixel coordinates in the same order, plus your choice of how many distortion terms to fit — nothing else, because the remaining bookkeeping is the solver's job.
The model most solvers fit has four intrinsic degrees of freedom once skew is pinned to zero — f_x, f_y, c_x, c_y — plus three radial and two tangential distortion terms, and every view adds six pose parameters (three rotation, three translation). State your units once and stay consistent: focal length comes back in pixels, pose in your world units.
The one thing the solver cannot do for you is labeling. Point 37 in your survey must be point 37 in the image, in every view. A swapped pair is the most common cause of a bad result, and it hides inside an otherwise plausible-looking fit.
How accurate do my known points have to be?
To about a fifth of a pixel's ground sample distance: at 0.075 mm per pixel that is ±0.015 mm in the world, which is CMM, surface-plate or machine-tool territory, not tape-measure territory.
World-coordinate noise passes through the solve almost one-for-one as reprojection error, so the tolerance follows from your pixel size on the object, not from the solver. Random scatter over 20-plus points averages down for pose; systematic error does not average at all — it reappears as wrong focal length and wrong distortion. A fifth of a ground sample keeps both effects near the 0.2-pixel level.
A manufactured pattern inverts the problem. Its internal geometry is exact by construction, only the pitch needs measuring, and pitch error goes straight into focal length as a percentage: a 1% pitch error is a 1% focal-length error. Arbitrary surveyed points enjoy no such subsidy — every coordinate carries its own error.
Worked example, with a 4000 × 3000 camera watching a 300 mm wide scene through a 16 mm lens on a 7.4 mm wide sensor (a 1/1.7"-format chip):
- Working distance: WD = 300 mm × 16 mm / 7.4 mm = 648.6 ≈ 650 mm.
- Ground sample: GSD = 300 mm / 4000 px = 0.075 mm per pixel.
- Survey tolerance: 0.075 mm / 5 = 0.015 mm (15 µm) per world coordinate.
- Seed focal length: f_px = 16 × 4000 / 7.4 ≈ 8650 px.
- Cross-check: m = 7.4 / 300 = 0.0247; f = 650 mm × 0.0247 / 1.0247 = 15.7 mm, which rounds back to the 16 mm the example began with.
A fixture surveyed to ±0.5 mm instead of ±0.015 mm puts ±0.5 / 0.075 ≈ ±7 pixels of noise into the input: the averaged pose is still usable, the intrinsics are not. Why sensor size and focal length set the field of view derives the two lengths, and the lens focal length calculator runs the arithmetic in both directions.
The hardware behind the numbers: among area scan cameras the LS-CMR-0166 is a 12 MP USB3 model with a 4000 × 3000 resolution and a 1/1.7" sensor format. Substitute your sensor's actual active width and every number above scales with it.
- Sensor format
- 1/1.7"
- Interface
- USB3
- Resolution
- 12 MP
- Shutter
- Rolling
A 16 mm lens suits this field of view; in machine vision lenses the LS-FFL-0567 prints 16 mm focal length, 1.1" format, 20 MP resolution, C-mount, an F2.8-22 iris and under 0.3% distortion.
- Type
- Machine vision fixed
- Sensor format
- 1.1"
- Mount
- C-mount
- Resolution
- 16-25 MP
Even 0.3% distortion is 0.3% of the field radius: at 2000 px from the center that is 6 px of unmodeled shift, which is why distortion gets fitted even on low-distortion glass.
How many points and how many views do I need?
The counting minimum is 5 points per view across 3 non-planar views for the common nine-parameter model, and 20 or more per view is the working number, leaving better than four equations per unknown.
Count equations against unknowns. The model fits nine camera parameters — f_x, f_y, c_x, c_y, three radial terms and two tangential terms — and every view adds six pose parameters. Three views of five points each give 3 × 5 × 2 = 30 equations for 9 + 3 × 6 = 27 unknowns. Solvable, with nothing to spare: one blurred point or one mislabel and the fit has no redundancy to absorb it. Twenty points per view gives 120 equations against the same 27, and noise now has something to average over.
A planar target counts differently. Each view of a plane contributes only two constraints on the four intrinsic degrees of freedom, so two poses is the algebraic floor, three the practical one, and ten to fifteen poses the comfortable working range once the distortion terms ride along. One view of a plane determines nothing at all — distance to the plane trades against focal length. Six non-coplanar points in a single view do pin down the full projection matrix, but the split into focal length, principal point and distortion is badly conditioned from one angle; treat a single-view solution as a seed, never a result.
Spread the poses: tilts between about 20° and 45° off perpendicular, rotations about the camera axis between shots, and points pushed into the corners of the frame — calibration target field of view and lens coverage margins sets out how much of the frame to fill. For a two-camera rig, calibrate each camera on its own and then solve the fixed transform between them, the procedure in stereo calibration without a chessboard; rigs whose cameras never share a view are chained through intermediate target positions, as in multi-camera networks calibrated without overlap.
What target works in place of the checkerboard?
A stiff plate carrying a grid of dots you had machined or printed to size, a fixture of surveyed features already on your machine, or a single point moved by a CNC axis — in that order of convenience.
| Target | What you must measure | Points and views | The trap |
|---|---|---|---|
| Machined dot-grid plate | one pitch, plus flatness on a surface plate | 20+ points, 10+ planar poses | trusting the drawing pitch instead of measuring the plate |
| Printed pattern on rigid stock | printed pitch, re-measured; stock flatness | 20+ points, 10+ poses | printer scaling and paper curl — measure, never trust the file |
| Surveyed fixture points | all three coordinates of every point (CMM) | 20+ points, 3+ non-planar views | reach, and labeling which detection is which surveyed point |
| Stage-moved point | axis position at every capture | 20+ positions, 3+ depth planes | a planar sweep covers one plane, not a 3D target |
How do I run the calibration step by step?
Lock the optics, capture three or more views with tilts spread between about 20 and 45 degrees, mark the points once, then let the estimator iterate from a focal-length guess within ten percent.
- Lock the optical state. Focus and iris set and locked, exposure short, automatic functions off — the balance is the one described under auto exposure vs iris control, and the aperture you calibrate at must be the one you run at, since aperture, f-number and depth of field move together.
- Set the geometry. Choose the field of view the inspection will really use — 300 mm at 650 mm in the worked example — and compute GSD and the survey tolerance from it.
- Measure the target. One pitch for a plate; every coordinate for a surveyed fixture; axis positions for a moved point. Write units and point numbers into the correspondence file as you go.
- Capture the views. Three or more non-planar views (or ten-plus planar poses), tilted and rotated between shots, filling the frame corners. Trigger remotely; never touch the lens between views.
- Extract image points. Dot centroids, corner operators or manual picks on a zoomed image — record to subpixel precision and keep the ordering identical to the world list.
- Seed and solve. Convert the focal length to pixels (16 × 4000 / 7.4 ≈ 8650 px here), take each view's initial pose with a Perspective-n-Point solve — solvePnP is the standard call, and Perspective-n-Point reviews the variants — then run the joint refinement over all parameters. That seed-then-refine order is how these estimators work, and estimateCameraParameters accepts exactly these correspondence inputs from any pattern.
- Validate and freeze. Apply the thresholds in the next section, then record camera serial, focal setting and aperture alongside the coefficients.
Keep the camera on a rigid mount and put the motion into the target: among camera stands the LS-MNT-0040 is a slide-table type with a 700 mm height and a 400 × 450 mm base.
- Type
- Camera stands
What numbers tell me the calibration is good?
Mean reprojection error at or under 0.3 px, no single view above 0.5 px, a principal point within about 2 percent of the frame size from the image center, and a distortion curve that rises smoothly toward the corners.
Read the per-view error table, not just the mean. One view at 0.9 px with the rest at 0.2 px is almost always two swapped correspondences or a nudge between captures — fix and re-solve. Then hold a handful of points out of the fit and project them: a trustworthy calibration lands them inside the same error band as the fitted points.
- Reprojection RMS at or under 0.3 px, worst view at or under 0.5 px.
- f_x and f_y agree within 1-2%; skew sits at zero.
- Principal point within 2% of frame dimensions of center — outside that, distrust it: principal point uncertainty explains why it wanders.
- Distortion smooth to the corner; visualize it as a lens distortion vector map.
- Removing any one view moves f by well under 1%.
With the intrinsics settled, the same known points go on to pose work. If the camera feeds a robot, the next board you size is the hand-eye calibration target.
When is a checkerboard still the better choice?
Whenever you can physically bring a rigid pattern in front of the lens: one measured dimension replaces a full coordinate survey, and automatic corner detection removes the labeling mistakes hand-picked points invite.
Decide by case:
- Pattern can reach the camera: use a manufactured pattern, dot grid or checkerboard. Sizing rules are in how many squares and how big a checkerboard target should be; imaging rules in checkerboard target image quality requirements.
- Camera sealed in place, fixture already surveyed to a fifth of a GSD: use the fixture and save the teardown.
- Points known to no better than ±0.5 mm: use them for pose only, and take intrinsics from a pattern on the bench, with focus pre-set to the working distance before the camera is closed in.
- Long standoff: the tolerance relaxes as GSD grows. At 10 m the example camera covers about 4.6 m and GSD is 1.2 mm per pixel, so the survey bar drops to ±0.23 mm — but survey instruments there deliver millimeters, so intrinsics come from a large pattern at range and the field points update only the pose.
Next step: build the station around the calibration. The camera configurator walks sensor, lens and stand, and the numbers in the worked example transfer directly into it.
Kysymykset
Can a single view of known 3D points give me full intrinsics?
Arithmetically yes: six non-coplanar correspondences give twelve equations for the eleven parameters of a projection matrix, and the intrinsics are inside that matrix. In practice one view conditions focal length, principal point and distortion against each other, so the split moves from run to run. Use a single-view solution only as the seed for a multi-view fit, never as the delivered calibration.
What happens if my known points are only accurate to ±0.5 mm?
At the worked example's 0.075 mm per pixel, ±0.5 mm is about ±7 pixels of input noise, and reprojection error floors near that value. The averaged pose is still good enough for guidance; focal length and distortion come out percent-level wrong. Use roughly surveyed points for extrinsics only, and take the intrinsics from a manufactured pattern whose geometry is exact.
Is moving the target as good as moving the camera?
Yes. The equations constrain only the relative geometry between camera and points, so a fixed camera with a target on a stage produces the same solution as a camera moved around a fixed target. What must not change between views is the optical state: focus, zoom and iris each define a different set of intrinsics, so lock them before the first capture.
Do dot targets measure better than corner targets?
They measure more forgivingly. A filled circle's centroid is averaged over many pixels and stays put when the image is slightly defocused, while a corner can bias under asymmetric blur or vignetting. In sharp, evenly lit images both land well inside 0.1 px, so an existing checkerboard is not a reason to redo anything.
How do I convert focal length to pixels for the solver's starting guess?
Multiply the lens focal length by the pixel count across the sensor and divide by the sensor's active width: 16 mm × 4000 px / 7.4 mm ≈ 8650 px. The solver needs this seed only to within about ten percent, so a nominal lens marking plus the optical-format sensor width is enough to start; the fit refines the rest.


