OpenCV Calibration Audit

Executive summary

Quality gates: PASSED

3 accepted calibration views from 3 files. OpenCV RMS: 0.20340 px.

Pass/fail quality gates

Dataset counts and metrics

{
  "discovered_count": 3,
  "readable_count": 3,
  "detected_count": 3,
  "accepted_count": 3,
  "warning_count": 2,
  "rejected_count": 0,
  "unreadable_count": 0,
  "detection_rate": 1.0,
  "coverage_grid": [
    [
      0,
      0,
      0,
      0
    ],
    [
      0,
      0,
      3,
      0
    ],
    [
      0,
      0,
      0,
      0
    ]
  ],
  "occupied_coverage_cells": 1,
  "coverage_ratio": 0.08333333333333333,
  "corner_density_grid": [
    [
      0,
      19,
      26,
      7
    ],
    [
      0,
      29,
      40,
      17
    ],
    [
      0,
      4,
      16,
      4
    ]
  ],
  "scale_min": 0.26277651193271157,
  "scale_max": 0.46862020197127985,
  "scale_median": 0.41266563998664263,
  "scale_iqr": 0.10292184501928414,
  "occupied_scale_bins": 3,
  "rotation_range_degrees": 89.3570877095579,
  "horizontal_perspective_range": 0.1370729353299674,
  "vertical_perspective_range": 0.2598575602435533,
  "duplicate_count": 0
}

Coverage heatmap

Coverage heatmap

Sharpness distribution

Board-region variance of Laplacian for calibration views.

left01.jpg579.84
left02.jpg340.73
left03.jpg587.91

Scale and pose diversity

These assessments are heuristic, not a physical certificate.

Calibration parameters

{
  "camera_model": "pinhole",
  "image_size": [
    640,
    480
  ],
  "opencv_rms": 0.20340291970181212,
  "camera_matrix": [
    [
      535.4891370284612,
      0.0,
      341.6228649364716
    ],
    [
      0.0,
      536.7293891622663,
      234.43436418806436
    ],
    [
      0.0,
      0.0,
      1.0
    ]
  ],
  "distortion_coefficients": [
    -0.3167297374324814,
    0.21519540968566292,
    0.0016617683409911475,
    0.0009056149866629888,
    -0.16542528687003036
  ],
  "rotation_vectors": [
    [
      -0.4343827824153476,
      0.26711541650527393,
      -3.0868237724543386
    ],
    [
      0.6878954813521805,
      -0.4395432201112522,
      1.6552546571540114
    ],
    [
      -0.2644229356490152,
      -0.39376875227334673,
      -2.747693589710688
    ]
  ],
  "translation_vectors": [
    [
      0.14275680805780136,
      0.02681254482728464,
      0.4392453956190113
    ],
    [
      0.09962415135176081,
      -0.05094937457297831,
      0.25429897380302097
    ],
    [
      0.1186726034405404,
      0.09085357999699209,
      0.29068391619419687
    ]
  ],
  "calibration_flags": 0,
  "mean_per_view_rmse_px": 0.20260696602909348
}

Reprojection-error chart

Per-view reprojection errors

Accepted, warning, and rejected images

Annotated previews show detected inner corners and the evaluated physical board boundary.

PreviewImage and decisionMetricsDecision details
Annotated preview for left01.jpg left01.jpg
ACCEPTED
Accepted for calibration
Detector: findChessboardCornersSB
Physical board area: 0.26277651193271157
Board sharpness: 579.8427672879492
In-sample RMSE: 0.1974014474935786
No warnings or rejection reasons.
Annotated preview for left02.jpg left02.jpg
WARNING
Accepted with warning
Detector: findChessboardCornersSB
Physical board area: 0.41266563998664263
Board sharpness: 340.73278981353707
In-sample RMSE: 0.22675551335368663
  • BOARD_CLIPPED_OR_NEAR_BORDER WARNING
    Estimated physical board boundary is clipped or close to an image border.
    Measured: 0.007870239516099295; Threshold/rule: 0.01
Annotated preview for left03.jpg left03.jpg
WARNING
Accepted with warning
Detector: findChessboardCornersSB
Physical board area: 0.46862020197127985
Board sharpness: 587.9059410669647
In-sample RMSE: 0.18366393724001526
  • BOARD_CLIPPED_OR_NEAR_BORDER WARNING
    Estimated physical board boundary is clipped or close to an image border.
    Measured: -0.038849925994873045; Threshold/rule: 0.01

Configuration and tool version

Version 0.2.1; generated 2026-07-31T12:00:00+03:00

{
  "pattern": {
    "cols": 9,
    "rows": 6,
    "square_size": 30.0,
    "unit": "mm"
  },
  "recursive": false,
  "min_valid_images": 3,
  "min_board_area": 0.01,
  "max_board_area": 0.9,
  "min_sharpness": null,
  "max_per_view_error": null,
  "disable_fallback_detector": false,
  "fail_on_warning": false,
  "overwrite_output": false,
  "log_level": "INFO",
  "coverage_cols": 4,
  "coverage_rows": 3,
  "max_file_size_mb": 100,
  "near_border_ratio": 0.01,
  "relative_sharpness_factor": 0.35,
  "duplicate_center_distance": 0.03,
  "duplicate_log_area_distance": 0.08,
  "duplicate_rotation_degrees": 5.0,
  "duplicate_perspective_distance": 0.08,
  "min_coverage_ratio": 0.35,
  "min_scale_bins": 3,
  "min_rotation_range_degrees": 15.0
}

Metric limitations

Sharpness depends on resolution, optics, and target scale. Coverage and diversity thresholds are heuristics. Per-view reprojection error is an in-sample residual: it is calculated after fitting the camera model on the same accepted dataset and is not independent validation. Calibration results apply only to the accepted dataset and pinhole model.