Cercle de détection de niveau de gris de l'image dans MATLAB
J'ai l'image ci-dessous. Mon objectif est de détecter le cercle qui le montre dans la deuxième image. J'ai utilisé [centers,radii] = imfindcircles(IM,[100 300]);
mais il n'a rien trouvé.
Est-il un autre moyen de détecter le cercle? Comment puis-je le faire?
Image d'origine:
Le cercle:je l'ai dessiné avec de la peinture.
Et qu'advient-il si vous seuil?
il vous faut jouer avec les paramètres de
il vous faut jouer avec les paramètres de
imfindcircles
. essayez de définir 'ObjectPolarity'
à 'birght'
, ensemble 'EdgeThreshold'
à une valeur très faible et de jouer avec 'Sensitivity'
.OriginalL'auteur ffttyy | 2014-11-27
Vous devez vous connecter pour publier un commentaire.
Ici est une solution alternative à imfindcircles. Fondamentalement, le seuil de l'image, se dilatent avec un disque élément de structuration et puis, après avoir trouvé les bords, appliquer une transformation de Hough pour détecter le cercle à l'aide de la
circle_hough
algorithme formulaire disponible dans le fichier d'échange ici.Voici le code:
Qui donne les éléments suivants:
Vous pouvez jouer avec les paramètres passés à seuil ou à se dilater ainsi de voir comment il affecte le résultat.
Espère que ça aide!
OriginalL'auteur Benoit_11
Ici est une autre approche pour résoudre ce problème. Ses pas basée sur la Transformation de Hough, comme imfindcircles et à la réponse précédente.
En gros:
HT est parfois lente, en fonction de données d'entrée de la taille et de la résolution. Il peut être utile de comparer le temps d'exécution des deux approches (HT, non HT).
La méthode proposée peut également être en mesure de détecter des objets d'une autre forme (non circulaire).
OriginalL'auteur Rafael