【问题标题】:Comparing irises images with opencv用opencv比较虹膜图像
【发布时间】:2016-12-19 14:34:14
【问题描述】:

我需要虹膜比较方面的帮助。

我已经对我的虹膜图像进行了分段和标准化。现在我想提取特征,将其添加到数据库中,或者只是在特征向量列表中,然后将其与其他特征向量进行比较。我希望我的应用程序决定这样的虹膜是否已经在数据库中。当然图像是不同的,它们是在不同的光线、角度等下完成的。

我认为 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 个汉明距离:

dist_ham = Core.norm(it1.next(), it2.next(), Core.NORM_HAMMING);

然后取平均值。

而且...它不起作用。当我比较相同虹膜或 2 个不同虹膜的 2 个不同图像时,Hamming distanse 是相似的。 我怎样才能使我的算法更好?也许我应该使用一些在 openCV mathers 中实现的来获得好的结果?对我来说,我将使用哪种算法并不重要,我只想有好的结果。我是一个小初学者。

一些示例图片: 人一img1: 第一个人 img1 的标准化虹膜:

第一个人img2: 第一个人 img2 的标准化虹膜:

这个例子的汉明距离大约是 29000(这是我得到的最小距离,在大多数情况下,同一个人的虹膜我得到大约 30000 - 31000) 不同人的汉明距离约为31000(取决于测试图像)

【问题讨论】:

  • 我认为这个问题非常广泛,而且不止一种方法和解决方案!但在此之前,我们需要更多的输入。首先你现在处于什么阶段?在比较之前您正在执行哪些预处理步骤?你正在使用什么展开技术?
  • 您是否标准化了瞳孔大小?如果两个虹膜具有相同的方向,块匹配会起作用吗?你有示例图片吗?
  • @BalajiR 正如我所说,我预处理我的眼睛图像并在笛卡尔系统中获得虹膜图像。例如。图片:link这个区域是我通过霍夫圆变换得到的。
  • @Micka 我编辑了我的帖子并举了一个例子
  • 在您的标准化虹膜中,您可以看到虹膜部分的亮度或对比度不同(虽然大小/位置看起来不错)和非虹膜部分的大小(睫毛及上方和下方)黑暗部分)差异很大。尝试检测+排除非虹膜部分。也许您可以尝试某种虹膜图像的“描述符”:HOG/SIFT/BRISK 等

标签: java opencv image-processing iris-recognition


【解决方案1】:

我只是通过实现 Daugman 论文中的算法/数学等成功地做到了这一点。我的建议是实际可视化 gabor 内核以找到有意义的参数组合,例如 sigma 和 lambda。我没有使用 OpenCV 的 GetGaborKernel,而是使用了手工制作的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 2012-09-16
    • 2011-06-18
    • 2011-02-22
    相关资源
    最近更新 更多