2017-06-02 3 views
0

Je reçois beaucoup de cercles en utilisant l'algorithme de détection de cercle de Hough sur une image. comment rendre cette détection plus précise?Détection de cercles de suppression de cercles inutiles

image montrant des cercles détectés.

image originale

CODE SUIVANT EST UTILISÉ

import cv2 
import numpy as np 

img = cv2.imread('test_c.jpg',0) 

img = cv2.medianBlur(img,5) 

cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) 

circles=cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0) 

circles = np.uint16(np.around(circles)) 

for i in circles[0,:]: 

    # draw the outer circle 
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2) 
    # draw the center of the circle 
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3) 

cv2.imshow('detected circles',cimg) 

cv2.waitKey(0) 

cv2.destroyAllWindows()` 
+2

où avez-vous copié ce code? avez-vous même lu? à quoi pensez-vous que ces paramètres sont bons? minRadius, maxRadius? – Piglet

Répondre

0

Vous êtes face à ce problème parce que vous ne savez pas comment Hough fonctionne la transformation et parce que vous avez fait ni lire attentivement le code que vous avez probablement trouvé quelque part en ligne, ni vous avez fait référence à l'OpenCV documentation de référence.

https://en.wikipedia.org/wiki/Circle_Hough_Transform

http://docs.opencv.org/2.4/modules/imgproc/doc/feature_detection.html?highlight=houghcircles

Vous avez limiter les rayons. Comme la transformation de Hough est plus ou moins une approche de force brute, c'est très important. Il réduit considérablement le temps de calcul et vous pouvez et devez l'utiliser pour obtenir uniquement les cercles des rayons que vous recherchez ...

En réglant une distance minimale entre les cercles, vous évitez d'obtenir plusieurs résultats pour un cercle.

Comme toujours la connaissance est la clé du succès.

+0

Pourriez-vous s'il vous plaît expliquer le fonctionnement de l'algo de détection de cercle de hough. Y a-t-il une meilleure méthode pour détecter les cercles dans l'image qui est plus précise, c'est-à-dire qu'elle ne donne pas plus de cercles que de cercles. Et merci pour votre réponse et vos conseils indispensables. –

+0

@ShubhamSingh Quelle partie de l'article wikipedia que j'ai lié et les innombrables autres ressources que vous pouvez trouver en ligne, n'avez-vous pas compris? Il n'est pas très poli de demander aux gens des explications si vous n'avez même pas pris la peine de lire ce qu'ils vous ont donné jusqu'à maintenant ... – Piglet