Search code examples
opencvimage-processingnoise

Ideas to process challenging image


I'm working with Infra Red image that is an output of a 3D sensor. This sensors project a Infra Red pattern in order to draw a depth map, and, because of this, the IR image has a lot of white spots that reduce its quality. So, I want to process this image to make it smoother in order to make it possible to detect objects laying in the surface.

The original image looks like this: enter image description here

My objective is to have something like this (which I obtained by blocking the IR projecter with my hand) : enter image description here

An "open" morphological operation does remove some noise, but I think first there should be some noise removal operation that addresses the white dots.

Any ideas?

I should mention that the algorithm to reduce the noise has to run on real time.


Solution

  • My main point on the noise removal was to have a cleaner image so it would be easier to detect objects. However, as I tried to find a solution for the problem, I realized that it was unrealistic to remove all noise from the image using on-the-fly noise removal algorithms, since most of the image is actually noise.. So I had to find the objects despite those conditions. Here is my aproach

    1 - Initial image 1

    2 - Background subtraction followed by opening operation to smooth noise 2

    3 - Binary threshold 3

    4 - Morphological operation close to make sure object has no edge discontinuities (necessary for thin objects)

    4

    5 - Fill holes + opening morphological operations to remove small noise blobs

    5

    6 - Detection 6