-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
L515 depth-camera intrinsic parameters confilct btw SDK and self-calibration\. #11103
Comments
Hi @StevenZzz07 It is not unusual for there to be differences between RealSense calibration data and calibration information obtained from third-party tools such as Kalibr. For example, the 5 coefficients are typically all set to zero in the official intrinsics (except for the color stream, whose coefficients can be non-zero). They are purposely set to zero for reasons explained by a RealSense team member at #1430 (comment) I would always recommend to rely on the calibration data provided by the RealSense SDK and official RealSense tools such as rs-enumerate-devices as they are designed specifically for RealSense camera hardware. If the hand is being observed by the L515 camera at very close range then the missing areas of red on the RealSense cloud may be accounted for by the hand being slightly below the L515's minimum depth sensing range of around 25 cm from the camera. When an observed object moves closer to the camera than the minimum distance then the depth image will begin progressively breaking up as the surface gets closer and closer to the camera. Setting the L515's Min Distance option to '0' instead of its default of '400' with Python code at #8244 (comment) may improve your RealSense hand image. |
Hi, @MartyG-RealSense Thanks for ur quick and detailed reply. As for your response, i still have some questions as follows:
Thanks for ur patience! |
Sincere apologies for the delayed response, as I just found your message. I will respond to the above questions tomorrow. Thanks! |
It is possible for a camera to become mis-calibrated due to excessive temperature and need to be recalibrated, though it would likely have to be a very high temperature.
The L515 camera model does not have a calibration tool for depth and RGB. It uses a different camera technology (lidar depth) to the technology used in the 400 Series cameras (stereo depth). Intel's original press release for the launch of L515 stated that it retains its depth accuracy throughout its lifespan without the need for calibration. https://newsroom.intel.com/news/intel-realsense-lidar-camera-technology-redefines-computer-vision/ The L515's IMU has a compatible calibration tool, though this would not be relevant to this particular case. https://github.com/IntelRealSense/librealsense/tree/master/tools/rs-imu-calibration Intrinsics and extrinsics can be retrieved with the instructions get_intrinsics() and get_extrinsics_to(). Here is some example Python code for doing so, obtained from an L515 case at #10484
RealSense does support undistorted infrared images with its Y16 format, which is unrectified because Y16 is used for camera calibration. This format is not supported on the L515 camera model though, unfortunately, as it is a 400 Series format. Information about how undistortion of images for particular types of distortion model is handled in the RealSense SDK is described in its Projection documentation. https://dev.intelrealsense.com/docs/projection-in-intel-realsense-sdk-20#distortion-models |
@MartyG-RealSense Thanks for the detailed reply. I don't have any further questions. |
You are very welcome, @StevenZzz07 - thanks very much for the update. As you do not have further questions, I will close this case. Thanks again! |
Issue Description
Hi there. I just came with a problem that the depth-camera intrinsic parameters brought by librealsense SDK are not equal to the calibrated results by myself. For SDK, I got intrinsic of depth-camera by SDK as follows:




And i utilize the Zhang's calibration using chess borad to obtain instrinsic parameters on IR images. The followings are part of images i used to compute paramters:
And the results are:
As we can see, the fx and fy confilcts. Also, the SDK does not give out the distortion parameters.
What's more, I also use two sets of intrinsic parameters to convert the same depth map to point cloud. There also exist a offset btw two point cloud (red for SDK paras and blue for self-calib):
https://user-images.githubusercontent.com/56421441/201652140-1f91d3b7-ae06-41bb-b00d-6d961a33cdab.mp4
So, which parameters should i trust? The one provided by librealsense or my own calibration results? Also, can you give some hints for how to eliminate the distortion on depth image?
Looking forward to ur reply. Thanks!
The text was updated successfully, but these errors were encountered: