我一直在尝试检测眼睛的虹膜区域,然后在检测区域周围绘制一个圆圈。我设法使用阈值函数获得包含瞳孔,上眼睑线和眉毛的清晰黑白眼睛图像。如何检测并在眼睛虹膜区域周围画一个圆圈?
一旦这被实现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()成功检测到它们。之前,我需要应用二进制图像和canny边缘 – azer89
我也认为findContours()方法将成为要走的路线。考虑到当人员放牧指向底部时,我的瞳孔会产生不完整的圆圈/半圆。我会尝试这种方法,并会尽快发布有关结果的更新。 -谢谢。 – Sade
FindContours方法并不可靠,有时在眼部区域绘制一个随机轮廓。是否有替代方案或改进? – Sade