Обнаружение радужной оболочки не работает EMGUCV

Я новичок в обработке изображений, я пытаюсь реализовать приложение обнаружения 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;


         }

1 ответ

Прежде всего, почему ваш 0 //max radius даже меньше, чем 5, //min radius? Если у вас есть приблизительная оценка радиуса радужной оболочки, попробуйте отрегулировать эти два значения, чтобы обеспечить обнаружение только окружностей в этом диапазоне.

Во-вторых, настройте значение 2.0, //Resolution of the accumulator used to detect centers of the circles, В основном, чем меньше этот порог, тем больше кругов может быть обнаружено.

Другие вопросы по тегам