Question

So, i'm looking for the best way to go about this, I want to take in a 2d image of something like a room with random object spread around it, and be able to detect and separate each individual object from one another.

*None of the objects are know to the program, this is not object recognition, and there is no recognition code involved. the program would not know what any of these objects are or how to identify them, only that they are not the same objects (even if there 2 of the same objects near each other)

*Another thing is that I am trying to distinguish EVERY components from one another even if its a sub part of another object; ie: not trying to detect that a whole lamp is separate from a desk, but also the light bulb, lamp pole, and the electrical cords are separate from the lamp. id like to detect as many separate objects as possible

I am hoping between SURF , edge detection, RGB matching, this is possible. but may need to also use the infrared sensors from the kinect for a 3d reconstruction and depth finding to help separate the objects

*something I believe that may help very much at distinguishing objects from each other is texture detection, if that exists.

1) is this possible?
2) what tools/programs would be needed?
3) strategies on going about this?
4) does a solution already exist?

NOTES: Im using vs2010 with opencv and kinect

Was it helpful?

Solution

1) I would say it is not possible. From computer vision perspective (without 3D depth information) you might want to have a look at the "Gestalt psychology" problems (http://en.wikipedia.org/wiki/Gestalt_psychology), where you can see to find a lot of ambiguity already in very simple images. Analyzing a real world scenario without (and often even with) any background knowledge is much worse. Sometimes even a human isn't able to distinguish between seeing one or two objects and/or it depends on the interpretation and you have to consider that a human has many years of experience and a lot of background knowledge.

3) what you want to do is image segmentation. Without any background knowledge I would suggest some edge detection (e.g. Canny edge detection) combined on both, depth image and color-/grayimage. You will have to group detected edges (have a look at Gestalt psychology again) and/or extract contours, but at the end you'll still be far away from detecting all objects and subobjects.

OTHER TIPS

Try to run active contours on each bounding box of an object.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top