Мне нужна помощь в сравнении радужной оболочки.
Я уже сегментировал и нормализовал изображения радужной оболочки. Теперь я хочу извлечь функции, добавить их в базу данных или просто в список векторов функций, а затем сравнить их с другими векторами функций. Я хочу, чтобы мое приложение решало, есть ли такая радужка уже в базе данных или нет. Конечно, изображения разные, они были сделаны при разном освещении, ракурсе и т.д.
Я подумал, что фильтр Габора будет полезен, поэтому я выбрал 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 материалы для получения хороших результатов? Для меня не имеет значения, какой алгоритм я буду использовать, я просто хочу иметь хорошие результаты. А я начинающий.
Некоторые примеры изображений: Первый человек img1: Нормализованная радужная оболочка для первого человека img1:
Первый человек img2: Нормализованная радужная оболочка для первого человека img2:
Расстояние Хэмминга для этого примера составляет около 29000 (и это самое низкое расстояние, которое я получил, в большинстве случаев я получил около 30000-31000 для радужной оболочки одного и того же человека) Расстояние Хэмминга для разных людей составляет около 31000 (зависит от тестируемого изображения)