I've created a function to detect white edges in an image. This plot is a segment in an image (post processing of my function). The example above has a lot of noise in it, as you can see the segment I'm trying to plot is quite consistent along the 220 mark (y axis) and the large peaks (mostly above) represent noise, there are a few below also. Is there a function or some sort of way I can remove these large peaks? the function works quite well for the majority of images I'm using, data such as above is one of an awkward bunch.

 Réponse acceptée

Image Analyst
Image Analyst le 24 Fév 2015

0 votes

You can make it a bit more robust, but how about just thresholding, then interpolate what's left with interp1
badElements = signal > 230 | signal < 215;
newY = y(~badElements);
newX = x(~badElements);
xq = x;
fixedY = interp1(newX, newY, xq);
It would have been better if you had attached your data so people could have tried things.

5 commentaires

Sean
Sean le 24 Fév 2015
Sorry this is the image I'm dealing with, the separate plot above is just the line plotted on it's own! if my line is represented by a variable I'm not quite sure how to deal with its x and y values. The 220 value on the y axis above in the initial plot states a greyscale threshold (for detecting white regions). Thanks for the reply again
Image Analyst
Image Analyst le 25 Fév 2015
I don't know what to do with that. I thought you had a 1-D signal. Now you show me a 3D array - an RGB image that seems to be composed of several different things. What is your data actually - an image or a 1D signal? If it's a signal, attach it. If it's the image, then tell me what you want the output image to look like (attach the desired output image).
Sean
Sean le 25 Fév 2015
I edited the code you gave me and got what I was looking for, Since I'm looking to segment images based on tonal values some images are very sensitive to the threshold. Therefore I get noise such as above. If you look at the new plot attached, the orange line is what I was looking to do, get rid of the peaks and smooth out the line so the segment identifies the white region far more efficiently.
Sean
Sean le 25 Fév 2015
the image is greyscale so the plot is 2D also, thanks again for the help.
Sean
Sean le 25 Fév 2015
s 1024x1 8192 double

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by