【问题标题】:OpenCV: Using Hough Circle Transformation to detect irisOpenCV:使用霍夫圆变换检测虹膜
【发布时间】:2012-09-16 01:26:00
【问题描述】:

我是openCV的新手,但我想创建虹膜识别程序。尽管带有网络摄像头的系统可以检测到眼睛,但它无法检测到圆形虹膜。我正在使用霍夫圆变换。但是如果图像中的虹膜不够圆,系统就无法检测到它。有什么解决办法吗?

使用的算法是霍夫圆变换。

IplImage *capturedImg = cvLoadImage("circle.jpg",1);
IplImage *grayscaleImg = cvCreateImage(cvGetSize(capturedImg), 8, 1);

cvCvtColor(capturedImg, grayscaleImg, CV_BGR2GRAY);

// Gaussian filter for less noise
cvSmooth(grayscaleImg, grayscaleImg, CV_GAUSSIAN,9, 9 );

//Detect the circles in the image
CvSeq* circles = cvHoughCircles(grayscaleImg,
                         storage,
                         CV_HOUGH_GRADIENT,
                         2,
                         grayscaleImg->height/4,
                         200,
                     100 );

for (i = 0; i < circles->total; i++) 
{
     float* p = (float*)cvGetSeqElem( circles, i );
     cvCircle( capturedImg, cvPoint(cvRound(p[0]),cvRound(p[1])), 
        3, CV_RGB(0,255,0), -1, 8, 0 );
     cvCircle( capturedImg, cvPoint(cvRound(p[0]),cvRound(p[1])), 
         cvRound(p[2]), CV_RGB(0,0,255), 3, 8, 0 );
}
// cvCircle( img,cvPoint( r->x, r->y ),67, CV_RGB(255,0,0), 3, 8, 0 );      
cvNamedWindow( "circles", 1 );
cvShowImage( "circles", capturedImg );

【问题讨论】:

  • 请重新格式化您的问题。你应该写一个可以理解的英文陈述。
  • 发布您的算法或代码将对您有更多帮助。
  • 您可以尝试使用分割/形态学工具跟踪眼睛边界并提取虹膜位置。如前所述,发布您当前的算法将有助于我们为您提供指导。
  • 除了霍夫圆,还有什么算法可以用来检测虹膜?谢谢

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


【解决方案1】:

在cvSmooth() 和cvHoughCircles() 之间添加对cvCanny() 的调用。这将执行一个边缘检测算法,该算法将为cvHoughCircles() 提供更好的输入图像,并且可能会改善您的结果。

Stackoverflow上有很多similar的问题,我建议你use the search box。

【讨论】:

  • 太棒了。单击答案附近的复选框,将其选为您问题的官方答案。这样您就可以帮助未来的访客。
猜你喜欢
  • 2011-02-22
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多