How does Matlab produce thin edges?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ivan Matala
il 21 Ago 2014
Commentato: Royi Avital
il 3 Set 2019
Im using sobel edge detection.
How does Matlab, by itself manage to achieve very thin edges like this one (using just the Matlab's edge function with 'sobel' as parameter)
matlabsobel = edge(originalImage,'sobel')
imshow(matlabsobel)

but when I try to do sobel algorithm my own way, assuming the process is just the same..
originalImage = gaussianizedimage;
threshold = 60.5;
k = [1 2 1; 0 0 0; -1 -2 -1];
H = conv2(double(originalImage),k, 'same');
V = conv2(double(originalImage),k','same');
E = sqrt(H.*H + V.*V);
edgeImage = uint8((E > threshold) * 255);
imshow(edgeImage);
title('sobel algorithm')

Why is that its different? What is still lacking in my implementation to achieve Matlab's thin edges? Can anyone provide code to make it look/similar to Matlab native sobel edge detection?
Thanks
0 Commenti
Risposta accettata
Image Analyst
il 21 Ago 2014
edge() takes a grayscale edge image like you'd get with imgradient(), and then thresholds it and skeletonizes the thresholded image, like you'd get with bwmorph(BW, 'Skel', inf).
4 Commenti
Miroslav Hagara
il 19 Set 2018
Modificato: Miroslav Hagara
il 19 Set 2018
according this, if I use this code:
BW1 = edge(I,'Prewitt');
BW2NT = edge(I,'Prewitt','nothinning');
BW2 = bwmorph(BW2NT, 'Skel',Inf);
I should get the same pictures. But this is not true.
I have get better result with
BW2 = bwmorph(BW2NT, 'thin', Inf)
but still without same pictures.
Royi Avital
il 3 Set 2019
If you look inside edge() you will see:
if thinning
e = computeedge(b,bx,by,kx,ky,int8(offset),100*eps,cutoff);
else
Which does the magic.
MathWorks doesn't specify what's done there.
Più risposte (0)
Vedere anche
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!