HoughCircles no puede detectar círculos en esta imagen

Estoy tratando de detectar círculos en mi imagen que contienen un círculo de puntos, pero desafortunadamente no puedo hacerlo. Estoy usando opencv HoughTransform y no puedo encontrar los parámetros que hacen que esto funcione.

src = imread("encoded.jpg",1);
    /// Convert it to gray
    cvtColor(src, src_gray, CV_BGR2GRAY);

    vector<Vec3f> circles;

    /// Apply the Hough Transform to find the circles
    HoughCircles(src_gray, circles, CV_HOUGH_GRADIENT, 1, 10,
        100, 30, 1, 30 // change the last two parameters
        // (min_radius & max_radius) to detect larger circles
        );

    /// Draw the circles detected
    for (size_t i = 0; i < circles.size(); i++)
    {
        cout << "Positive" << endl;
        Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
        int radius = cvRound(circles[i][2]);
        // circle center
        circle(src, center, 3, Scalar(0, 255, 0), -1, 8, 0);
        // circle outline
        circle(src, center, radius, Scalar(0, 0, 255), 3, 8, 0);
    }

    /// Show your results
    namedWindow("Hough Circle Transform Demo", CV_WINDOW_AUTOSIZE);
    imshow("Hough Circle Transform Demo", src_gray);
    waitKey(0);

Mi imagen está aquí:

¿Por qué HoughCircles no puede detectar círculos en esta imagen? Parece estar funcionando en otras imágenes más simples como la de una placa de circuito.

Respuestas a la pregunta(1)

Su respuesta a la pregunta