Two cameras a few metres apart, a sloping field, and trees whose limb junctions you have already measured: no chessboard will ever span both fields of view, but stereo calibration still works. stereoCalibrate never asks where its 3D points come from, so surveyed scene points are a legal stand-in for board corners. What it cannot do is pull reliable intrinsics out of far, nearly coplanar points, so you keep a small board for that one step, up close. The steps below cover the survey spread, the marker choice, the lens and baseline numbers, the call that holds the intrinsics fixed, and the checks that tell you the result is trustworthy.
Stereo calibration from surveyed scene points: does it work?
Yes — stereoCalibrate only ever sees vectors of correspondences, so your surveyed tree junctions behave exactly like board corners: Point3f world coordinates in one shared frame, paired with Point2f pixel coordinates from each camera.
The function fits the rotation and translation between the cameras by driving reprojection error down; the origin of the 3D numbers is not its concern. Three rules make the substitution work. Every point must live in one world frame, and you set that origin once, because choosing where Z is measured from fixes what your flight coordinates will mean. Each point must be identifiable in both images without argument. And the two image lists must pair point-for-point in the same order.
This is the standard escape when a baseline outgrows any target, and it is where the hardware questions in wide baseline stereo camera selection for depth mapping end up. One boundary: if your measurements never leave a known plane, two-point linear scaling is the lighter tool, and troubleshooting linear scaling from two calibration points is a good tour of its failure modes. A clay in free flight leaves the plane within a second of launch, so you need the full geometry.
Is a chessboard still needed for the intrinsics?
You do, and it is the better path you suspected: calibrate each camera alone with a small board held 0.5 to 2 m from the lens, pass those intrinsics and distCoeffs into stereoCalibrate, and let the far points solve only the rotation and translation.
The reason is conditioning. Points 50 to 100 m away, clustered in depth and seen through a narrow-angle lens, let focal length trade against depth scale almost freely; a joint solve from them wanders, and the wander appears later as a depth-scale error of tens of percent. With the intrinsics held fixed, the far-point problem collapses to a pose estimation per camera plus the relative transform — well posed, stable with as few as six points, and limited by your survey rather than by the fit.
Board practice up close: 15 to 25 views per camera, the board tilted 15 to 30° and filling a quarter to a third of the frame, at distances from 0.5 to 2 m. Residuals of 0.1 to 0.5 px are normal. The full walkthrough lives in stereo camera calibration from paired checkerboard images; a paper target is fine at these distances, as camera calibration target flatness explains; calibration target field of view and lens coverage margins tells you how big the board must be behind a 16 mm lens.
How many points are needed, and how must they be spread?
Six non-coplanar points is the mathematical floor, but plan on 12 to 20, spread from the nearest thing you can survey to the farthest and across both edges of the field of view, keeping two or three back as hold-outs.
Depth spread is the one that bites. Trees all within about ±10 m of 75 m sit close to a single shell, and a shell behaves too much like a plane; add mid-field objects — a marked pole at 30 to 40 m, a corner of the trap house — until the ranges span at least three to one.
Match survey effort to image effort. In the rig sized below, one pixel at 75 m is about 23 mm, so a ±25 mm rangefinder survey already sets a 1 px floor on the residual; a total station at a few millimetres lets sub-pixel marker picking become the limit instead. For a quick audit, tape the distance between two adjacent markers and compare it with the distance your survey coordinates imply — a 25 mm tape measurement will catch a 0.1 m survey blunder every time.
Camera spacing and lens choice for a wide baseline
Start at an 8 m baseline with 16 mm lenses on a 1/1.7-inch-class sensor: at 75 m you get about 36 m of horizontal coverage and 42 mm of depth resolution per 0.2 pixel of disparity noise, and each of those numbers moves in a direction you can predict.
Worked example, metric. Cover a 30 m wide slice of sky at 75 m with a sensor 7.7 mm wide and 4.8 μm pixels (1,600 px across): m = 7.7 / 30,000 = 0.00026, so f = 75,000 mm × 0.00026 ≈ 19.3 mm — fit the standard focal length just below, which is 16 mm. At 16 mm the coverage is 75,000 × 7.7 / 16 ≈ 36.1 m, or 22.5 mm per pixel. Disparity at 75 m is d = 16 × 8,000 / (75,000 × 0.0048) = 356 px, comfortably inside the frame. Depth resolution at 0.2 px of matching noise is ΔZ = 75,000² × 0.2 × 0.0048 / (16 × 8,000) = 42 mm.
Every number scales by rule: halve the baseline to 4 m and ΔZ doubles to 85 mm; double it to 16 m and ΔZ halves to 21 mm; ΔZ grows with the square of distance. Verging the cameras changes none of that, it only moves the operating disparity. Parallel axes lose a strip of common coverage exactly as wide as the baseline (356 px × 22.5 mm ≈ 8 m), leaving 36.1 − 8 = 28 m of overlap, just short of the 30 m you asked for: verge each camera inward by atan(4.0 / 75) ≈ 3° and the full width returns. Why stereo depth coverage is smaller than one camera's field of view draws this out, and choosing the stereo baseline distance sizes B for other working distances.
Motion sets the shutter rule. A clay leaving the trap near 30 m/s crosses 3 mm during a 100 μs exposure — 0.13 px, invisible. A rolling shutter scanning the frame over roughly 20 ms drags the image about 0.6 m instead, so the pair must be global shutter. The 110 mm target then spans about 4.9 px, enough for a 0.5 to 1 px centroid, and that centroid noise is what your flight depth is made of: 1 px of matching noise is about 0.2 m of Z at 75 m per frame, while a filter across dozens of frames recovers centimetre-scale tracks.
Any matched pair of area scan cameras with global shutter and a trigger line will do the job, and the camera finder filters on both. The MV-CU020-90GC — a 2.5 MP GigE model with a global shutter and a C-mount — is the shape of camera this rig wants, bought as a matched pair.
- Sensor format
- 1/1.7"
- Lens mount
- C-mount
- Interface
- GigE
- Resolution
- Up to 3 MP
Tree junctions or placed markers: which to use?
Use placed markers where you can: a 25 mm retro-reflective disc or an infrared LED localizes to 0.1 to 0.2 pixel, while a limb-to-trunk junction is only good to about 1 pixel, because the fork's apparent position shifts with viewing angle.
Junctions cost you twice: both operators must click the same physical fork, and thick trunks move that fork by a fraction of a pixel to several pixels between views. A flat marker — survey tape, paint, a retro disc — pins the position. Infrared LEDs add a range-friendly twist: invisible to shooters, so you can calibrate during open hours, and their blobs centroid cleanly. A mono camera responds at 850 nm; a colour model's IR-cut filter kills the marker, so plan mono sensors for infrared markers, and tape or paint for colour ones.
On the deep end of that road sits short-wave infrared: the LS-IRC-0029 — 0.3 MP, mono, GigE, 15 μm × 15 μm pixels, C-mount, global shutter — with infrared cameras beyond it when you need to go past silicon. For most outdoor ranges a plain mono camera and an 850 nm marker are enough.
- Sensor format
- 1/1.2"
- Lens mount
- C-mount
- Interface
- GigE
- Resolution
- Up to 3 MP
What image size to pass when there is no chessboard
Pass the pixel dimensions of the frames you calibrated from — Size(1600, 1200) for a 1600 × 1200 sensor — because that argument initializes and scales the intrinsics and distortion model; it never describes the target, board or otherwise.
It is the same argument the board-based path uses, and a chessboard's grid never enters here: the grid is the pattern you hand the corner detector. The image size initializes the intrinsics whenever you let the solver estimate them, which is one more reason to fix them instead. If you later bin or crop the flight frames, scale fx, fy, cx and cy by the same factor before triangulating, or the world coordinates come out in the wrong units. Different camera models mean two different sizes; identical twins share one.
Running the calibration end to end
You need two matched global-shutter cameras on stiff mounts, prime lenses you can lock, a laser rangefinder or total station, a set of markers, and one calm afternoon with the field to yourself. For the twins, take the same 6 MP mono sensor in both cable worlds — one GigE, one USB3 — and let the cable run decide.
| Specification | MV-CT0MG0060/R/NN/NN | MV-CT0MU0060/R/NN/NN |
|---|---|---|
| Max. frame rate | 19.5 fps @ 3072 × 2048 Mono 8 | 60.9 fps @ 3072 × 2048 Mono 8 |
| Dynamic range | 71.3 dB | 66.2 dB |
| SNR | 41.3 dB | 41.4 dB |
| Exposure time | 25 μs to 3.1 sec | 8 μs to 1 sec |
| Exposure mode | Off/Once/Continuous exposure mode, supports Rolling and Global Reset | Off/Once/Continuous exposure mode, supports Rolling and Global Reset |
| Reverse image | Supports horizontal and vertical reverse image output | Supports horizontal and vertical reverse image output |
| Data interface | Gigabit Ethernet (1000 Mbit/s), compatible with Fast Ethernet (100 Mbit/s) | USB 3.0, compatible with USB 2.0 |
| Data interface type | RJ45 connector | Type-C interface |
| Digital I/O | 8-pin M8 A-Code aviation connector provides power and I/O, including opto-isolated input × 1 (Line 0), opto-isolated output × 1 (Line 1), bi-directional non-isolated I/O × 1 (Line 2). | 8-pin M8 A-Code aviation connector provides power and I/O, including opto-isolated input × 1 (Line 0), opto-isolated output × 1 (Line 1), bi-directional non-isolated I/O × 1 (Line 2). |
| Power supply | 9 VDC to 24 VDC, supports PoE | 9 VDC to 24 VDC, supports USB 3.0 power supply |
| Power consumption | Typ. 1.5 W @ 12 VDC | Typ. 1.5 W @ 5 VDC; (USB 3.0 provides power supply) |
| Dimension | 29 mm × 29 mm × 42 mm (1.1" × 1.1" × 1.7") | 29 mm × 29 mm × 30 mm (1.1" × 1.1" × 1.2") |
| Price | $909.00 | $969.00 |
All 2 share: Sensor type CMOS, rolling shutter; Sensor model Sony IMX178; Pixel size 2.4 μm × 2.4 μm; Sensor size 1/1.8"; Resolution 3072 × 2048; Gain 0 dB to 24 dB; Pixel format Mono 8/10/10Packed/12/12Packed; Mono/color Mono. Values as printed in each product's data sheet; open a part for its drawing and full specifications.
GigE runs 100 m on copper; passive USB3 gives up near 3 m — on an open field that usually ends the discussion.
- Mount and lock. Set focus at the working distance, stop down to f/4–f/8 for depth of field, then tape the focus and iris rings. The lens is now part of the calibration.
- Survey the points. 12 to 20 spots in one frame, origin at camera 1, axes written down; keep two or three hold-outs you never feed to the solver.
- Mark them. LEDs or tape on the surveyed positions, numbered so both operators pick in the same order.
- Shoot the scene. Static scene, several frames per camera; keep the sharpest from each.
- Board-intrinsics each camera. 15 to 25 tilted views at 0.5 to 2 m, residual at or under about 0.5 px. If the detector will not lock corners, checkerboard calibration not detecting corners lists the usual causes in order.
- Pick the scene points. Sub-pixel refinement on, same physical point, same order, in both images; assemble the
Point3flist and the twoPoint2flists. - Call
stereoCalibratewith each camera's intrinsics anddistCoeffsheld fixed — the fix-intrinsics flag — and the frame size in itsSizeargument; it returns the rotation and translation. - Run the checks in the next section, then store the matrices, distortion, frame size, date and ring positions in one file.
How to tell the result is good
Call it good when the reprojection RMS sits at or below about 1.5 px with junction points, or 0.5 px with LED markers, and a hold-out distance agrees with its surveyed value within 5 cm for LED points or about 30 cm for junctions.
The strongest single check is the translation itself: the norm of the returned t is your baseline, in the units of your survey, so a measured 8.00 m against a returned 7.98 m is 20 mm of agreement — healthy. If the RMS lands at 2 to 3 px instead, rank the per-point residuals before touching anything: one huge residual means a mis-paired click or a bad survey coordinate. Re-measure that point; deleting it silently hides a blunder that will follow you into every flight track.
Then one end-to-end pass: track a single clay through the field and look at the arc. A smooth ballistic curve says the rig is sound; a kink says a dropped frame or trigger skew, not calibration. After the first hard frost or any knock to a mount, re-shoot the scene points and re-fit only the rotation and translation — the board intrinsics keep.
When does this approach stop working?
Reach for something else when one board can span both fields of view — baselines inside about 2 m with a normal board — or when your surveyed points sit at nearly one distance and you insist on solving the intrinsics jointly from them.
Inside that 2 m, plain checkerboard stereo calibration is stronger than any survey you will do outdoors. If your survey kit cannot beat 0.1 m, that error lands directly in every world coordinate; rent a total station for a day. Consumer rolling-shutter or autofocus cameras ruin the flight frames before any of this mathematics is reached. And for static indoor volumes, a factory-calibrated unit from 3D sensors wins on effort — outdoors, at range, on flying targets, your wide-baseline pair wins.
Four checks before you order anything:
- Both cameras the same model, global shutter, with a trigger input or PTP.
- C-mount primes you can lock and tape, in the focal length the calculator gave you.
- GigE once the cable run passes a few metres.
- Mounts stiff enough that a wind gust does not re-fit your extrinsics.
Build the pair in the system configurator, browse more of the 3D topic page for sync, triangulation and point-cloud handling, and put survey-versus-hardware questions on the contact page — free expert support comes with every order.
Questions
Do both cameras have to be the same model?
Matching models make the rig easier to build and service: identical sensors, identical lens stock, and one spare covers both cameras. The mathematics does not demand it, because each camera gets its own intrinsics and the extrinsics live between them, so a mixed pair still calibrates the same way. What you should never mix is shutter type: pair global shutter with global shutter, or the two flight frames distort differently and the triangulation pays for it.
Do the shutters need to be synchronized for the calibration itself?
No. The scene points are static, so you can trigger the two cameras by hand, minutes apart if necessary, and the calibration is unaffected. Synchronization matters only for flight capture: with a clay moving near 30 m/s, every 1 ms of shutter skew becomes about 30 mm of disagreement between the two views of the same target. A shared hardware trigger line, or PTP (IEEE 1588) across GigE, holds the skew to microseconds.
Can one camera's intrinsics be copied to its twin?
No. Two samples of the same lens and sensor still differ by a percent or two in focal length and several pixels in principal point, and the distortion coefficients vary sample to sample. Copying the twin's numbers quietly inflates your reprojection RMS and biases depth at the far end. Board shots for the second camera take about fifteen minutes once the rig is set up; shoot both.
How often should recalibration happen?
Intrinsics hold for months to years as long as the focus and iris rings stay taped and untouched, because refocusing a prime lens shifts its effective focal length and the old intrinsics stop matching. Extrinsic drift is the live risk: after any knock, tripod reset or hard season change, re-shoot the surveyed points and re-fit only the rotation and translation. Make that re-fit part of your season-opening routine.
Can a third camera join the same survey?
Yes, and it is the low-effort kind of expansion. Every new camera calibrates against the same world frame: hold its intrinsics fixed, pick the same surveyed points in its images, and solve for its own rotation and translation into that frame. The third camera does not need to see both originals, only enough shared points, and eight to ten well-spread points is comfortable. Extra cameras even give you redundant measurements of the same flight.

