Dataset specification (v0)

Layout:

dataset/v0/
  manifest.json
  train|val|test/
    scene_0000/
      meta.json
      frames.jsonl
      left/000000.png    (ou .webp)
      right/000000.png   (ou .webp)
      gt_points.npz

meta.json (per scene)

  • schema_version: "stereocomplex.dataset.v0"

  • stereo.left / stereo.right: view metadata (pixel pitch is mandatory)

  • board: target physical dimensions (mm)

  • sim_params: simulation parameters (optional, auditing)

sim_params (CPU/OptiX)

Possible fields (generator-dependent):

  • camera_model (e.g. "pinhole")

  • distortion_model: "none" or "brown"

  • distortion_left, distortion_right: Brown coefficients {k1,k2,p1,p2,k3}

  • image_format: "png" or "webp"

  • outside_mask: "none" or "hard" (black background outside the board)

Optional: opencv (detection tuning)

Real datasets (or non-default boards) may require OpenCV detector tuning. meta.json can optionally include:

  • opencv.aruco_detector: subset of cv2.aruco.DetectorParameters fields (e.g., adaptiveThreshWinSizeMax)

  • opencv.charuco_detector: subset of cv2.aruco.CharucoParameters fields (e.g., checkMarkers)

Example:

{
  "opencv": {
    "aruco_detector": { "adaptiveThreshWinSizeMax": 300 },
    "charuco_detector": { "checkMarkers": false }
  }
}

board.type = "charuco"

Required fields:

  • square_size_mm, marker_size_mm

  • squares_x, squares_y

  • aruco_dictionary (ex: "DICT_4X4_1000")

  • optional: pixels_per_square (useful for the CPU simulator)

  • optional: texture_interp (e.g. "linear", "cubic", "lanczos4")

frames.jsonl

One JSON object per frame: filenames + useful poses/parameters (simulation).

Notes :

  • Images can be stored as png (default) or lossless webp, depending on the generator.

gt_points.npz

NumPy arrays:

  • frame_id: (N,) frame indices

  • XYZ_world_mm: (N, 3) 3D points on the plane (mm)

  • uv_left_px: (N, 2) projections (px)

  • uv_right_px: (N, 2) projections (px)

gt_charuco_corners.npz (if board.type == "charuco")

NumPy arrays:

  • frame_id : (N,)

  • corner_id: (N,) stable id (row-major on the (rows-1, cols-1) corner grid)

  • XYZ_world_mm : (N, 3)

  • uv_left_px : (N, 2)

  • uv_right_px : (N, 2)