I have been trying to detect the iris region of an eye and thereafter draw a circle around the detected area.I have managed to obtain a clear black and white eye image containing just the pupil,upper eyelid line and eyebrow using threshold function.
Once this is achieved HoughCircles is applied to detect if there are circles appearing in the image.However, it never detects any circular regions.After reading up on HoughCircles,it states that "the Hough gradient method works as follows:-
First the image needs to be passed through an edge detection phase (in this case, cvCanny())".I then added a canny detector after the threshold function.This still produced zero circles detected.If I remove the threshold function the eye image becomes busy with unnecessary lines,hence I included it in.
cv::equalizeHist(gray,img);
medianBlur ( img,img,1);
IplImage img1=img;
cvAddS(&img1, cvScalar(70,70,70), &img1);
Mat imgg=cvarrToMat(&img1);
medianBlur ( imgg,imgg,1);
cv::threshold(imgg,imgg, 120,255,CV_THRESH_BINARY);
cv::Canny(img,img,0,20);
medianBlur ( imgg,imgg,1);
vector<Vec3f> circles;
HoughCircles( imgg, circles, CV_HOUGH_GRADIENT, 1, imgg.rows/8, 100, 30, 1,5);
How can I overcome this problem?Would hough circle method work?Is there a better solution to detecting the iris region?Are the parameters chosen correct?
Also note that the image is obtain directly obtained from the webcam.