Hi,
I’m capturing static scenes with ZED X cameras and using the point cloud for cardboard box detection and pose estimation. My problem is that flat surfaces do not come out flat: cardboard box faces bow outwards in the point cloud, which then tilts the estimated box pose. It is worst on small, low-texture faces and when a box is partially occluded.
The box the arrow points at is a plain, flat-sided cardboard box sitting on the floor. Viewed nearly edge-on, its front face is clearly bowed out towards the camera in the middle instead of forming a straight vertical line, and the surface sags away at the edges. Nothing in the real scene is curved. Both clouds are ZED X in NEURAL PLUS.
What I’ve already tried
- Disabled depth stabilization (
depth_stabilization: 0) - this does reduce the curving, but doesn’t remove it. - Lowered the confidence threshold to drop the bad points - this doesn’t really help: I lose good points before I lose the curved ones.
My current configuration (ZED ROS 2 wrapper) -
general:
grab_resolution: "HD1200"
pub_resolution: "NATIVE"
depth:
depth_mode: "NEURAL_PLUS"
publish_point_cloud: true
xyz_only_pointcloud: true
depth_stabilization: 0
depth_confidence: 50
depth_texture_conf: 100
pos_tracking:
pos_tracking_enabled: true
set_as_static: false
imu_fusion: false
video:
auto_whitebalance: true
whitebalance_temperature: 42
saturation: 5
sharpness: 5
gamma: 1
Questions
-
For a static scene and a static camera, what is the recommended depth configuration? Since I don’t need temporal filtering at all, is
depth_stabilization: 0correct, or is there a better approach - e.g. grabbing several frames and averaging? -
Is
depth_texture_conf: 100a bad choice for low-texture surfaces? My targets are plain cardboard with very little texture. Would lowering this filter out exactly the unreliable regions that are curving, and what value would you suggest as a starting point? -
Is this curving expected behaviour of the neural depth models on textureless planes? If so, is NEURAL_PLUS actually the best choice here, or would NEURAL, or even a non-neural mode, give flatter planes on this kind of surface?
-
Does
pos_tracking_enabled: truewithset_as_static: falseaffect depth at all when the camera is not moving? Should I setset_as_static: true, or disable positional tracking entirely for a fixed camera? -
Is there a recommended way to reject curved/bent regions that works better than the confidence threshold? Anything exposing per-pixel depth uncertainty that would let me drop the bad regions without also losing valid points?
Any guidance on the best overall configuration for accurate, flat point clouds on static, low-texture scenes would be much appreciated. Thanks!
