Matching Partially Occluded/Non-Textured Shapes

asked 2017-01-12 18:23:55 -0500

jpistorino gravatar image

updated 2017-01-12 20:30:21 -0500

I am using OpenCV 3.1 with VS2012 C++/CLI on a Win10 machine.

I am trying to match shapes that are reflective and non-textured. The items may also be rotated, at slightly different scale, translated, and/or partially occluded. Further, there maybe or will be multiple instances of the item in the image. My question is what is the best way to approach recognition of something like this? Because the items are non-textured, the various keypoints approaches do not appear appropriate. Using contours - matchshapes work well, except for instances of occlusion.

While I see papers out there about partial contour matching, before I go down the route of trying to implement something like that, I am hoping that someone can let me know if I am on the right track or should go in a different direction.

Here is a sample of the contours of a an item to be recognized:

image description

Here is an example of an actual query image: image description

In this example, the isolated spoon at top is found by matchshapes but the occluded spoons are not.

Any guidance appreciated.

edit retag flag offensive close merge delete

Comments

Try the GeneralizedHough transforms. With rotation, you probably want the Guil

Tetragramm gravatar imageTetragramm ( 2017-01-12 20:19:02 -0500 )edit

Thanks. I will try that. Is there a place where I could find an example implementation?

jpistorino gravatar imagejpistorino ( 2017-01-13 01:10:47 -0500 )edit

Yeah, t's in samples\gpu. You can use the CPU version though, so it's still good.

Tetragramm gravatar imageTetragramm ( 2017-01-13 17:28:36 -0500 )edit

Great. Thanks so much. My base code uses a GPU if available so GPU is even better.

jpistorino gravatar imagejpistorino ( 2017-01-13 17:32:00 -0500 )edit