This repository has been archived by the owner on Jul 26, 2024. It is now read-only.
On "color spill", or "flying pixels" #235
Labels
bug
Something isn't working
triage needed
The Issue still needs to be reviewed by the Azure Kinect ROS Driver Team
Describe the bug
Using the factory calibration, point clouds exhibit “color spill”, or “flying pixels” at the object boundaries. This happens both with the latest version of the ROS driver and with the Azure Kinect Viewer. Can this problem be solved through manual calibration?
To Reproduce
Kinect Azure Viewer
k4aviewer
and open the device.View Mode
select3D
andColor
./points2
topic from ROS driverpoint_cloud
andrgb_point_cloud
totrue
inkinect_rgbd.launch
. Also keeppoint_cloud_in_depth_frame
tofalse
, so as to havedepth_to_rgb
-like backprojection. This should be the choice that gives less color spill, as mentioned for instance here.kinect_rgbd.launch
and look at the/points2
topic in RVIZ.Expected behavior
In the desired setup, I would need to have aligned and rectified RGB and depth frames and use camera intrinsics to retrieve a point cloud. In the point cloud, there should be no color spill.
Screenshots
In all the following screenshots, colorspill on the edges of the pink ball can be noticed
/points2
topic (point_cloud_in_depth_frame
set totrue
):/points2
topic (point_cloud_in_depth_frame
set tofalse
):Desktop:
Additional context
It is unclear to me whether color spill is a problem that can be avoided. Previous conversations seem to hint at the fact that this is an inherent limitation of the Azure Kinect (e.g., the paper mentioned here).
On the other hand, some threads seem to suggest that the problem might be related to imperfect calibration/camera alignment (e.g., here and here) and that a custom calibration can yield better alignment between the RGB and IR cameras (e.g., here and here). However, the conversations are overall inconclusive, with mixed opinions (negative 1, negative 2, positive, unclear).
I also saw that there is now the possibility to manually calibrate the intrinsics of the cameras and use them through the ROS interface instead of the factory calibration (here and here). Can a custom calibration alleviate or fix this problem, or is it a hardware limitation?
Also, is this to some extent due to the interpolation that is introduced both when warping the depth image into the RGB frame (e.g., here and here) and when rectifying the images before backprojection (as happens in
rgbd_launch
/image_geometry
/cv2.remap
, see e.g., this issue)?In particular, different interpolation schemes produce very different results (see, e.g., here), but even the recommended nearest-neighbor interpolation which is used in
rgbd_launch
for rectification (here) does not solve the color spilling problem.The text was updated successfully, but these errors were encountered: