1

我是图像处理的新手,我正在尝试为我的学者实施 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;


         }
4

1 回答 1

2

首先,为什么你0 //max radius的比 还要小5, //min radius?如果您对虹膜半径有一个粗略的估计,请尝试调整这两个值以确保仅检测到此范围内的圆。

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

于 2013-12-08T02:28:42.017 回答