I am new to Image processing , I am trying to implement a IRIS detection application fro my academics.
In the application i have successfully detected right eye from input stream . After that i have to perform the iris detection operation so i was following the below link http://www.emgu.com/forum/viewtopic.php?f=7&t=3356
The application returns about 17 circles have been detected when giving an input image but when i give the web camera as input it returns 0.(I don't know the reason). I want the to detect the iris perfectly and accurately. Please help me to solve this issue.
1.What should i do to detect the iris accurately? (Code samples would be useful)
2.Why application is not any circles form web camera input stream ?
Thanks in advance
This is the code i used to detect circles in the right eye picture
double cannyThreshold = 180.0;
double circleAccumulatorThreshold = 20;
int irisy = 0;
//Taken from - http://www.emgu.com/forum/viewtopic.php?f=7&t=3356
CircleF[] circles = grayframeright.HoughCircles(
new Gray(cannyThreshold),
new Gray(circleAccumulatorThreshold),
2.0, //Resolution of the accumulator used to detect centers of the circles
20.0, //min distance
5, //min radius
0 //max radius
)[0]; //Get the circles from the first channel
MessageBox.Show(circles.Length + " circle length");
CircleF Iris = new CircleF();
foreach (CircleF circle in circles)
{
ImageFrame.Draw(circle, new Bgr(Color.Red), 2);
grayframeright.ROI = new Rectangle();
grayframeright.ROI = Rectangle.Empty;
grayframeright.ROI = new Rectangle(10, 30, grayframeright.Width - 10, 55);
Iris = circle;
}
First of all, why your
0 //max radius
is even smaller than5, //min radius
? If you have a rough estimation of the iris radius, try to adjust these two values to make sure only circles within this range will be detected.Secondly, tune the value of
2.0, //Resolution of the accumulator used to detect centers of the circles
. Basically the smaller this threshold is set, the more circles may be detected.