ZED X One Stereo Accuracy

I have been testing ZED X One stereo pairs along side the ZED 2i, and I am struggling to get good accurate & stable depth data from the X One’s.

I have these two cameras both mounted together onto a larger PTZ camera, which allows me to move the X One pair in a nice controlled way during calibration. In this configuration, the X One pair has a baseline of 218mm, almost twice as much as the 120mm baseline of the ZED 2i, so I am expecting the X One pair to give better quality depth info then the ZED 2i.

Testing:
My main form of testing has been to capture videos from both camera options of this outdoor test range, where I have placed A3 checkerboard targets at 10m, 15m, 20m & 25m. These checkerboards are on flat wooden boards, and I have used a laser range-finder to record the exact distances to each target from the ZED cameras.
I have written some python scripts which probe the estimated depth from the .svo files these known targets, and the script outputs statistical results of depth accuracy & stability to these known targets, These scripts all show the X One pair to have far less accurate estimated depth to the targets, and far more noise/instability in the depth. Also, when inspecting these .svo files manually in depth viewer it seems clear that depth data the 2i videos is much higher quality and more stable. I have tried this with both PERFORMANCE and with NEURAL+ modes.

Calibration
I have re-calibrated the ZED X One pair multiple times, and I take care to follow the advice that I’ve found online for good lighting, keeping the targets stationary, etc. I have been using an A3 size 18x12 target on a rigid timber board that I trust is flat. In my last few calibration attempts I kept the target stationary, and used the PTZ camera to carefully move the checkerboard around the fov for good even coverage. I did this until I got full coverage at 1m and at 3m to the checkerboard. I also recently modified the zedx-one-capture calibration code slightly so that is would need a minimum of 30 images before it moved on to the second part of the calibration.

Resolutions & Lenses

  • The X One cameras used here are the GS version with narrow lens, recording at it’s full 1920x1200.
  • The 2i has the narrow 4mm lens, and is recording at it’s full 2k.
  • So the 2i has a strong advantage with it’s much higher pixel density at the targets, and maybe this is the main factor explaining the better 2i performance here despite it’s smaller baseline.

A Note on Orientation
Both ZED cameras are mounted upside-down here. When setting up my ZED X One stereo pair, I first attached them to this aluminium bracket on the bench while they were facing the right way up, and I made sure that left and right cameras were showing on the correct sides in the media streamer. After confirming this, I then went ahead and flipped the whole aluminium bracket with both the X One cameras still attached as I mounted the bracket onto the PTZ camera.

My Questions

  • Should I expect the X One stereo with its 218mm baseline to give better quality depth data than the ZED 2i with its much smaller 120mm baseline? Noting the comments above about the 2i having better pixel density at the targets here.
  • Is there any other way that I can improve my X One Stereo calibration? I have tried the Stereolabs provided calibration procedure many times, but I am now wondering if there are some more advanced ways that I can fine-tune the calibration using some other methods?
  • What if I replaced the lenses on my X Ones with a much more narrow fov? I also have a set of X One 4K cameras here, and I am considering replacing those lenses with a narrow ~40deg fov lens. This should then give me much better pixel density when using these 4K cameras as the X One stereo pair. Is there any reason why this should not work for getting better depth data as long distances?
  • What results should I expect from increasing the X One baseline by 2x to around 400mm? Will the depth data be far more accurate & stable, or does the larger baseline advantage begin decreasing at some point?

@Myzhar Are you able to provide any help with this?

Hi @Blake-James
my apologizes for the delayed reply.

You should expect to retrieve better depth information at longer distances, but this does not mean that the overall depth quality will be better than a camera with a 120 mm baseline or 50 mm baseline.

PERFORMANCE is the “worst” depth mode that we provide, it privileges speed concerning depth quality.
I recommend you test ULTRA and NEURAL too.

Square sizes seem very small and could not allow you to extract good depth maps with those tables.

What’s the size of the squares?

Only rotations? No translations?
Translations are required too.

See my note above.

Increase the size of the chessboard squares.

This is normally an operation that can provide better results for the reasons you cited. On the other side, the overlapping area will be minor and so the minimum depth range will increase a lot.

This will allow you to obtain good depth information at longer distances, but could decrease the precision at shorter distances.

Thanks Walter,

Here is the exact checkerboard that I have been using for calibration (ZED 2i for scale). It is 18x12 with 19.42mm squares, printed on A3. I’ve carefully checked that the squares are exactly the same size in both directions.

Clarifying my calibration process:
Step 1 - For the first part of your calibration software (filling in the fov with green shading) I have this checkerboard attached to a wall 1m off the ground. I have the X One cameras attached to the PTZ camera, also 1m off the ground, directly in front of the target at 1m away. I use the PTZ motor to point the X One cameras in different directions until I get at least 10 images of the target with nice even coverage throughout the fov. I then move the cameras back to 3m away from the target and repeat with another >10 more images.

Step 2 - Then once your calibration software moves on to its part 2 for capturing x, y, z rotation images, then I take the checkerboard off the wall, and place it on a chair in front of the cameras. I rotate the chair and the checkerboard around into a variety of orientations and distances until your calibration software is finished with part 2. And then your software goes ahead and calculates the calibration file.

In your docs it mentions that the checkerboard target “should have enough markers (>100)”, and my 18x12 target has 216 markers. Do you think this is too many markers, and that the markers are too small? What is your advice for how we should improve the checkerboard design for calibration?
And do you have any other general advice for improving the calibration and overall performance of our X One stereo pair?

They can be too small when the chessboard is very far from the camera.
I recommend using larger squares.