Can anyone suggest methods for removing the noise (indicated inside the red square) from every where in the following image, while keeping the white lines?
-
5$\begingroup$ Is this an image of the retina? In that case, instead of hacking up a quick and dirty solution with a sobel filter (or equivalent) and attempting to "remove noise", I suggest you start by reading some of the abundant literature on the topic. These problems have been solved over and over again, and it will probably save you a lot of time to read about what has worked in the past. Then you can start innovating for real :) $\endgroup$– static_rttiCommented Jun 29, 2012 at 8:13
-
$\begingroup$ fair point, however a few links provided might have been even better. no doubt there's google, still. $\endgroup$– AruniRCCommented Jun 29, 2012 at 8:21
-
1$\begingroup$ Even better, google scholar. I'm not knowledgeable enough about this precise point to give better links than google, sorry :-/ $\endgroup$– static_rttiCommented Jun 29, 2012 at 10:02
-
1$\begingroup$ @crack_addict: what have you tried so far? $\endgroup$– AmroCommented Jun 29, 2012 at 10:58
-
1$\begingroup$ It would also be nice to know what will the output of this process be used for (to know how good the cleaning of the noise with leaving of the white lines should be) $\endgroup$– penelopeCommented Jun 29, 2012 at 12:07
4 Answers
One solution I have found is as follows:
- Thresholded on grayscale value.
- Remove objects on the basis of size.
- Some more morphological operations.
-
$\begingroup$ Could you give a little more detail on step 3, i.e. what morphological operations did you find helpful ? $\endgroup$– Paul RCommented Jul 2, 2012 at 17:44
-
$\begingroup$ I would like to explain my answer well: firstly I could not remove objects on the basis of size as you can see objects are a bit connected, so I thresholded on the basis of gray level first which separated the small objects well in the 3rd step I dilated to make useful objects continues, then I used edge thinning to get thin lines $\endgroup$ Commented Jul 5, 2012 at 3:04
Can you get multiple images, i.e. is the target static? If so then you could 'stack' the images to remove the noise. A simple mean or median function will remove the random noise from the image stack and leave you with just the signal (i.e. the white lines).
It seems from the initial area based filtering that results might not be satisfactory since it removes components which are linear but not so large in area. Looking at the structure of the foreground to be extracted, we can see that they are long thing structures. One could consider using linear structuring elements. But here the image consists of various angles and branchings. I suggest reading the following paper which presents the path opening which is demonstarted of area photos of road networks.
It looks like that the "noise" is a texture/pattern. Maybe you'll have a try on removing that pattern, so you can go on in your processing pipeline. In my opinion, morphological operations and edge detection won't work so well (have no proof, just a first impression on that scenario, because of too similiar looking of noise and features/wanted information). If I got time at the weekend, I'd give it a shot with some texture removal methods and keep you informed.