Perso, je scanera l'image pixel par pixel, ligne pas ligne, de haut en bas, à la recherche de changement de couleurs.
A partir de là, tu auras une matrice de booléens.
Première passe : tu vire les points isolés.
Seconde passe, tu récupère les extrémistés de chaque changement de couleur, cette fois horizontalement, puis verticalement.
A partir de là, tu auras une série de courbes représentées dans ta matrice. Reste plus qu'à partir de leurs coordonées, à retrouver si ça correspond vaguement à un cercle, et ce pour chaque zone repérée (au cas où tu doives retrouver plusieurs disques dans une même image).
Je ne pense pas que ce soit extrêment lent.
La première passe étant à priori la plus lente, la recherche d'une expression de cercle passant par certains points choisis étant facile à faire.
Sinon, pour retrouver le centre du cercle, fait comme tu dis, mais aussi avec le point le plus à droite et le plus à gauche : ça permettra d'être beaucoup plus précis