opencvkinectopenni

Noisy kinect color (rgb) images


i'm using opencv interface (http://docs.opencv.org/doc/user_guide/ug_highgui.html?highlight=kinect) to get color (rgb) and depth frames from a kinect camera. For a standard VGA 640x480 resolution and with code like

capture.retrieve( bgrImage, OPENNI_BGR_IMAGE );

i get this :

I think this is really noisy. Is this normal quality for a kinect rgb camera? I tried various filtering (blurring, sharpening, opening..) procedures but i got minor improvements.


Solution

  • The conditions under which this image was taken are unknown to me, and I cannot attest the quality of the images taken using Kinect, so I'm ignoring this part of the question.

    A very simple thing you can do to likely improve the image quality is to average several frames you might be getting. That is it.

    Another options include, for example, Bilateral Filtering or Mean Shift Filtering (and I'm not sure how you would do the later purely with ready OpenCV functions) that can handle well this kind of noise. For instance, here are three rows of images. In the second column you see the edges found by Canny for the image in the first column. The first row shows the input image as is, the second row is the result of a particular Mean Shift, and the last one is for Bilateral Filtering.

    enter image description here enter image description here

    enter image description here enter image description here

    enter image description here enter image description here

    While the results are particularly good, the problem is that these filtering techniques are slow for the typical computers used nowadays.