0
votes

Algorithme concernant la vision informatique, détection de cercle

En ce moment, j'essaie d'apprendre la vision de l'ordinateur, mais je ne sais pas comment démarrer l'algorithme, aucun pointeur serait utile.

 image ci-dessous


0 commentaires

3 Réponses :


1
votes

Supposons que vous ayez une matrice de pixels blancs avec un cercle non blanc à l'intérieur. Afin de détecter le cercle, je ferais de cette façon:

Color c = matrix[x][y];
int v1 = 1, v2 = 1;
while(matrix[x - v1][y] == c) v1 *= 2;
while(matrix[x + v2][y] == c) v2 *= 2;


0 commentaires

0
votes

La transformation de Hough est souvent appliquée pour la détection des lignes dans des images de bord. Mais une variante existe que cela rend également la détection de cercle. Regardez le page Wikipedia qui fournit même le pseudo code.

L'idée générale est que tous les points de bord de vos cercles votent pour tous les paramètres de cercle possibles (correspondants aux cercles) qui auraient pu provoquer des points de ces points dans l'image. Ensuite, les paramètres de cercle qui ont reçu le plus grand nombre de votes (détectés soit en détectant toutes les maxima locales, soit en détectant de manière itérative maxima globale dans l'espace Hough jusqu'à ce que le nombre maximal de votes tombe en dessous d'une valeur de seuil) donnez les paramètres définissant des cercles suspects dans l'image. .

Une fois, vous avez toutes les spécifications de cercle, vous pouvez simplement rechercher la couleur au centre de chaque cercle détecté.


0 commentaires

0
votes

Un cercle est une figure de la superficie maximale, avec un périmètre donné. Cela peut être utilisé pour la recherche. Pour rechercher des objets colorés, vous pouvez utiliser la fonction InRange (). Voir exemple: xxx

 Entrez la description de l'image ici


0 commentaires