我是图像处理的新手,我正在尝试为我的学者实施IRIS检测应用程序。
在应用程序中,我已成功从输入流中检测到右眼。 之后,我必须执行虹膜检测操作,所以我按照以下链接 http://www.emgu.com/forum/viewtopic.php?f=7&t=3356
当给出输入图像时,应用程序返回大约17个圆圈,但是当我将网络摄像头作为输入时,它返回0.(我不知道原因)。 我想要完美而准确地检测虹膜。请帮我解决这个问题。
1.我该怎么做才能准确地检测虹膜? (代码样本很有用)
2.为什么应用程序不是任何圈子形成网络摄像头输入流?
提前致谢
这是我用来检测右眼图片
中的圆圈的代码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;
}
答案 0 :(得分:2)
首先,为什么0 //max radius
甚至小于5, //min radius
?如果您粗略估计了光圈半径,请尝试调整这两个值,以确保只检测此范围内的圆圈。
其次,调整2.0, //Resolution of the accumulator used to detect centers of the circles
的值。基本上,设置的阈值越小,可以检测到的圆圈越多。