Azzera filtri
Azzera filtri

how to smooth / refine edges ??

34 visualizzazioni (ultimi 30 giorni)
waqas pervaiz
waqas pervaiz il 6 Giu 2013
Risposto: Pallawi Pallawi il 21 Set 2017
hello all, i have a final image as an output.. as a result of processing image edges got irregular... how can it be possible for me to smooth/refine just the edges not the complete image... actually i was trying to apply gaussian filter on it it smooths the entire image... P.S image type is RGB .. waiting for replies...
Thanks,

Risposta accettata

Sean de Wolski
Sean de Wolski il 6 Giu 2013
Modificato: Sean de Wolski il 6 Giu 2013
Similar to what Paul is suggesting:
%Standard IPT Image
I = imread('cameraman.tif');
%Its edges
E = edge(I,'canny');
%Dilate the edges
Ed = imdilate(E,strel('disk',2));
%Filtered image
Ifilt = imfilter(I,fspecial('gaussian'));
%Use Ed as logical index into I to and replace with Ifilt
I(Ed) = Ifilt(Ed);
For an RGB image you may first have to repmat() Ed so that it exists in all three dimensions
Ed3 = repmat(Ed,[1 1 3]);
  4 Commenti
waqas pervaiz
waqas pervaiz il 7 Giu 2013
Thanks alot Sean, but i am getting the following errors:
*Error using iptcheckinput Function EDGE expected its first input, I, to be two-dimensional.
Error in edge>parse_inputs (line 547) iptcheckinput(I,{'numeric','logical'},{'nonsparse','2d'},mfilename,'I',1);
Error in edge (line 190) [a,method,thresh,sigma,thinning,H,kx,ky] = parse_inputs(varargin{:});
Error in ed (line 4) E = edge(I,'canny'); *
Sean de Wolski
Sean de Wolski il 7 Giu 2013
If you change the image to be three dimensional, you'll need to either extract a color plane from it or use rgb2gray
For example
Igray = rgb2gray(I);
or
Ired_channel = I(:,:,1);

Accedi per commentare.

Più risposte (2)

Paul Kelly
Paul Kelly il 6 Giu 2013
I've never tried this but I would probably approach it in the following way:
convert the image to grayscale RGB = imread(imageFile); I = rgb2gray(RGB);
binarise it (this will be quite tricky) or find another way to isolate the edge you are interested in. For example:
level = graythresh(I);
BW = im2bw(I,level);
find the edges of the binarised image:
edgeImage = edge(BW,'canny');
Then use morphological functions to broaden the edges to a reasonable size
Finally use the edge image as a mask for the smoothing operation

Pallawi Pallawi
Pallawi Pallawi il 21 Set 2017
Image 1 with the gray background was my input image and I removed the gray background with a white one! Now I need to refine the edges ,making it look smoother . I have tried ,gaussian and above suggestions but it does not works.can someone please help me!LOOKING FOR AN URGENT HELP.

Community Treasure Hunt

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

Start Hunting!

Translated by