I am using SimpleBlobDetector with the parameters specified below:

# Parameters params = cv2.SimpleBlobDetector_Params() params.filterByArea = True params.minArea = 1500 params.filterByCircularity = True params.minCircularity = 0.5 params.filterByConvexity = True params.minConvexity = 0.9 params.filterByInertia = True params.minInertiaRatio = 0.7 params.minDistBetweenBlobs = 10 params.filterByColor = False # Create a detector with the parameters detector = cv2.SimpleBlobDetector(params) keypoints = detector.detect(dilated) im_with_keypoints = cv2.drawKeypoints(dilated, keypoints, np.array([]), (0, 0, 255),cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) # Display result cv2.imshow("Keypoints", im_with_keypoints)

This produces the result below. As you can see, some of the 'cleaner' circles are not detected whilst others which have rougher edges are detected. What could be the problem please?