Image segmentation with very small dataset

Viewed 213

Given an image of puzzles on some background (depends on difficulty of the task), recognize the number of puzzles on it and classify each puzzle on the image (for each puzzle tell how many peninsulas and bays it has)

Background can be red
(example)

Or colored
example

I managed to solve (or almost solve) easy version of this problem (red background) using opencv (otsu thresholding -> dilating -> some smoothing convolutions -> findContours and then pass contours to some classifier)

But I have serious difficulties when trying to solve a complicated version. This


is the best I have achieved so far using otsu thresholding and erode + dilate. It appears that this thresholding method does not work so good for hard background.

My dataset is very small (less than 10 images), so i guess its not possible to use some deep learning segmentation techniques. But may be i can use some pre-trained models? This is my first CV problem, so i dont have much knowledge about it. I'm kinda out of ideas and asking you to help me.

Thanks!

1 Answers

I think you need to use shape based matching. For instance you compute gradients for each shape for each rotation angle and scale you will ise with some small step. Then train neural network detector.
For implementation instance check: https://github.com/meiqua/shape_based_matching

Related