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. P>
3 Réponses :
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;
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. p>
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. . p>
Une fois, vous avez toutes les spécifications de cercle, vous pouvez simplement rechercher la couleur au centre de chaque cercle détecté. p>