【问题标题】:How to detect and draw a circle around the iris region of an eye?如何检测并在眼睛的虹膜区域周围画一个圆圈?
【发布时间】:2013-07-17 22:23:57
【问题描述】:

我一直在尝试检测眼睛的虹膜区域,然后在检测到的区域周围画一个圆圈。我已经使用阈值函数获得了一个清晰的黑白眼睛图像,其中只包含瞳孔、上眼睑线和眉毛。

一旦实现这一点,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);
  • 我该如何解决这个问题?
  • 霍夫圆法有效吗?
  • 是否有更好的方法来检测虹膜区域?
  • 选择的参数是否正确?

还要注意,图片是直接从网络摄像头获取的。

【问题讨论】:

  • 我正在做类似的项目,但我需要检测很多小点,而且它们都是不完美的圆圈,有很多噪音。我使用 findContours() 成功地检测到了它们。事先,我需要应用二进制图像和精明的边缘
  • 我也在想 findContours() 方法将是要走的路。考虑到当一个人在屏幕底部放牧时,我的瞳孔确实会产生不完美的圆/半圆。我将尝试这种方法,并尽快发布有关结果的更新。 -谢谢。
  • FindContours 方法不是那么可靠,有时它会在眼睛区域内绘制随机轮廓。是否有替代或改进?
  • 我的项目是开发一只眼睛鼠标,光线似乎对图像有很大影响。关于瞳孔检测的帮助将不胜感激,因为我一直被困在这一点上一段时间。阈值法给出了一个非常清晰、可见的瞳孔图像。
  • 我发现在绘制轮廓时,它勾勒出白色区域,因此我需要对图像进行否定。由于眼睑有不连续性,因此只勾勒出一个封闭区域。我该如何勾勒最大/圆形区域(有瞳孔的区域)而忽略眉毛区域(非圆形区域)?

标签: c++ opencv image-processing hough-transform iris-recognition


【解决方案1】:

双眼图像包含三个不同方面的睫毛,眼睛和眉毛。主要目的是到达感兴趣的区域,即眼睛/虹膜,不包括眉毛和睫毛。我按照以下步骤操作:-

第1步:丢弃眼睛的上半部分,因此我们只剩下睫毛、眼睛区域和小阴影区域。

第 2 步:寻找轮廓

第 3 步:找到最大的轮廓,这样我们就只有眼睛区域了

第 4 步:使用边界框在眼睛区域周围创建一个矩形 http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/bounding_rects_circles/bounding_rects_circles.html

现在我们有了感兴趣的区域。从这一点开始,我现在正在对这些图像进行精确处理,并使用神经网络来训练系统来模拟鼠标的属性。我目前正在学习神经网络link1以及如何在opencv中使用它。

使用以前的方法,包括检测虹膜点、创建眼睛矢量、跟踪它并计算屏幕上的掠过非常耗时。而且虹膜上会反射光线,因此难以检测。

【讨论】:

    【解决方案2】:

    尝试使用 Daugman 的 Integro 微分算子。它计算虹膜和瞳孔的中心,并在虹膜和瞳孔边界上绘制一个精确的圆。 MATLAB 代码可在此处iris boundary detection using Daugman's method 获得。由于我不熟悉 OpenCV,您可以转换它。

    【讨论】:

    • 谢谢你的回复我会看看的。
    猜你喜欢
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2021-06-24
    • 1970-01-01
    • 2020-02-05
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多