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,

 Akzeptierte Antwort

Sean de Wolski
Sean de Wolski am 6 Jun. 2013
Bearbeitet: Sean de Wolski am 6 Jun. 2013

0 Stimmen

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 Kommentare

Image Analyst
Image Analyst am 6 Jun. 2013
Why use Canny when thresholding and bwperim will work fine and be a lot faster?
Sean de Wolski
Sean de Wolski am 6 Jun. 2013
example...
waqas pervaiz
waqas pervaiz am 7 Jun. 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'); *
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);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Paul Kelly
Paul Kelly am 6 Jun. 2013

0 Stimmen

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 am 21 Sep. 2017

0 Stimmen

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