{
  "timestamp_utc": "2026-10-09T14:36:17.085346+00:00",
  "dataset_version": "perspective-match-v1",
  "real_execution": true,
  "real_inference": false,
  "fictional_data_only": true,
  "data_type": "controlled-synthetic",
  "data_context": "Twelve generated label pairs with known independent perspective transforms; four contain two planted changes, four include exposure offsets.",
  "case_count": 12,
  "completed": 12,
  "metrics": {
    "corner_registration": {
      "passed": 12,
      "total": 12
    },
    "changed_mask_overlap": {
      "passed": 4,
      "total": 4
    }
  },
  "measurements": {
    "mean_corner_error_px": 0.2545906566083431,
    "mean_changed_mask_iou": 0.8711451513311607,
    "clean_pairs_with_false_candidates": 2
  },
  "latency": {
    "median_case_seconds": 0.177,
    "p95_case_seconds": 0.185,
    "scope": "Full HTTP sample execution; reconstruction demo loads recorded geometry. Actual reconstruction time is in measurements."
  },
  "environment": {
    "cpu": "Intel(R) Core(TM) i7-14650HX",
    "gpu": "not used; all recorded pipelines ran on CPU",
    "python": "3.12.3"
  },
  "limits": "Same synthetic print generator across all pairs; no real print-line validation. Homography is for planar scenes. Interpolation, parallax, reflections and occlusion can create false change candidates.",
  "cases": [
    {
      "sample": "pair-01",
      "changed": false,
      "corner_error_px": 0.43853914737701416,
      "mask_iou": 0.0,
      "false_changed_fraction": 0.0015228571428571429,
      "matches": 224,
      "inliers": 211,
      "inlier_ratio": 0.9419642857142857,
      "median_reprojection_px": 0.2808551788330078,
      "overlap": 1.0,
      "matched_area": 0.5789591336898952,
      "changed_regions": 2,
      "changed_fraction": 0.0015228571428571429,
      "exposure_offset": 0.0
    },
    {
      "sample": "pair-02",
      "changed": true,
      "corner_error_px": 0.2396877557039261,
      "mask_iou": 0.8706077514703665,
      "false_changed_fraction": 0.008582857142857142,
      "matches": 226,
      "inliers": 219,
      "inlier_ratio": 0.9690265486725663,
      "median_reprojection_px": 0.2440345585346222,
      "overlap": 1.0,
      "matched_area": 0.5807043432775123,
      "changed_regions": 2,
      "changed_fraction": 0.008582857142857142,
      "exposure_offset": 0.0
    },
    {
      "sample": "pair-03",
      "changed": false,
      "corner_error_px": 0.1322183758020401,
      "mask_iou": 1.0,
      "false_changed_fraction": 0.0,
      "matches": 211,
      "inliers": 201,
      "inlier_ratio": 0.95260663507109,
      "median_reprojection_px": 0.27122533321380615,
      "overlap": 1.0,
      "matched_area": 0.5713737908496315,
      "changed_regions": 0,
      "changed_fraction": 0.0,
      "exposure_offset": -18.0
    },
    {
      "sample": "pair-04",
      "changed": false,
      "corner_error_px": 0.18318818509578705,
      "mask_iou": 1.0,
      "false_changed_fraction": 0.0,
      "matches": 261,
      "inliers": 252,
      "inlier_ratio": 0.9655172413793104,
      "median_reprojection_px": 0.21031320095062256,
      "overlap": 1.0,
      "matched_area": 0.5800751317492643,
      "changed_regions": 0,
      "changed_fraction": 0.0,
      "exposure_offset": 0.0
    },
    {
      "sample": "pair-05",
      "changed": true,
      "corner_error_px": 0.262825071811676,
      "mask_iou": 0.8732097090306046,
      "false_changed_fraction": 0.008612857142857143,
      "matches": 253,
      "inliers": 238,
      "inlier_ratio": 0.9407114624505929,
      "median_reprojection_px": 0.25527963042259216,
      "overlap": 1.0,
      "matched_area": 0.5760838753050425,
      "changed_regions": 2,
      "changed_fraction": 0.008612857142857143,
      "exposure_offset": 0.0
    },
    {
      "sample": "pair-06",
      "changed": false,
      "corner_error_px": 0.1672489196062088,
      "mask_iou": 1.0,
      "false_changed_fraction": 0.0,
      "matches": 229,
      "inliers": 223,
      "inlier_ratio": 0.9737991266375546,
      "median_reprojection_px": 0.20889680087566376,
      "overlap": 1.0,
      "matched_area": 0.5806596141983067,
      "changed_regions": 0,
      "changed_fraction": 0.0,
      "exposure_offset": -18.0
    },
    {
      "sample": "pair-07",
      "changed": false,
      "corner_error_px": 0.13893082737922668,
      "mask_iou": 1.0,
      "false_changed_fraction": 0.0,
      "matches": 267,
      "inliers": 249,
      "inlier_ratio": 0.9325842696629213,
      "median_reprojection_px": 0.19463884830474854,
      "overlap": 1.0,
      "matched_area": 0.5846720261001771,
      "changed_regions": 0,
      "changed_fraction": 0.0,
      "exposure_offset": 0.0
    },
    {
      "sample": "pair-08",
      "changed": true,
      "corner_error_px": 0.238727405667305,
      "mask_iou": 0.8701749095295537,
      "false_changed_fraction": 0.008581428571428571,
      "matches": 214,
      "inliers": 202,
      "inlier_ratio": 0.9439252336448598,
      "median_reprojection_px": 0.21099549531936646,
      "overlap": 1.0,
      "matched_area": 0.5838818971186688,
      "changed_regions": 2,
      "changed_fraction": 0.008581428571428571,
      "exposure_offset": 0.0
    },
    {
      "sample": "pair-09",
      "changed": false,
      "corner_error_px": 0.45542263984680176,
      "mask_iou": 0.0,
      "false_changed_fraction": 0.00025142857142857145,
      "matches": 204,
      "inliers": 190,
      "inlier_ratio": 0.9313725490196079,
      "median_reprojection_px": 0.29457545280456543,
      "overlap": 1.0,
      "matched_area": 0.5819709005645833,
      "changed_regions": 2,
      "changed_fraction": 0.00025142857142857145,
      "exposure_offset": -18.0
    },
    {
      "sample": "pair-10",
      "changed": false,
      "corner_error_px": 0.28355932235717773,
      "mask_iou": 1.0,
      "false_changed_fraction": 0.0,
      "matches": 250,
      "inliers": 238,
      "inlier_ratio": 0.952,
      "median_reprojection_px": 0.2202492207288742,
      "overlap": 1.0,
      "matched_area": 0.5807738977029575,
      "changed_regions": 0,
      "changed_fraction": 0.0,
      "exposure_offset": 0.0
    },
    {
      "sample": "pair-11",
      "changed": true,
      "corner_error_px": 0.26132622361183167,
      "mask_iou": 0.8705882352941177,
      "false_changed_fraction": 0.00858,
      "matches": 238,
      "inliers": 230,
      "inlier_ratio": 0.9663865546218487,
      "median_reprojection_px": 0.20122113823890686,
      "overlap": 1.0,
      "matched_area": 0.5779610975449335,
      "changed_regions": 2,
      "changed_fraction": 0.00858,
      "exposure_offset": 0.0
    },
    {
      "sample": "pair-12",
      "changed": false,
      "corner_error_px": 0.25341400504112244,
      "mask_iou": 1.0,
      "false_changed_fraction": 0.0,
      "matches": 247,
      "inliers": 239,
      "inlier_ratio": 0.9676113360323887,
      "median_reprojection_px": 0.22575196623802185,
      "overlap": 1.0,
      "matched_area": 0.5501343641920468,
      "changed_regions": 0,
      "changed_fraction": 0.0,
      "exposure_offset": -18.0
    }
  ]
}