SimpleBlobDetector not detecting hollow and curved blobs even with the filters off

Hallo, I’m having some issues detecting certain blobs in a black and white image using the SimpleBlobDetector. From testing it seems the SimpleBlobDetector cannot detect blobs where the center point of the blob is not part of the blob, like in a crescent shape or a ring. I’ve disabled the filtering for area, circularity, convexity and Inertia, colour is the only filter active.

My test image, Left SimpleBlobDetector, Right FindContours:

As you can see in this image the crescent or “C” shaped blobs are not being detected, neither are the ring and circle with a hole in the middle.

My understanding is that the SimpleBlobDetector works off data from the “FindContours” function but if I call this one directly it does detect all the contours, albeit little messy.

This yields me 563 contours, I could write something to try and group these and deduce the size and location of the blobs, but I feel like at that point I’m just starting to build my own version of the SimpleBlobDetector.

In short, am I missing something here? It seems strange that the blob detector cant detect these shapes if the center pixel is not “valid” as it were. This means that noise from the input sensor/camera could make an entire object disappear.

I should also mention that I’m using the emguCV wrapper and working in C#, in case that is relevant.

If I turn the colour filter off (it was set to 255, white) I get this result.
image
This make me suspect that it is detecting the crescent shapes but then when checking if they have the right colour it looks at the center of the object, but since that is outside the object it is black and thus it discards the object as valid.