Я пытался обнаружить область радужной оболочки глаза, а затем нарисовать круг вокруг обнаруженной области. Мне удалось получить четкое черно-белое изображение глаза, содержащее только зрачок, линию верхнего века и бровь, используя пороговую функцию.
Как только это будет достигнуто, 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);
- Как я могу преодолеть эту проблему?
- Будет ли работать метод круга?
- Есть ли лучшее решение для обнаружения области радужной оболочки?
- Правильно ли выбраны параметры?
Также обратите внимание, что изображение получается напрямую с веб-камеры.