OpenCV: Utilisation de la transformation de Hough Circle pour détecter l’iris

Je suis novice sur openCV, mais je veux créer un programme de reconnaissance de l’iris. Bien que le système avec webcam puisse détecter les yeux, il ne peut toutefois pas détecter l’iris circulaire. J’utilise la transformation de Hough Circle. Mais si l’iris d’une image n’est pas assez circulaire, le système ne peut pas le détecter. Une solution pour ça?

l’algorithme utilisé est la transformation de Hough Circle.

IplImage *capturedImg = cvLoadImage("circle.jpg",1); IplImage *grayscaleImg = cvCreateImage(cvGetSize(capturedImg), 8, 1); cvCvtColor(capturedImg, grayscaleImg, CV_BGR2GRAY); // Gaussian filter for less noise cvSmooth(grayscaleImg, grayscaleImg, CV_GAUSSIAN,9, 9 ); //Detect the circles in the image CvSeq* circles = cvHoughCircles(grayscaleImg, storage, CV_HOUGH_GRADIENT, 2, grayscaleImg->height/4, 200, 100 ); for (i = 0; i total; i++) { float* p = (float*)cvGetSeqElem( circles, i ); cvCircle( capturedImg, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 ); cvCircle( capturedImg, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(0,0,255), 3, 8, 0 ); } // cvCircle( img,cvPoint( r->x, r->y ),67, CV_RGB(255,0,0), 3, 8, 0 ); cvNamedWindow( "circles", 1 ); cvShowImage( "circles", capturedImg ); 

Ajoutez un appel à cvCanny() entre cvSmooth() et cvHoughCircles() . Ceci exécutera un algorithme de détection de bord qui fournira une meilleure image d’entrée pour cvHoughCircles() et améliorera probablement vos résultats.

Il y a beaucoup de questions similaires sur Stackoverflow, je vous suggère d’ utiliser le champ de recherche .