i've searched a bit online and using the search here on stackoverflow but haven't found quite what i was looking for on this issue. So basicaly i'm using simple blob detection, from opencv, to get the white areas in my image(which is already binary) and in very similar images i get very diferent results in terms of which blobs are detected and which are not, here is an example followed by my parameters when defining simpleblobdetector.
As you can see some of the blobs are not beeing detected, here is my configuration of the detector:
void blobDetect(cv::Mat img) {
cv::SimpleBlobDetector::Params params;
if (Daytime) {
params.minThreshold = 23;
params.maxThreshold = 25;
}
else {
params.minThreshold = 3;
params.maxThreshold = 5;
}
params.thresholdStep = 1;
params.filterByColor = true;
params.blobColor = 255;
params.filterByArea = true;
params.minArea = 300;
params.maxArea = 400000;
params.filterByCircularity = false;
//params.minCircularity = "";
params.filterByConvexity = false;
//params.minConvexity = "";
params.filterByInertia = false;
//params.minInertiaRatio = "";
cv::Ptr<cv::SimpleBlobDetector> detector = cv::SimpleBlobDetector::create(params);
std::vector<cv::KeyPoint> keypoints;
detector->detect(img, keypoints);
cv::Mat im_with_keypoints;
std::cout << keypoints.size() << std::endl;
drawKeypoints(img, keypoints, im_with_keypoints, cv::Scalar(0, 0, 255), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
imshow("display4", im_with_keypoints);
}
So i ask, is it because of the shape and size of the blobs?(i doubt this option since in some cases it can find big areas of wierd shapes) I thought simple blob detection could find any group of pixels, is it more apropriate for circular blobs or something like that? should i think about using another algorithm or building my own? or is there a way for me to get around this and increase the accuracy of simple blob detection?
I know those are a lot of questions, but thank you in advance for any help you can give!

