我是openCV的新手,但我想创建虹膜识别程序.虽然带网络摄像头的系统可以检测到眼睛,但是它不能检测到圆形虹膜.我正在使用Hough Circle Transformation.但是如果图像中的光圈不够圆,系统就无法检测到它.有什么解决方案吗?
使用的算法是霍夫圆变换.
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 );
} …Run Code Online (Sandbox Code Playgroud) c++ opencv image-processing hough-transform iris-recognition
在Android P博客Better Biometrics中,他们说:"为了保证用户安全,大多数应用和设备都有认证机制,或者证明你是你的方式.这些机制分为三类:知识因素,占有因素和生物识别因素.知识因素要求你知道的东西(如PIN或密码),占有因素要求你拥有的东西(如代币生成器或安全密钥),生物识别因素要求你的东西(如你的指纹,虹膜) ,或面对)".
但是当我在BiometricPrompt API中读取时,我看不到虹膜或面部的文档,仅验证对指纹的支持:"此调用使指纹硬件变暖,显示系统提供的对话框,并开始扫描指纹.它终止当BiometricPrompt.AuthenticationCallback.onAuthenticationError(int,CharSequence)被调用时......"我如何使用生物识别技术创建虹膜和面部或任何其他解决方案的身份验证登录?
我现在正致力于眼动追踪项目.在这个项目中,我正在跟踪摄像头视频中的眼睛(分辨率为640X480).
我可以在每一帧中找到并跟踪眼睛,但我需要找到瞳孔.我阅读了很多论文,其中大部分都是用Alan Yuille的可变形模板方法来提取和跟踪眼睛特征.任何人都可以帮助我使用任何语言的代码(matlab/OpenCV)吗?
我尝试过不同的阈值,但由于眼睛区域的分辨率低,它不能很好地工作.我非常感谢在视频中找到瞳孔甚至虹膜的任何帮助.

我目前正在运行以下Python(OpenCV 3):
out = cv2.linearPolar(self.roi, center, self.iris_radius, cv2.WARP_FILL_OUTLIERS)
Run Code Online (Sandbox Code Playgroud)
输入图片:/结果:
输入http://answers.opencv.org/upfiles/13977212612842576.png 输出http://answers.opencv.org//upfiles/13977212884132424.png
我遇到的问题是这会造成扭曲的东西; 我所期望的是输出高而薄,以减少丢弃和插值的数据量.
我该怎么做才能改善效果,并制作漂亮,美观,细致的虹膜条?
我需要找到虹膜边缘,我使用的输入图像不是完全圆形的虹膜,有时它可能被眼睑覆盖.我找到了一篇期刊文章的摘要,发现虹膜甚至被眼睑覆盖.但是,我坚持其中一个步骤.再次,它因为只有摘要而我找不到那篇文章的全文.
这就是我被卡住的地方,我有一个图像,它已经被垂直索贝尔边缘检测暗示了.我有一个图像输入,这是图片:
这是应用垂直边缘检测后的图片:
我需要移除除虹膜边缘(红色边缘)以外的所有边缘.
我的预期结果应该是这样的:
注意:有些图像可能只有瞳孔的左边缘或右边缘,如上图所示,但有些图像可能有瞳孔的左右边缘.
在我看来,有两种方法可以获得优势.
移除水平边缘,因为瞳孔边缘有点垂直.但我不知道如何去除水平边缘,它不是真正的水平线条,其弯曲的水平线条.
找到图片中最长的边缘(我也不知道找到最长边的算法是什么).
哪一个是解决我问题的正确方法?或不是以上两种选择?
如果你知道找到非全圆形物体的方法,特别是对于虹膜,请告诉我,它使我的项目更容易.
我正在创建一个桌面/ winform应用程序,它读取tif/pdf应付帐款发票并提取所有发票信息以存储到数据库中.
我可以阅读标准条形码(QR码,Code39等),以及一些应付发票的标准字段(发票日期,公司名称,地址)和OCR(图像的特定区域),但无法捕获订单项,数量正确.
我分两个阶段提取信息:
1.根据模板读取特定区域(特定字段的用户映射区域)
2.OCR整页并搜索应付发票标准字段名称和值
我有关于以下3种方法的想法:
1.为一种类型的发票创建模板并处理所有发票.
2.基于Nural网络的引擎,需要使用样本数据进行训练,以便根据模式进行处理.
3.表格处理,一种OMR.OCR用于查看在表单上放置字段的完全相同的坐标(在表单设计期间)
问题:
如何使用OCR或某些智能读卡器取消应付发票?
主要是我寻找一些algorithem(C#+ OCR引擎)/ philoshpy应付发票捕获,但参考一些具有相同功能或固体商业产品的SDK也会有所帮助.
我用谷歌搜索并发现Abbyy FlexiCapture引擎,IRIS Capture&Extract有点承诺但主要是基于模板或培训.他们声称不需要模板或培训,但没有任何东西看起来100自动捕获.
请参考一些产品(至少免费试用),SDK或示例/示例.
我必须在我的应用程序中使用Gabor过滤器,但我对这个OpenCV方法参数值没有任何线索.我想编码一个虹膜.开始Gabor滤波器并获取特征(我想对12组Gabor参数值执行此操作).然后我想算一个汉明dystans并做认证.
如果有人可以在这里写params范围,或者如何在函数中计算它:
Imgproc.getGaborKernel(new Size(kSize[j], kSize[j]), sigma, theta, lambda, gamma);
Run Code Online (Sandbox Code Playgroud)
我将非常感激.我当然试图自己分配,但没有成功.
示例文件:

我试图检测眼睛的虹膜,但HoughCircles返回0圈。
输入图像(眼睛)为:
然后,使用此图像进行以下操作:
cvtColor(eyes, gray, CV_BGR2GRAY);
morphologyEx(gray, gray, 4,cv::getStructuringElement(cv::MORPH_RECT,cv::Size(3,3)));
threshold(gray, gray, 0, 255, THRESH_OTSU);
vector<Vec3f> circles;
HoughCircles(gray, circles, CV_HOUGH_GRADIENT, 2, gray.rows/4);
if (circles.size())
cout << "found" << endl;
Run Code Online (Sandbox Code Playgroud)
因此,最终的灰色图像如下所示:
我已经发现了使用HoughCircles来检测和测量瞳孔和虹膜的问题,但尽管与我的问题相似,但它并没有帮助我。
那么为什么HoughCircles在尝试检测虹膜时返回0圈呢?如果有人知道找到虹膜的更好方法,欢迎您。