OpenCV: Uso de la transformación del círculo de Hough para detectar el iris

Soy novato en openCV, pero quiero crear un programa de reconocimiento de iris. Aunque el sistema con cámara web puede detectar los ojos, no puede, sin embargo, detectar el iris circular. Estoy usando la transformación del círculo de Hough. Pero en caso de que el iris en una imagen no sea lo suficientemente circular, el sistema no puede detectarlo. ¿Alguna solución para ello?

El algoritmo utilizado es Hough Circle Transformation.

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 < circles->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 );

Respuestas a la pregunta(1)

Su respuesta a la pregunta