使用opencv比较虹膜图像

时间:2014-11-21 09:29:12

标签: java opencv image-processing iris-recognition

我需要虹膜比较的帮助。

我已经对虹膜图像进行了细分和标准化处理。现在我想要extraxt功能,将其添加到数据库,或者只是简单地在特征向量列表中,然后将其与其他功能向量进行比较。我希望我的应用程序决定这样的虹膜是否已经存在于数据库中。当然,图像是不同的,它们是在不同的光线,角度等情况下完成的。

我认为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个不同图像时,汉明距离类似。 如何让我的算法更好?也许我应该使用openCV mathers中实现的一些来获得好的结果?对我而言,我将使用哪种算法并不重要,我只想要有好的结果。我有点唠叨。

一些示例图片: 人一img1:enter image description here 标准化虹膜适用于第一人img1:enter image description here

人一img2: enter image description here 标准化虹膜适用于第一人img2:enter image description here

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

1 个答案:

答案 0 :(得分:0)

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