Алгоритм сопоставления отпечатков пальцев на основе мелочей

Проблема

Мне нужно сопоставить два отпечатка пальца и оценить сходство.

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

Ввод

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

Графически они выглядят так:

минуты

Минимум состоит из триплета (i, j, theta), где:

  • i это строка в матрице
  • j - это столбец в матрице
  • theta — это направление. Я еще не использую этот параметр в своем алгоритме сопоставления.

Что я уже сделал

  • Для каждого списка найдите "плотные регионы" или "кластеры". В некоторых областях точек больше, чем в других, и я написал алгоритм для их нахождения. Могу объяснить дальше, если хотите.
  • Сдвиг второго списка, чтобы учесть разницу в положении пальцев на обоих изображениях. Я пренебрегаю различиями в вращении пальцев. Сдвиг осуществляется путем совмещения барицентров центров кластеров. (Надежнее барицентра всех мелочей)
  • Я попытался построить матрицу для каждого списка (после сдвига), чтобы для каждой мелочи увеличивался соответствующий элемент и его близкие соседи, как показано ниже.

    1 1 1 1 1 1 1

    1 2 2 2 2 2 1

    1 2 3 3 3 2 1

    1 2 3 4 3 2 1

    1 2 3 3 3 2 1

    1 2 2 2 2 2 1

    1 1 1 1 1 1 1

  • Вычитая две матрицы и складывая абсолютные значения всех элементов в результирующей матрице, я надеялся получить низкие числа для близких отпечатков пальцев.

Результаты

  • Я протестировал несколько отпечатков пальцев и обнаружил, что количество кластеров очень стабильно. Совпадающие отпечатки пальцев очень часто имеют одинаковое количество кластеров, а разные пальцы дают разные числа. Так что это определенно будет фактором в общей оценке сходства.
  • Однако сумма различий не сработала. Не было никакой корреляции между сходством и суммой.

Мысли

  • Мне может понадобиться использовать направления точек, но я пока не знаю, как
  • Я мог бы использовать стандартное отклонение точек или кластеров.
  • Я мог бы повторить этот процесс для разных типов мелочей. Прямо сейчас мой алгоритм определяет окончания и разветвления гребней, но, возможно, мне следует обрабатывать их отдельно.

Вопрос: как я могу улучшить свой алгоритм?

Изменить

Я прошел долгий путь с момента публикации этого вопроса, так что вот мое обновление.

Я вообще отказался от бифуркаций, потому что мой алгоритм прореживания слишком часто их путает. Однако в конечном итоге я довольно часто использовал углы.

Моя первоначальная идея подсчета кластеров довольно хорошо держится в небольших тестах, которые я проводил (разные комбинации моих пальцев и пальцев нескольких добровольцев).

Я даю оценку на основе следующих тестов (10 тестов, поэтому 10% за успех. Это немного наивно, но я найду лучший способ превратить эти 10 результатов в оценку, поскольку каждый тест имеет свои особенности):

  • Cluster-thingy (все нижеследующие используют не кластеры, а мелочи. Это единственный подход, связанный с кластерами, который я использовал)
  • Средняя i позиция
  • Средний угол
  • i дисперсия
  • j дисперсия
  • Угловая дисперсия
  • i эксцесс
  • j эксцесс
  • Угол эксцесса
  • j асимметрия

Действительно статистический подход.

Сравнение одних и тех же пальцев практически всегда дает от 80 до 100%. Странные сравнения пальцев между 0 и 60% (не часто 60%). У меня нет точных цифр, поэтому я не буду притворяться, что это статистически значимый успех, но это похоже на хороший первый выстрел.


person Community    schedule 26.10.2016    source источник
comment
Я понимаю, что это длинный пост, я постарался быть как можно более конкретным и показать исследование, которое я провел. Более подробная информация об основах моего алгоритма приведена в ссылке, которую я дал. Спасибо, что прочитали!   -  person    schedule 26.10.2016
comment
1. На вашей диаграмме я не могу понять, показываете ли вы 1 или 2 изображения, и если 2, то какие? 2. Извиняясь за длинный пост, это обычно добавлять картошку :-)   -  person Ami Tavory    schedule 26.10.2016
comment
Я показываю одно изображение. Это всего лишь пример, чтобы дать представление о том, как расположены точки.   -  person    schedule 26.10.2016
comment
О, и есть картофель тогда ;)   -  person    schedule 26.10.2016
comment
Я бы попробовал следующее: во-первых, свести каждый набор из n точек к списку всех O(n^2) попарных расстояний между ними, отсортированных по возрастанию расстояния. Чтобы сравнить два отпечатка пальца, вы можете найти для каждого расстояния в одном списке его ближайшего соседа в другом; оценка - это количество расстояний, которые выбирают друг друга в качестве ближайших соседей. (Это можно сделать с помощью объединения списков во времени, линейном по размеру списка, который равен O(n^2) в исходной задаче.) Сравните оценки между многими парами известных одинаковых и известных разных отпечатков пальцев, чтобы выбрать соответствующий порог.   -  person j_random_hacker    schedule 26.10.2016
comment
@j_random_hacker спасибо за ваш вклад! Я помню, что когда-то пробовал что-то подобное. Я обязательно попробую еще раз, но как вы объясните выбросы, далекие от других совпадающих таким образом точек, в то время как, если бы было больше точек, их бы не было? Может максимальное расстояние? И разве высокая плотность точек не способствует ложным совпадениям?   -  person    schedule 27.10.2016
comment
Существует множество мер, которые вы могли бы принять, и все они основаны на этой идее. Да, я думаю, выбор некоторого максимального расстояния мог бы помочь, хотя было бы еще лучше, если бы был какой-то способ избежать такого, возможно, произвольного выбора. В конце концов, может быть вероятность как ложноположительных, так и ложноотрицательных совпадений, поэтому вам понадобится шаг регрессии (машинного обучения), чтобы определить подходящий порог.   -  person j_random_hacker    schedule 27.10.2016


Ответы (1)


Ваш подход к кластеризации интересен, но мне любопытно, насколько хорошо вы его протестировали. Чтобы новый алгоритм сопоставления был полезен для всех исследований и методов, которые уже существуют, вам необходимо иметь достаточно низкий EER. Проверяли ли вы свой метод с какой-либо из стандартных баз данных? У меня есть сомнения относительно способности подсчета кластеров и их местоположения в одиночку идентифицировать особей в более крупных масштабах.

1) Сопоставление отпечатков пальцев — хорошо изученная проблема, и есть много хороших документов, которые могут помочь вам реализовать это. Для начала ознакомьтесь с этой статьей "Сопоставление отпечатков пальцев о локальных и глобальных структурах» Цзян и Яу. Это классическая статья, короткая (всего 4 страницы) и может быть реализована достаточно разумно. Они также определяют показатель оценки, который можно использовать для количественной оценки степени совпадения двух изображений отпечатков пальцев. Опять же, это должно быть только отправной точкой, потому что в наши дни есть много алгоритмов, которые работают лучше.

2) Если вы хотите, чтобы ваш алгоритм был надежным, он должен учитывать преобразования отпечатков пальцев между изображениями. Отсканированные отпечатки пальцев и, конечно же, скрытые отпечатки могут не совпадать от изображения к изображению.

Кроме того, вычисление направления точек мелких деталей обеспечивает метод обработки вращения отпечатков пальцев. Измеряя углы между направлениями точек мелких деталей, которые будут оставаться одинаковыми или близкими к одинаковым на нескольких изображениях независимо от глобального поворота (хотя могут возникать небольшие несоответствия, поскольку кожа не является жесткой и может слегка растягиваться), вы можете найти наилучший набор точек. соответствующие пары или триплеты контрольных точек и использовать их в качестве основы для ротационного выравнивания.

3) Я рекомендую различать окончания хребтовых линий и бифуркации. Чем больше функций вы сможете выделить, тем точнее вы сможете определить, совпадают ли отпечатки пальцев. Вы также можете учитывать количество линий хребта, которые встречаются между каждой контрольной точкой.

Это изображение ниже иллюстрирует функции, используемые Цзяном и Яу. Глобальные и локальные особенности (Цзян и Яу, 2000)

  • d: евклидово расстояние между мелочами
  • θ: мера угла между направлениями мелких деталей
  • φ: угол глобальных мелких деталей
  • n: количество линий хребта между контрольными точками i и j.

Если вы не читали Руководство по распознаванию отпечатков пальцев, рекомендую.

person lucidMonkey    schedule 13.01.2017
comment
Привет, спасибо за вклад, также эти ссылки кажутся весьма полезными! Мои вопросы были опубликованы некоторое время назад, поэтому с тех пор я немного продвинулся. Чтобы уточнить, я не пытаюсь создать что-то столь же хорошее, как существующие алгоритмы, я просто играю с манипуляциями с изображениями Python для школьного проекта. Если мой алгоритм достаточно хорош, чтобы защитить ваш компьютер от вашего 10-летнего племянника, я буду считать его успешным ;) Я редактирую свой вопрос с обновлением и постараюсь отреагировать на некоторые ваши идеи. Спасибо еще раз! - person ; 15.01.2017
comment
Подход на основе кластера действительно немного слаб, потому что в процессе теряется много информации. Но я пытаюсь получить из своего изображения широкий диапазон значений (тестов) и сравнить их. - person ; 15.01.2017
comment
Ну, в таком случае позвольте мне просто выкинуть эту идею. Когда я однажды просматривал точки мелочей на изображении, подобном тому, которое вы показываете, у меня возникла мысль использовать минимальные остовные деревья для создания простого алгоритма сопоставления. Тогда, возможно, вы могли бы сопоставить отпечатки на основе перекрывающихся поддеревьев. - person lucidMonkey; 15.01.2017
comment
Звучит интересно. У меня осталось не так много времени, чтобы закончить проект, но я изучу минимальные остовные деревья, когда буду за компьютером. - person ; 15.01.2017