Tôi đang cố gắng sử dụng OpenCV, cụ thể hơn là HoughCircles để phát hiện và đo lường học sinh và mống mắt, hiện tại tôi đang chơi với một số biến trong hàm, vì nó hoặc trả về 0 vòng kết nối hoặc một số tiền quá mức. Dưới đây là mã và hình ảnh thử nghiệm tôi đang sử dụng.Sử dụng HoughCircles để phát hiện và đo lường học sinh và mống mắt
Mã cho iris đo:
eye1 = [self increaseIn:eye1 Contrast:2 andBrightness:0];
cv::cvtColor(eye1, eye1, CV_RGBA2RGB);
cv::bilateralFilter(eye1, eye2, 75, 100, 100);
cv::vector<cv::Vec3f> circles;
cv::cvtColor(eye2, eye1, CV_RGBA2GRAY);
cv::morphologyEx(eye1, eye1, 4, cv::getStructuringElement(cv::MORPH_RECT,cv::Size(3, 3)));
cv::threshold(eye1, eye1, 0, 255, cv::THRESH_OTSU);
eye1 = [self circleCutOut:eye1 Size:50];
cv::GaussianBlur(eye1, eye1, cv::Size(7, 7), 0);
cv::HoughCircles(eye1, circles, CV_HOUGH_GRADIENT, 2, eye1.rows/4);
Mã để đo học sinh:
eye1 = [self increaseBlackPupil:eye1];
cv::Mat eye2 = cv::Mat::zeros(eye1.rows, eye1.cols, CV_8UC3);
eye1 = [self increaseIn:eye1 Contrast:2 andBrightness:0];
cv::cvtColor(eye1, eye1, CV_RGBA2RGB);
cv::bilateralFilter(eye1, eye2, 75, 100, 100);
cv::threshold(eye2, eye1, 25, 255, CV_THRESH_BINARY);
cv::SimpleBlobDetector::Params params;
params.minDistBetweenBlobs = 75.0f;
params.filterByInertia = false;
params.filterByConvexity = false;
params.filterByCircularity = false;
params.filterByArea = true;
params.minArea = 50;
params.maxArea = 500;
cv::Ptr<cv::FeatureDetector> blob_detector = new cv::SimpleBlobDetector(params);
blob_detector->create("SimpleBlob");
cv::vector<cv::KeyPoint> keypoints;
blob_detector->detect(eye1, keypoints);
Tôi biết hình ảnh là thô, Tôi cũng đã cố gắng để tìm cách dọn sạch và làm cho các cạnh rõ ràng hơn.
Vì vậy, câu hỏi của tôi để đặt nó rõ ràng: Tôi có thể làm gì để điều chỉnh các tham số trong hàm HoughCircles hoặc thay đổi hình ảnh để làm cho mống mắt và học sinh được phát hiện?
Cảm ơn
'im_rgb' là 'eye1' trong trường hợp của bạn. – metsburg
cho 'kích thước' của phần tử cấu trúc trong phần hình thái học, tôi đã sử dụng giá trị tĩnh là 5 cho tham số kích thước. – metsburg
đã làm việc này hay không, eh? – metsburg