Finde überlappende / komplexe Kreise mit OpenCV

Ich möchte den Radius der roten Kreise berechnen (Abb. 2). Ich habe Probleme, diese Kreise mit HoughCircles von OpenCV zu finden. Wie Sie in Abb. 2 Ich kann nur die kleinen Kreise in der Mitte finden, die mit HoughCircles in Schwarz angezeigt werden.

original fig 2.

ibt es eine Möglichkeit, den Radius der roten Kreise zu berechnen, da ich die Mitte der roten Kreise kenne (die mit denen der roten identisch sind

Ist es auch möglich, einen allgemeinen Weg zur Berechnung des Radius von Kreisen auf einem komplexeren Bild wie diesem zu haben:

Edit: Hier der interessante Teil meines Codes nach Erhalt von Abb. 2:

threshold(maskedImage, maskedImage, thresh, 255, THRESH_BINARY_INV | THRESH_OTSU);
    std::vector<Vec3f> circles;
// Canny(maskedImage, maskedImage, thresh, thresh * 2, 3);

HoughCircles(maskedImage, circles, CV_HOUGH_GRADIENT, 1, src_gray.rows / 4, cannyThreshold, accumulatorThreshold, 0, 0);

Mat display = src_display.clone();
for (size_t i = 0; i < circles.size(); i++)
{
    Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
    int radius = cvRound(circles[i][2]);
    // circle center
    circle(display, center, 3, Scalar(0, 255, 0), -1, 8, 0);
    // circle outline
    circle(display, center, radius, Scalar(0, 0, 255), 3, 8, 0);
}

Ich habe versucht, das Spiel mit cannyThreshold und Akku ohne Ergebnisse zu verwenden. Echte Bilder sind 5x größer. Hiereine Verbindun zum Beispiel 1 nach dem Schwellenwert.

Vielen Dan

Antworten auf die Frage(1)

Ihre Antwort auf die Frage