edge detection

3 次查看(过去 30 天)
Gova ReDDy
Gova ReDDy 2011-5-22
how to find edge detection of image without using edge functions like canny, prewitt,sobel and others
  3 个评论
Walter Roberson
Walter Roberson 2011-5-23
For a class assignment??
Gova ReDDy
Gova ReDDy 2011-6-11
How to write algorithm for edge detection without using these canny,prewitt sobel fucntions..

请先登录,再进行评论。

回答(2 个)

Image Analyst
Image Analyst 2011-6-11
Just construct your own Sobel kernel, which can be found in countless places on the web, and call imfilter(). Or you can write your own custom code and use nlfilter to call it.

praveen
praveen 2011-6-11
hey! patan..
I can give you a simple algorithm for you purpose..
1. Convert the image to a grayscale image ( where each pixel is represented by a number between 0-255)
2. Convert the image to a binary image (you may use img=im2bw(img,graythresh(img)) (in which each pixel will be either 0 or 1 )
you can set the threshold, above which a pixel has to be 1. experiment with different values until you get your required object fully in black (or white)
3. Then, scan through the image part by part (either using a mask or you idea..) & find the coordinates of those points, whose pixel values of it's right side neighbour is different from it's left side neighbour .
for eg. suppose let's say you are scanning a mango, at the edge (boundary ) points, the pixel value on it's immediate right neighbour will be either 0 or 1 (in a boundary image) and it's immediate left neighbour's pixel will have opposite value.
4. When you are done with doing this for the whole image, you will end up with the coordinates of the edges of the objects that you wanted.
(Getting what i mean ?)
Or If you are quite advanced, you can study about the operation of either of the method (sobel's method for edge detection or prewitt's method) and then you can develop your algorithm based on that. You can refer here :<http://www.pages.drexel.edu/~weg22/edge.html>
or search on google yourself
  1 个评论
Image Analyst
Image Analyst 2011-6-12
Uh, not really. Think about it. What you described is binarizing the image and then a manual method for finding edges on the binary image (not the original image) and that won't even find them all. You'd be better off using bwboundaries(), which will get all the edges including the top and bottom edges of a binary blob.
However the edge functions the original poster mentioned find edges in the grayscale image, not the binary image. He doesn't have a binary image yet, and simply thresholding on grayscale (to get the binary image) doesn't find edges, in general. Your edges are obtained by thresholding and these are often/usually in no way related to edges that someone would identify in the image. He's better off constructing the proper kernel and using imfilter(), conv2(), or using nlfilter if he wants to design his own non-linear filter.

请先登录,再进行评论。

产品

Community Treasure Hunt

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

Start Hunting!

Translated by