comment détecter le centre d'un cercle flou avec opencv

10

J'ai l'image suivante:

entrez la description de l'image ici

Il y a des courbes sur la photo. je voudrais trouver le centre des cercles contenant des courbes.

j'ai essayé opencv et hough circle transform mais je n'ai eu aucun résultat.

JingKe
la source
toutes les courbes sont-elles concentriques? l'espacement entre eux est-il variable?
endolith
oui, ils sont concentriques. et aucun espacement n'est constant.
JingKe

Réponses:

3

Vous devrez d'abord améliorer le contraste de l'image, puis la filtrer fortement pour supprimer le bruit. comme les cercles sont «épais» (flous), vous pouvez filtrer un peu sans détruire la structure des cercles.

J'appliquerais alors un algorithme de détection de bord pour obtenir une image de bord binaire qui peut être traitée par la transformation circulaire de Hough.

J'obtiens l'image de bord suivante de votre image: entrez la description de l'image ici

À l'aide des commandes MATLAB suivantes:

 % x is the input grayscale image. First we adaptively improve the contrast over the image
 y= adapthisteq(x);

 % next we use the Canny edge detector with a strong Gaussian lowpass filter
 ee=edge(y, 'canny', [], 5);
nimrodm
la source