虹膜检测不起作用EMGUCV

时间:2013-12-07 19:38:43

标签: c# image-processing emgucv hough-transform iris-recognition

我是图像处理的新手,我正在尝试为我的学者实施IRIS检测应用程序。

在应用程序中,我已成功从输入流中检测到右眼。 之后,我必须执行虹膜检测操作,所以我按照以下链接 http://www.emgu.com/forum/viewtopic.php?f=7&t=3356

当给出输入图像时,应用程序返回大约17个圆圈,但是当我将网络摄像头作为输入时,它返回0.(我不知道原因)。 我想要完美而准确地检测虹膜。请帮我解决这个问题。

1.我该怎么做才能准确地检测虹膜? (代码样本很有用)

2.为什么应用程序不是任何圈子形成网络摄像头输入流?

提前致谢

这是我用来检测右眼图片enter image description here

中的圆圈的代码
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;


         }

1 个答案:

答案 0 :(得分:2)

首先,为什么0 //max radius甚至小于5, //min radius?如果您粗略估计了光圈半径,请尝试调整这两个值,以确保只检测此范围内的圆圈。

其次,调整2.0, //Resolution of the accumulator used to detect centers of the circles的值。基本上,设置的阈值越小,可以检测到的圆圈越多。