Сравнение изображений ирисов с помощью opencv

Мне нужна помощь по сравнению радужной оболочки.

Я уже сегментирую и нормализую свои изображения радужной оболочки. Теперь я хочу экстрагировать объекты, добавить их в базу данных или просто в список векторов объектов, а затем сравнить их с вектором других объектов. Я хочу, чтобы мое приложение решило, есть ли такая радужная оболочка в базе данных или нет. Конечно, изображения различны, они сделаны в разном свете, под углом и т. Д.

Я думал, что фильтр Габора будет полезен, поэтому я установил 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: Нормализованная радужка на человека 1 img1:

Человек один img2: Нормализованная радужка на человека 1 img2:

Расстояние Хемминга для этого примера составляет около 29000 (и это самое низкое расстояние, которое я получил, по большей части я получил около 30000 - 31000 для радужной оболочки одного и того же человека) Расстояние Хемминга для разных людей составляет около 31000 (зависит от тестируемого изображения)

1 ответ

Я преуспел в этом, просто реализовав алгоритм / математику в статье Даугмана и т. Д. Я предлагаю на самом деле визуализировать ядра Габора, чтобы найти содержательную комбинацию параметров, таких как сигма и лямбда. Я не использовал OpenCV GetGaborKernel, но использовал созданный вручную.

Другие вопросы по тегам