We have using Oak-D pro wide depth camera with ROS Noetic. On this, we are not able to get clear pointcloud for RGB image.

We have tried apply filter to get the clear pointcloud. In this, we have used stereo_i_depth_rectified gives the filtered pointcloud for 2 meter. Solid object is clearly visible, but human or uneven structure has the reflection pointcloud.

In order to this, How I can increase the range from 2 to 4 meter on the filtered point and get more clear point clouds for uneven surface too.

I have attached link, which we have tried to increase the range. But not useful.

Can you help me to clear this issue with ros driver and yaml.

Depth Accuracy

    PonDinesh
    Can you share some images of the issue you are experiencing?

    Thanks,
    Jaka

    Yes, Will share the image.

    But I have sorted limited pointcloud range due to I have the added max range as 2m in launch file.

    I found the another issue is depth is not matching for particular range. so I have applied the filter to the pointcloud which are mentioned in the documentation (https://docs.luxonis.com/hardware/platform/depth/configuring-stereo-depth/#Configuring%20Stereo%20Depth-4.%20Short%20range%20stereo%20depth-How%20to%20get%20lower%20MinZ-Lowering%20resolution%20to%20decrease%20MinZ).

    Eventhough pointclouds are better than previous, but at particular area in the image gives the shortest depth point for the object longer than 2m away from the camera.

    Hereby, I have attached the image of the pointcloud, RGB, stereo images and PCL yaml file.

    pcl.yaml

    /oak:

    camera_i_enable_ir: true

    camera_i_laser_dot_brightness: 800

    camera_i_nn_type: none

    right_i_publish_topic: true

    stereo_i_align_depth: true

    # RGB Camera settings from Python

    rgb_i_resolution: 1080P # camRgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P)

    rgb_i_fps: 15 # camRgb.setFps(FPS)

    # Mono/Stereo camera settings

    mono_i_resolution: 400P

    mono_i_fps: 15 # Reduced from 30 for longer exposure time

    mono_i_exposure_time: 33000 # Setting exposure time to ~1/15s (in microseconds)

    mono_i_iso: 800 # Keeping ISO/gain moderate

    # ISP (Image Signal Processing) settings for mono cameras

    mono_i_sharpness: 1.0 # Moderate sharpness to avoid noise amplification

    mono_i_luma_denoise: 2 # Luminance denoising level

    mono_i_sensor_bit_depth: 10 # Using higher bit depth for better dynamic range

    stereo_i_profile: HIGH_DENSITY

    stereo_i_confidence_threshold: 80 # Increased threshold to filter more noise

    # stereo_i_median_filter: KERNEL_7x7

    stereo_i_lr_check: true

    stereo_i_extended_disparity: true

    stereo_i_subpixel: true

    # 1. Temporal filter (reduces ghosting)

    stereo_i_temporal_filter_enable: true

    stereo_i_temporal_filter_alpha: 0.6 # Add temporal filtering

    stereo_i_temporal_filter_delta: 10 # Add temporal filtering

    stereo_i_temporal_filter_persistence: 3

    # 2. Speckle filter (removes small blobs)

    stereo_i_speckle_filter_enable: true

    stereo_i_speckle_filter_range: 50 # Add speckle filter for noise

    # 3. Spatial filter (reduces noise)

    stereo_i_spatial_filter_enable: true

    stereo_i_spatial_filter_iterations: 2 # Add spatial filtering

    stereo_i_spatial_filter_alpha: 0.5 # Add spatial filtering

    stereo_i_spatial_filter_delta: 5 # Add spatial filtering

    # 4. Median Filter (Hardware-based noise reduction)

    stereo_i_median_filter: KERNEL_7x7

    # 5. Decimation Filter (Final resolution reduction)

    stereo_i_decimation_factor: 1 # Reduce resolution to improve matching

    stereo_i_decimation_mode: MEAN

    # 6. Threshold Filter (Early removal of out-of-range values)

    stereo_i_depth_filter_enable: true

    stereo_i_depth_min: 200 # Minimum depth in mm (30cm)

    stereo_i_depth_max: 4000 # Maximum depth in mm (2m)

    # 7. Brightness Filter (for high dynamic range scenes)

    stereo_i_brightness_filter_enable: true

    stereo_i_brightness_filter_min: 100 # Min brightness threshold (0-255)

    stereo_i_brightness_filter_max: 220 # Max brightness threshold (0-255)

    # 8. Edge filter (removes edges)

    stereo_i_edge_filter_enable: true

    stereo_i_edge_filter_threshold: 10 # Add edge filter

    stereo_i_edge_filter_delta: 5 # Add edge filter

    stereo_i_edge_filter_min_intensity: 10 # Add edge filter

    stereo_i_edge_filter_max_intensity: 200 # Add edge filter

    # Hardware resource allocation for post-processing

    stereo_i_post_processing_shaves: 3

    stereo_i_post_processing_memory: 3 # Point cloud settings

    stereo_i_enable: true stereo_i_publish_topic: true

    stereo_i_output_depth: true

    stereo_i_output_rectified: true

    # Frame settings

    base_frame: oak-d_frame

    parent_frame: oak-d-base-frame

    I have shared three more image with clear background, eventhough it is not giving correct pointcloud. Some pointclouds are missed and some are in wrong position.

      Hi, could you try changing stereo_i_profile: parameter to, for example ROBOTICS or DEFAULT?. Regarding artifacts, they might also be caused by IR projector, if the patterns/floodlight shine on a reflective surface they can also lead to wrong disparity estimations. Also, is this something that you can replicate with Python examples?

      I have set the stereo*_i_profile: default to same issue.

      But, when i tries with the python visualize_pointcloud.py gives the exact pointcloud for the same location.