Depth image quality by D435i camera
I obtained a point cloud of a plant at a distance of 40 cm under indoor LED lighting using the D435i camera with Python. In the RGB image, the stem of the plant is visible, but it is missing in the depth image.
Are there any conditions that can improve the quality of depth images? For example, what type of indoor lighting (such as halogen or LED) should be used, what should the brightness be, or what background color is recommended?
The specifications of the D435i are as follows: Minimum depth distance (Min-Z) at max resolution: ~28 cm Depth Accuracy: <2% at 2 m
Do I need to capture the image from a closer distance, such as 20 cm, to obtain accurate depth images?
Also, when looking at the point cloud, there is a lot of noise and the image is obtained very different from the real one. Please give me advice on this as well.
I would like to obtain high-quality depth images using the D435i. I would appreciate any advice or advice you can give me.
-
Hi Jooseuk LED lighting is a good choice for observing plants with a RealSense camera.
Thin objects such as stems may be difficult for the camera's depth sensing to pick up. The link below demonstrates how changing the D435's depth unit scale value from its default of '0.001' to the smaller value of '0.0001' may help a thin object (a toothpick, in that particular case) to be rendered on the depth image.
https://github.com/IntelRealSense/librealsense/issues/8228
Vegetation leaves are reflective to light, so this may be making it more difficult for the camera to read the surface of the leaves. Adding a physical filter product called a thin film linear polarizer over the lenses on the front of the camera can help to greatly dampen glare from reflections. Because most polarization filters will work so long as they are linear, they can be purchased inexpensively by searching stores such as Amazon for the term linear polarizing filter sheet
-
Hi MartyG, thank you for answering.
I'm using Python with the following code to get depth images:'import pyrealsense2 as rs
import numpy as np
import cv2
import time
first_frame = True
# RealSense pipeline
pipeline = rs.pipeline()
config = rs.config()
# stream
config.enable_stream(rs.stream.depth, 1280, 720, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 1280, 720, rs.format.bgr8, 30)
'
Can I change a value to '0.0001' in Python? -
You can change the depth scale value in Python with the instruction rs.option.depth_units
https://github.com/IntelRealSense/librealsense/issues/10976#issuecomment-1271236193
Please sign in to leave a comment.
Comments
3 comments