使用opencv中的hough圆函数查找虹膜的微小圆圈
我需要检测我使用houghcircle函数的眼睛图片的虹膜.所以, // Read the image src = imread("D:/001R_3.png"); if( !src.data ) { return -1; } /// Convert it to gray cvtColor( src, src_gray, CV_BGR2GRAY ); /// Reduce the noise so we avoid false circle detection GaussianBlur( src_gray, src_gray, Size(9, 9), 2, 2 ); ///////////// /// Generate grad_x and grad_y Mat grad_x, grad_y; Mat abs_grad_x,
0 2023-05-10
编程技术问答社区
关于在java中使用hough圆检测虹膜和瞳孔圆的opencv
我正在使用Java中的OpenCV尝试检测有眼睛的图像中的圆圈(Iris和Pupil),但我没有得到预期的结果. 这是我的代码 // convert source image to gray org.opencv.imgproc.Imgproc.cvtColor(mRgba, imgCny, Imgproc.COLOR_BGR2GRAY); //fliter org.opencv.imgproc.Imgproc.blur(imgCny, imgCny, new Size(3, 3)); //apply canny org.opencv.imgproc.Imgproc.Canny(imgCny, imgCny, 10, 30); //apply Hough circle Mat circles = new Mat(); Point pt; org.opencv.imgproc.Imgproc.HoughCircles(imgCny, circles, Imgproc.C
14 2023-05-10
编程技术问答社区
OpenCV中的Gabor内核参数
我必须在应用程序中使用Gabor滤波器,但是我对此OpenCV方法参数值没有任何线索. 我想编码虹膜. Gabor过滤器的开始并获得功能(我想为12组Gabor参数值进行此操作).然后,我想计算一个锤肌的呼吸器并进行身份验证. 如果有人可以在此处写入参数范围,或者如何在功能中计算它: Imgproc.getGaborKernel(new Size(kSize[j], kSize[j]), sigma, theta, lambda, gamma); 我会非常感谢.当然,我试图自己分配它,但没有成功. 示例文件: 解决方案 您可以参考此C ++代码,以查找图像的Gabor边缘检测器输出.我确定您也可以在Java中形成相似之处!播放这些值以找到所需的内核类型. #include #include #include
0 2023-05-10
编程技术问答社区
为什么HoughCircles在试图检测虹膜时返回0个圆圈?
我试图检测眼睛的虹膜,但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 circles; HoughCircles(gray, circles, CV_HOUGH_GRADIENT, 2, gray.rows/4); if (circles.size()) cout
0 2023-05-09
编程技术问答社区
OpenCV: 使用Hough Circle Transformation来检测虹膜
我是OpenCV的新手,但我想创建IRIS识别程序.尽管具有网络摄像头的系统可以检测到眼睛,但是它不能检测到圆形虹膜.我正在使用Hough Circle变换.但是,如果图像中的虹膜不够圆形,则系统无法检测到它.有任何解决方案吗? 使用的算法是霍夫圆转换. 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* circle
2 2023-05-09
编程技术问答社区
关于在视频中寻找学生
我现在正在开展眼动项目.在这个项目中,我正在网络摄像头视频中跟踪眼睛(分辨率为640x480). 我可以在每个框架中找到并跟踪眼睛,但是我需要找到学生.我读了很多论文,其中大多数是指艾伦·尤尔(Alan Yuille)的可变形模板方法来提取和跟踪眼睛功能.谁能用任何语言(MATLAB/OPENCV)帮助我使用此方法的代码? 我尝试使用不同的阈值,但是由于眼睛区域的分辨率低,它的工作原理不太好.我将非常感谢在视频中找到学生甚至虹膜的任何帮助. 解决方案 您需要做的是将网络摄像头转换为近红外凸轮.在线有很多教程. 尝试这个. 从NIR凸轮上拍摄的图像将看起来像这样 - 您可以使用openCV,然后将其用于阈值. 然后使用Erode函数. 在此之后,将图像填充一些颜色,将角落作为种子点. 消除孔并反转图像. 使用距离转换为最近的非零值. 找到最大值的坐标并绘制一个圆. 其他解决方案 如果您仍在研究此问题,请查看我的OptiM
0 2023-03-20
编程技术问答社区
用opencv比较虹膜图像
我需要虹膜比较的帮助. 我已经细分并将虹膜图像归一化.现在,我想添加额外的功能,将其添加到数据库中,或仅在功能向量列表中,然后将其与其他功能向量进行比较.我希望我的应用程序确定此类虹膜是否已经在数据库中.当然,图像不同,它们是在不同的角度,角度等完成的. 我认为Gabor过滤器会有所帮助,因此我对12个不同的参数值: Mat kernel = Imgproc.getGaborKernel(new Size(25, 25), sigma, theta, lambda, gamma, psi, CvType.CV_64F); Scalar sum = Core.sumElems(kernel); //kerner normalization Core.divide(kernel, sum, kernel); Imgproc.filter2D(floatSource, dest, CvType.CV_64F, kernel); 然后,我使用此功能计算12个锤距:
4 2023-01-01
编程技术问答社区
如何在OpenCV中获得gabor核矩阵的实部和虚部
openCV初学者和不良数学. 我的工作是将Gabor过滤器应用于归一化图像.我只知道OpenCV具有getGaborKernel函数,我想知道此功能的返回矩阵是内核的实际部分或虚构部分. 如果我不能使用此功能,那么如何生成这些内核? 使用Java API,但是C ++代码很好. 解决方案 您可以在 wikipedia ). double v = scale*std::exp(ex*xr*xr + ey*yr*yr)*cos(cscale*xr + psi); 您可以将虚构的零件修改为(如报道,在这里) double v = scale*std::exp(ex*xr*xr + ey*yr*yr)*sin(cscale*xr + psi); ^^^ 拥有内核后,可以将其与函数其他解决方案 实际上Cos和Sin之间的差异为90度或PI/2. 因此,您可以通过将psi作为
38 2022-11-24
编程技术问答社区
瞳孔中心在实时眼球追踪中跳动得很厉害
在我的眼睛跟踪项目中,学生中心跳了很多,我不认为它是固定点. 我该怎么办? 我的想法是比较2帧的学生中心和学生的阈值,但这无济于事.另一点是相机噪音. 我该怎么做才能减少声音? 我使用 starburst :一种用于基于视频的眼睛跟踪的混合算法,结合了基于功能的方法和基于模型的方法. 解决方案 眼睛跟踪器带有2种噪声/错误类型:可变和系统错误.可变噪声基本上是注视目标周围的分散体,恒定的漂移或凝视目标的偏差是系统的噪声.作为参考,请参见以下论文: 在您的情况下,这是可变错误.由于疲劳,非自愿的眼球振动,光等导致可变误差.您可以通过过滤凝视数据来将其删除.但是,请注意不要使其平滑太多,这可能会导致眼球固有的自然波动的丧失. 其他解决方案 上下文 有关眼动技术的信息缺乏很多.但是,由于我在这个主题上工作的时间(不多),我正在提出几个问题.一个与眼睛跟踪库,而其他人则与另一项替代品有关到类似的问题.如您所见,此主题并非直观且难以解决.但是不
虹膜和脸部识别的生物识别技术
在博客中更好的Android P 他们说:"为了确保用户安全,大多数应用程序和设备具有身份验证机制,或者是证明您的方法.这些机制分为三类:知识因素,拥有因素和生物识别因素.因素要求您知道的东西(例如引脚或密码),拥有因素要求您拥有的东西(例如令牌生成器或安全密钥),生物特征识别因素要求您使用的东西(例如指纹,虹膜或脸部) ". 但是,当我阅读 biometricprompt api api,我不能请参阅文档有关虹膜或面部的文档,仅对指纹进行身份验证:"此呼叫会加热指纹硬件,显示系统提供的对话框,并开始扫描指纹.它在BioteMetricprompt.authenticationcallcallicationcallcallactiationCallback.oneuthenticationarticationarticationerror(Int,Charsequence)时终止叫..." 我如何使用生物识别技术来创建虹膜和面部或任何其他解决方案的身份验证登录? 解决方案
10 2022-10-27
编程技术问答社区
如何屏蔽圆形区域?
我正在尝试掩盖图像中的圆形区域.我将代码和输出图像放在下面.如您所见,我在虹膜周围画了一个圆圈.在此之后,我想涂黑圆形区域之外的所有内容.如何我需要继续吗?还有其他方法吗? 谢谢... import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('i1.jpg',0) img = cv2.medianBlur(img,5) cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,120, param1=50,param2=50,minRadius=30,maxRadius=0) circles = np.uint16(np.around(circles)) for i in circles[0,:]:
110 2022-08-02
编程技术问答社区
模板匹配中的错误
我正在尝试使用 Python 制作虹膜扫描仪并打开 CV.使用模板匹配功能时出现以下错误: import cv2 import numpy as np img1 = cv2.imread('canny.jpg'); img2 = cv2.imread('frame1.jpg'); edges=cv2.Canny(img2,100,100) w,h=edges.shape[::-1] res = cv2.matchTemplate(img1 , edges, cv2.TM_CCOEFF_NORMED) threshold = 0.8 loc = np.where(res >= threshold) print loc 以下是错误: Traceback (most recent call last): File "E:/OpenCV Programs/threshold2img1.py", line 9, in res = cv2.matchTemp
3372 2022-07-17
编程技术问答社区