Comparing iris images with opencv
I need help comparing irises.
I've already segmented and normalized my iris images. Now I want to use additional functions, add them to a database or just a list of vector functions, and then compare with other functions. I want my application to decide if such aperture is already in the database or not. Of course, the images are different from each other, they were taken with different light, angle, etc.
I thought the Gabor filter would be useful, so I am up to 12 different parameter values:
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);
Then I calculate 12 Hamming distances using this function:
dist_ham = Core.norm(it1.next(), it2.next(), Core.NORM_HAMMING);
And we get the average.
And ... it doesn't work. Hamming separation is similar when I compare 2 different images of the same iris or two different irises. How can I make my algorithm better? Maybe I should use some of the mathers implemented in openCV for good results? It doesn't matter to me which algorithm I use, I just want to have good results. And I'm starting a little.
Some sample photos: Person one img1: Normalized aperture for face 1 img1:
Face one img2: Normalized diaphragm for human 1 img2:
Hamming distance for this example is about 29000 (and this is the lowest distance I got, in most cases I got about 30,000-3000 for the same face) Hamming distance for different faces is about 31000 (depends on the tested image).
source to share