First time here? Check out the FAQ!

Ask Your Question
1

Ideas to process challenging image

asked May 19 '14

Hello everyone.

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: image description

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

I understand that this is a challenging problem. Any ideas?

Best regards

Preview: (hide)

Comments

Would be nice if you would post some feedback on your progress

Goosebumps gravatar imageGoosebumps (Jun 2 '14)edit

3 answers

Sort by » oldest newest most voted
1

answered Jun 5 '14

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, since most of the image is actually noise.. So I had to find the objects despite the noise. 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

Preview: (hide)
1

answered May 20 '14

Goosebumps gravatar image

updated May 21 '14

A morphological operation that could work is opening: image description

        int morphOpSize = 3;
        StructuringElementEx element =
            new StructuringElementEx(
                morphOpSize,
                morphOpSize,
                morphOpSize / 2,
                morphOpSize / 2,
                Emgu.CV.CvEnum.CV_ELEMENT_SHAPE.CV_SHAPE_ELLIPSE);

        filtered = gray.MorphologyEx(
            element,
            Emgu.CV.CvEnum.CV_MORPH_OP.CV_MOP_OPEN,
            2);

(sorry for my Emgu dialect)

Otherwise look for edge preserving low pass filtering.

Preview: (hide)

Comments

The opening operation does remove some noise, but I think that before applying that it could be useful to apply a good noise removal operation that addresses those white spots.

Pedro Batista gravatar imagePedro Batista (May 20 '14)edit
0

answered May 20 '14

zerog80 gravatar image

Another filter with effect similar to morphological opening is the median... did you try it with a small radius? It should remove the majority of the noise while retaining the main shapes.

Preview: (hide)

Question Tools

Stats

Asked: May 19 '14

Seen: 1,159 times

Last updated: Jun 05 '14