Данный алгоритм предназначен для сравнения двух отпечатков, один из которых получается на предыдущем этапе, а второе считывается из файла базы данных. Оба отпечатка представлены в виде относительных параметров
При реализации алгоритма используются относительные параметры минюций, полученные в результате преобразования, проводимого алгоритмом преобразования абсолютных параметров минюций к относительным, описанного в п. 2.2. Информация о необходимых параметрах минюций содержится в списке fng, каждая запись которого имеет структуру, приведенную в табл. 2.3.
Результатами решения является список отпечатков из базы данных, структурное представление которых совпадает с исследуемым отпечатком или схоже с ним на несколько процентов. Структура элемента списка приведена в табл. 2.4.
Таблица 2.4
Структура записи об обнаруженных отпечатках
Поле | Формат | Описание |
Name | Строковое | Имя отпечатка (наименование файла, из которого были взяты параметры) |
Count | Целое | Количество минюций совпавших при сравнении отпечатков. |
Pct | Дробное | Степень сходства отпечатков в процентах, принимает значения (0, 100]. |
Таким образом, точка считается совпавшей, если ее местоположение относительно другой точек входит в определенную область вокруг первоначального положения. На рис. 2.6 представлена область, в которой положение точки относительно другой считается совпавшим.
Область допуска
Рис. 2.6
Для вычисления степени сходства двух отпечатков происходит сравнение каждой минюции на обоих отпечатках:
M – список минюций на обрабатываемом образе
k – количество минюций на обрабатываемом образе
M = {m1, m2, …, mk}
N – список минюций одного отпечатка из базы отпечатков
l – количество минюций на отпечатке из базы отпечатков
N = {n1, n2, …, nl}
Cписок совпавших минюций получается при помощи отсеивания из первоначального списка тех минюций, которые небыли обнаружены во втором списке:
S = {mi, где i=(1..k), P(mi, N)}
r = | S | – количество совпавших точек.
P(mi , N) – Точка считается совпавшей, если относительно нее найдено необходимое количество удовлетворяющих условию точек.
Отпечатки считаются схожими, если количество совпавших точек превышает порог сходства (p):
r ≥ p – условия совпадения
r < p – условие не совпадения
1. CONFIRM_VAL = 9; DELTA_L = 10.0; DELTA_A = 10.0; confirmDot = 0; short needVal = |min(this->size(),fng.size())/3.0 +0.5|;
2. для каждой точки на входном tekFing отпечатке выполнить пункты 3-14
3. для каждой точки на отпечатке из базы baseFing выполнить пункты 4-14
4. confirmVal = 0;
5. для каждой относительной точки tekIter для точки tekFing выполнить пункты 6-13
6. поиск первой подходящей по расстоянию точки в списке baseFing для tekIter
7. Если точка не найдена, перейти к п. 5.
8. для каждой относительной точки baseIter для точки baseFing выполнить п. 9
9. Если точка baseIter не удовлетворяет условиям с погрешностью, то переход к п. 8
10. confirmVal = confirmVal + 1;
11. Если confirmVal <= needVal, то переход к п. 5
12. Удалить точку baseFing из последующего перебора, т.к. она уже совпала
13. confirmDot = confirmDot + 1; переходкп. 3
14. Конец
Контрольный пример должен содержать не менее одного отпечатка пальца, похожего на обрабатываемый, одного отпечатка, не похожего на обрабатываемый, и одного отпечатка, являющегося похожим на обрабатываемый, но смещенный и повернутый на некоторый угол.
confirmVal - количество совпавших сопряженных СТ с текущей СТ
confirmDot - количество совпавших СТ (спец точек)
min – функция с 2 входными параметрами, результатом которой является минимальное из входных значений.
CONFIRM_VAL = 9
DELTA_L = 10.0
DELTA_A = 10.0
|| - округление до ближайшего целого
tekFing – список точек в относительных параметрах на входном отпечатке.
baseFing – список точек в относительных параметрах на отпечатке из базы
tekIter– список точек относительно исследуемой (ее относительные параметры) для точки на входном отпечатке
baseIter список точек относительно исследуемой (ее относительные параметры) для точки отпечатке из базы
Подпрограмма OnBnClickedCompare предназначена для обработки события на диалоговом окне – нажатие кнопки «Сравнить». Подпрограмма производит проверку, был ли проведен анализ отпечатка пальца. Результат поиска сохраняется в файл.
Текст подпрограммы приведен в приложении 1.3
Подпрограмма OnBnClickedCompare предназначена для
1) проверки входного отпечатка на анализ;
2) сохранение результата в файл отчета.
Структура TCompareFing предназначена для хранения информации о сравниваемых отпечатках пальцев. Структура TCompareFing объявлена следующим образом:
struct TCompareFing
{
doubleval;
shortcDot;
short nfng;
CString name;
list<TPairAbsDot> dots;
list<TPairSur> surdots;
};
val - уровень схожести отпечатков
cDot - количество совпавших точек
nfng - номер отпечатка
name - файл отпечатка
dots; - совпавшие точки на отпечатках
surdots - окружения на одинаковых отпечатках
Структура TAbsFing – список точек в абсолютных параметрах, полученый в разультате работы подсистемы анализа. Структура TAbsFing объявлена следующим образом:
class TAbsDot
{
public:
CPointcoord;
double alpha;
bool type;
bool show;
};
coord - координаты
alpha - направление в точке
type - тип точки (1- окончание, 0- раздвоение)
show - видимость точки (1- видима, 0- скрыта)
Входные данные для данной подпрограммы представлены:
TAbsFing fing – список точек в абсолютных параметрах, полученый в разультате работы подсистемы анализа. Каждый элемент списка содержит все наобходимые параметры для обработки и преобразования в подсистеме распознавания:
Выходные данные для данной подпрограммы представлены:
Результат работы подпрограммы сохраняется в файл отчет
В подпрограмме используются следующие подпрограммы:
1. PrintReport – вывод результата поиска в файл отчет;
2. CompareWithBase – функция сравнения текущего отпечатка с отпечатками из базы данных;
3. Convert – преобразование абсолютных параметров к относительным.
Схема подпрограммы «OnBnClickedCompare» приведена на рис. 2.7.