我需要虹膜比较方面的帮助。
我已经对我的虹膜图像进行了分割和规范化。现在我想提取特征,将其添加到数据库中,或者只是在特征向量列表中,然后将其与其他特征向量进行比较。我希望我的应用程序决定这样的虹膜是否已经在数据库中。当然图像是不同的,它们是在不同的光线、角度等下完成的。
我认为 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(取决于测试图像)