Requesting custom calibration for 2x GoPro Hero13 Black rig (5.3K, fixed dual-camera plate)

Hi gchen,
I’m using a fixed dual-camera rig to record youth football matches and have run into persistent parallax and misalignment at the stitch seam. I haven’t been able to resolve it with the calibration data currently available.

My setup:

  • 2x GoPro Hero13 Black cameras mounted on a custom, rigid dual-camera plate. The fixed relative angle and distance between the lenses were designed using GoPro10 technical drawings, and the cameras cannot shift relative to each other.
  • Tripod height: 4m, positioned ~1.5 m from the sideline, roughly on the halfway line so both goals are covered
  • Recording settings: 5.3K (5312x2988), 25fps, Wide lens; both cameras are confirmed to use identical settings
    Calibration used: the community GoPro13.json profile from the “Ghosting between 2 GoPro 13s” thread (14-coefficient rational distortion model, calibrated for 5312x2988).
    The problem: even after running Autocalibrate (Positions > Improve Offsets/Improve Angles), the seam remains consistently misaligned in a way that isn’t motion-related. It appears as a torn or doubled edge on objects relatively close to the rig, such as a mid flag or cone a few meters from the tripod, while the distant background (tree line, buildings) aligns well. This looks like classic parallax caused by the physical baseline between the lenses, rather than a blending or encoding issue. We’ve confirmed the issue is absent from each raw source individually and appears only after stitching; it also persists regardless of seam placement.

What I’ve tried without success:

  • Using the community GoPro13.json profile as-is
  • Repeatedly running Autocalibrate + Improve Angles/Offsets
  • Repositioning the seam angle to avoid nearby objects
  • Adding manual control points. Mixing near and far correspondence points worsened the overall alignment, suggesting a single homography can’t reconcile both depths.

For comparison, I tested the same footage in Mistika VR (trial) using its optical-flow-based stitcher, which resolved the parallax artefact. This suggests the issue can be fixed with proper per-rig calibration or blending, rather than being an inherent limitation of the footage.

Since there’s no calibration specific to a fixed dual-Hero13 rig with this exact geometry, I’d like to request a custom calibration or guidance on producing one for:

  • Camera: GoPro Hero13 Black (2x)
  • Resolution: 5.3K (5312x2988)
  • FPS: 25
  • Lens: Wide

I’m happy to record checkerboard calibration footage at these exact settings and share it via Google Drive or Dropbox if that would help produce or verify a suitable calibration for this rig.

Thanks for maintaining this tool.
Once we resolve the parallax issue, this will be exactly what we need for match-day stitching.
Daniel

Could you send me the videos so I can try them out?

Hi gchen,

I am sending the source files from the Sunday U9 tournament match for our stitching and calibration tests.
Below is an overview of the attached files and the technical parameters of our 3-metre tripod rig setup.

Really appreciate your help with this.
BR,
Daniel

FULL ZIP to download [GoPro13]
(Microsoft OneDrive)

1 minute from the Sunday match (3m tripod with below config)
Hermanicky1_cam0047_ukazka.mp4
Hermanicky1_cam0024_ukazka.mp4

Recording combination — Sunday, 2026-09-27, U9 Hermanicky Tournament
(files cam0024 - GX010024 / 0047 - GX010047):

Parameter Camera 0024 Camera 0047
Resolution 5312×2988 (5.3K) 5312×2988 (5.3K)
Frame rate 25 fps 25 fps
Codec HEVC (H.265) HEVC (H.265)
Color space yuvj420p (bt709, full range) yuvj420p (bt709, full range)
Bitrate ~120 Mb/s ~50 Mb/s ; this is fixed now
Audio AAC 48kHz stereo AAC 48kHz stereo

Rig geometry:
Tripod height: 3 m (U9 field - 37 × 26 m )
Plate tilt: 14.5° (fixed, printed wedge)
Camera yaw spread: ±45° from perpendicular (90° between cameras)
Baseline between lenses: ~10–13 cm
Distance from sideline: roughly 1.5–2 m

Calibration videos:
R_calibration_GX010052.MP4
L_calibration_GX010028.MP4
GoPro13_DS_v1.json ->my own to test calculating calibration :wink:

This is what I got using the calibration data from Ghosting between 2 gopro 13s

Not perfect, but good enough. The only exception is the red-yellow flag at the center bottom, because it is so close to the camera so it is difficult to eliminate the parallax effect. You can simply move the red dividing line so it doesn’t cross the flag.