Hi, I'm looking for a library which provides edge detecion on color image. For example i have an 200x200 color image and i need to a table form it:
bool is_edge [200][200];
Where is_edge[x][y] == true when there is edge in pixel [x,y]

Sorry form my english, waiting for some hints :)

Thanks for your posts, but none of those libraries provides what I want.

The following link describes in detail how to code edge detection yourself:
http://www.pages.drexel.edu/~weg22/edge.html

It's not working under Dev Cpp, under Builder it generates white image.

l seen soemthing like this in the OpenCV libraries.

Yeah, I just wanted to say that: http://opencv.willowgarage.com/wiki/Welcome

OpenCV is too exotic and weird. Provides many files but there is no good documentation and examples for Builder c++. I couldn't run it properly.

well even i am into image processing and this link helpmed me a lot .
i dont know how far it will help you .
http://cimg.sourceforge.net/

There is no edge detection in this library.


I'm still searching ...

OpenCV is too exotic and weird. Provides many files but there is no good documentation and examples for Builder c++. I couldn't run it properly.

First of all: OpenCV is not exotic or weird. It is actually being used a lot, even by professional companies.
The reason that there are so few examples for Borland Builder, is that Builder is outdated and there are plenty free (and better) alternatives on the net. (like VS2008 and Code::blocks)

But you are probably going to say: "But I like Borland, I don't wanna change!1!" etc. So here's a link with a manual and even a demo-project. I found it using this amazing site.

Thanks for your advices!

The reason that there are so few examples for Borland Builder, is that Builder is outdated and there are plenty free (and better) alternatives on the net. (like VS2008 and Code::blocks)

Your right, Builder is quite outdated and I consider switching to VS2008. The biggest advantage is that it's free from MSDNAA.
All .NET platform is interesting.


The library I finnaly use to edge detection is the DevIL library.
http://openil.sourceforge.net/
It's really good, regularly epdated and easy to use.

You could use a sobel filter, which is just a convolution with another small image (or matrix). This also goes for prewitt or whatever differentiator you find adequate.

These edge-detector's aren't very andvanced and typically need some preprocession, such as noisereduction. If you want to do a fast test, you could reduce noise by applying a gaussian (i.e. convolution with a Gaussian 'hat') if it needs to be better use a set-opening/closing (Two doctors on my university have something quite interresting: "A comparison of algorithms for connected set openings and closings", which preserves shape (gaussian doesn't, and shape is important if you detect edges I guess) see: http://www.cs.rug.nl/~michael/ ).

I have written a fft-convolution algorithm (for cimg, but it won't be included for a few months as I am still coding around it and it may slightly change) which is a bit faster then a normal convolution, but in your case where the kernel isn't too big I wouldn't really care ;)

Another thing: edge detection can of course be seen as the amount of change between neighbor pixels.

enjoy your life!

foo-nix

This question has already been answered. Start a new discussion instead.