使用HoughCircles检测和测量瞳孔和虹膜
我试图使用OpenCV,更具体地说,它的HoughCircles来检测和测量瞳孔和虹膜,目前我一直在玩一些variables的函数,因为它要么返回0圈,要么过量。 下面是我正在使用的代码和testing图像。
虹膜测量代码:
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);
测量瞳孔的代码:
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);
我知道图像很粗糙,我一直在试图find一种方法来清理它,使边缘更清晰。
所以我的问题明白地说:我可以做些什么来调整函数HoughCircles中的参数或更改图像,使虹膜和瞳孔检测?
谢谢
好的,没有太多的实验,我所理解的是,在使用霍夫圆检测器之前,你只对图像应用双边滤波器。
在我看来,你需要在这个过程中join一个阈值的步骤。
我把你在post中提供的示例图像做了以下步骤:
-
转换为灰度
-
形态梯度
-
阈值
-
霍夫圈检测。
在阈值步骤之后,我只得到了左眼的以下图像:
这是代码:
灰阶:
cvCvtColor(im_rgb,im_rgb,CV_RGB2GRAY);
形态学:
cv::morphologyEx(im_rgb,im_rgb,4,cv::getStructuringElement(cv::MORPH_RECT,cv::Size(size,size)));
阈值:
cv::threshold(im_rgb, im_rgb, low, high, cv::THRESH_OTSU);
ough circle检测:
cv::vector<cv::Vec3f> circles; cv::HoughCircles(im_rgb, circles, CV_HOUGH_GRADIENT, 2, im_rgb.rows/4);
现在当我打印时:
NSLog(@"Found %ld cirlces", circles.size());
我得到:
"Found 1 cirlces"
希望这可以帮助。
- webView:didFailLoadWithError -1004:无法连接到服务器,同时在Phonegap ios连接谷歌加号
- 如何使用UIPickerView在一个视图中填充不同的文本字段?
- 缩短UIScrollView中的触摸延迟?
- 处理SFSafariViewController中的popup窗口/选项卡
- Restkit + Objective-c – 多次调用同一个Web服务
- 使用GLKit和OpenGL-ES,如何绘制两个三angular形,一个纹理,另一个坚实
- Swift 3更改date格式
- 我怎样才能在一个视图控制器的中心内容,以便它总是居中不pipe在xamarin故事板中使用什么样的设备大小?
- iOS版。 BLE。 CBCharacteristicWriteWithoutResponse – 如何使其工作?