Hadi GhahremanNezhad
Hadi GhahremanNezhad

Reputation: 2445

How to distinguish light source from light reflection?

I am trying to distinguish car lights from the light reflection from street at night images. For example, in an image like this:

enter image description here

I tried changing to some other color spaces, but it didn't work. For example, cvtColor(image, gray, CV_HSV2BGR_FULL); made it like:

enter image description here

However, in this post it works fine. Is there any way I can do something similar for this image? I am using OpenCV3.1 with C++ on Windows (Python would also be great).

Upvotes: 1

Views: 1613

Answers (1)

Paul92
Paul92

Reputation: 9062

In general, a reflection is a light source. As far as light propagation is concerned, the light source is the direction the photons are coming from. It might be a source or a reflection.

Thus, a better view on the problem would be to think more about what you are trying to detect. In the post you referenced, the problem is much simpler, since the reflections are not blown out (reaching maximum brightness), while the light sources are (or they are close enough). In your image, due to the low quality of the capture, the reflections and the light sources have similar brightness.

To emphasize why this is a problem, your approach is a local approach. Think about a very small patch (e.g. 3x3 pixels) from your image. Could you tell if it's from a reflection or not?

Therefore, a better view would be to think about shapes. You want to detect car lights, which seem to be round, of about the same size and white.

I would suggest something like a blob detector finely tuned to your problem, or to use your technique to threshold the image, and then run a CCA and measure the circularity/size of the components.

You can also consider doing some cropping/filling in the city lights with black since the camera seems fixed.

Upvotes: 1

Related Questions