Как обнаружить и нарисовать круг вокруг радужной оболочки глаза?

Я пытался обнаружить область радужной оболочки глаза и затем нарисовал круг вокруг обнаруженной области. Мне удалось получить четкое черно-белое изображение глаза, содержащее только зрачок, линию верхнего века и бровь, используя пороговую функцию.

Как только это будет достигнуто HoughCircles применяется для определения наличия кругов на изображении. Тем не менее, он никогда не обнаруживает никаких круговых областей. После прочтения HoughCircles, говорится, что

Метод градиента Хафа работает следующим образом:

Сначала изображение необходимо пройти через фазу обнаружения края (в этом случае cvCanny()).

Затем я добавил хитрый детектор после пороговой функции. Это все еще производит нулевые обнаруженные круги. Если я уберу пороговую функцию, изображение глаза станет занятым ненужными линиями; следовательно я включил это в.

cv::equalizeHist(gray, img);
medianBlur(img, img, 1);

IplImage img1 = img;
cvAddS(&img1, cvScalar(70,70,70), &img1);
//converting IplImage to cv::Mat
Mat imgg = cvarrToMat(&img1);

medianBlur(imgg, imgg, 1);
cv::threshold(imgg, imgg, 120, 255, CV_THRESH_BINARY);
cv::Canny(img, img, 0, 20);

medianBlur(imgg, imgg, 1);

vector<Vec3f> circles;
/// Apply the Hough Transform to find the circles
HoughCircles(imgg, circles, CV_HOUGH_GRADIENT, 1, imgg.rows/8, 100, 30, 1, 5);
  • Как я могу преодолеть эту проблему?
  • Будет ли метод кругов работать?
  • Есть ли лучшее решение для определения области радужной оболочки?
  • Правильно ли выбраны параметры?

Также обратите внимание, что изображение получено непосредственно с веб-камеры.

2

Решение

Попробуйте использовать дифференциальный оператор Даугмана Integro. Он вычисляет центр радужки и зрачка и рисует точный круг на границах радужки и зрачка. Код MATLAB доступен здесь обнаружение границы радужной оболочки глаза методом Даугмана. Поскольку я не знаком с OpenCV, вы можете конвертировать его.

0

Другие решения

Двойное изображение глаза содержало три различных аспекта: ресницы, глаз и бровь. Основная цель — добраться до интересующей области, которая является глазом / радужной оболочкой, за исключением бровей и ресниц. Я выполнил следующие действия:

Шаг 1: Откажитесь от верхней половины изображения глаза, поэтому у нас остаются ресницы, область глаз и небольшие области теней.

Шаг 2: Найти контуры

Шаг 3: Найдите самый большой контур, чтобы у нас была только область глаза

Шаг 4: Используйте ограничивающий прямоугольник, чтобы создать прямоугольник вокруг области глаз
http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/bounding_rects_circles/bounding_rects_circles.html

Теперь у нас есть область интереса. С этой точки зрения я теперь собираю эти изображения и использую нейронную сеть для обучения системы эмулировать свойства мыши. Сейчас я изучаю нейронную сеть link1 и как использовать его в opencv.

Использование предыдущих методов, которые включали в себя обнаружение точки радужной оболочки, создание вектора глаза, отслеживание его и вычисление ссадины на экране, отнимает много времени. Также на радужной оболочке отражается свет, что затрудняет ее обнаружение.

0

По вопросам рекламы [email protected]