3

I'm trying to develop a system, which recognizes various objects present in an image based on their primitive features like texture, shape & color.

The first stage of this process is to extract out individual objects from an image and later on doing image processing on each one by one.

However, segmentation algorithm I've studied so far are not even near perfect or so called Ideal Image segmentation algorithm.

Segmentation accuracy will decide how much better the system responds to given query.

Segmentation should be fast as well as accurate.

Can any one suggest me any segmentation algorithm developed or implemented so far, which won't be too complicated to implement but will be fair enough to complete my project..

Any Help is appreicated..

Shai
  • 111,146
  • 38
  • 238
  • 371
Mahesh Gupta
  • 2,688
  • 9
  • 30
  • 46

4 Answers4

3

A very late answer, but might help someone searching for this in google, since this question popped up as the first result for "best segmentation algorithm".

Fully convolutional networks seem to do exactly the task you're asking for. Check the paper in arXiv, and an implementation in MatConvNet.

The following image illustrates a segmentation example from these CNNs (the paper I linked actually proposes 3 different architectures, FCN-8s being the best). Segmentation results

JLagana
  • 1,224
  • 4
  • 14
  • 33
2

Unfortunately, the best algorithm type for facial recognition uses wavelet reconstruction. This is not easy, and almost all current algorithms in use are proprietary. This is a late response, so maybe it's not useful to you but one suggestion would be to use the watershed algorithm. beforehand, you can use a generic drawing(black and white) of a face, generate a FFT of the drawing---call it *FFT_Face*.
Now segment your image of a persons face using the watershed algorithm. Call the segmented image *Water_face*. now find the center of mass for each contour/segment. generate an FFT of *Water_Face*, and correlate it with the *FFT_Face image*. The brightest pixel in resulting image should be the center of the face. Now you can compute the distances between this point and the centers of segments generated earlier. The first few distances should be enough to distinguish one person from another.

I'm sure there are several improvements to the process, but the general idea should get you there.

Mike Adams
  • 21
  • 2
1

you can try the watershed segmentation algorithm also you can calculate the accuracy of the segmentation algorithm by the qualitative measures

israa
  • 46
  • 3
1

Doing a Google search turned up this paper: http://www.cse.iitb.ac.in/~sharat/papers/prim.pdf

It seems that getting it any better is a hard problem, so I think you might have to settle for what's there.

Tony The Lion
  • 61,704
  • 67
  • 242
  • 415
  • When we took this project, we promised our guides that we'll be able to detect different people based on their faces in the image. We thought there would be an algorithm. But I quite agree with you Tony & Nikie. I thought may be I've not done proper research. So, I posted this question here so that I may be get some better suggestion from even better people who have much experience. – Mahesh Gupta Feb 18 '11 at 15:23
  • @Mew 3.4: Do you want a segmentation algorithm or do you want a face/person detector? There are face detectors (google for Viola&Jones) and person detectors (google histogram of oriented gradients) that are relatively simple, fast and reliable. No segmentation needed. – Niki Feb 18 '11 at 16:12
  • @nikie: I've gone through those algo. They are quite accurate. But I'm actually looking for a general purpose thing which will help me with all the general objects detection like trees, stones, flag, head, etc.. or something closer to it.... – Mahesh Gupta Feb 19 '11 at 13:51
  • @MaheshGupta reliable general purpose segmentation is very hard , nature fakes it by learning to see ... until you don't know at what you are looking is hard to distinguish shapes , boundaries etc ... so if nature did not come up with something simple and universal there is not much hope to achieve this algorithmically, instead group similar objects to groups and use for each group reliable approach ... then try to segmentate with all aproaches and choose the best ... that is at least mine opinion – Spektre Feb 26 '15 at 11:33