我一直在嘗試檢測眼睛的虹膜區域,然後在檢測區域周圍繪製一個圓圈。我設法使用閾值函數獲得包含瞳孔,上眼瞼線和眉毛的清晰黑白眼睛圖像。如何檢測並在眼睛虹膜區域周圍畫一個圓圈?
一旦這被實現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