TFingPicture *pic – в результате обработки входной образ подвергается изменениям.
Используемые переменные:
Dot0, dot1 – точки принадлежащие контуру обрабатываемой линии. Начальное значение dot0 = _dot.
vec0, vec1 – локальные направления;
step – шаг получения последующей точки;
alphaTest – предопределенная константа, определяющая сильное искривление контура папиллярной линии.
Используемые подпрограммы:
GetVec(dot0, dot1)– направление из точки dot0 в dot1;
NextDotCW(dot0, step) – получение координат точки следующей через step точек.
Слипание и обрыв описаны в п.п. 2.2.4.
Схема подпрограммы «ChangeLine»
Рис. 2.10
Подпрограмма ReadPic пердназначена для поиска локальных особенностей на растре. Схема подпрограммы изображена на рис. 2.11.
Синтаксис:
TAbsFing TAnalysePicture::ReadPic(list<TMapElDot>::iterator _dot)
Входные данные для данной подпрограммы представлены:
TFingPicture *pic – указатель на битовый образ в памяти, который был загружен для обработки;
list<TMapElDot>::iterator _dot – указатель на текущую обрабатываемую линию.
Выходные данные для данной подпрограммы представлены:
TAbsFing absfing – список параметров локальных особенностей, формат описан в п.п. 2.1.3.
Используемые переменные:
Dot0, dot1 – точки принадлежащие контуру обрабатываемой линии. Начальное значение dot0 = _dot;
vec0, vec1 – локальные направления;
step – шаг получения последующей точки;
alphaTest – предопределенная константа, определяющая сильное искривление контура папиллярной линии.
Используемые подпрограммы:
GetVec(dot0, dot1)– направление из точки dot0 в dot1;
NextDotCW(dot0, step) – получение координат точки следующей через step точек.
Раздвоение и окончание описаны в п.п. 2.3.4.
Подпрограмма DotsFilter предназначена для сортировки списка найденных локальных особенностей и выделение списка минюций. Схема подпрограммы изображена на рис. 2.12.
Синтаксис:
int TAnalysePicture::DotsFilter(TAbsFing &_dots)
Входные данные для данной подпрограммы представлены:
TAbsFing &_dots – список точек найденный на растре, он содержит помимо нужных точек – минюций, лишние, непостоянные точки, которые не подходят для объектного описания папиллярного узора.
Выходные данные для данной подпрограммы представлены:
TAbsFing _dots – список параметров минюций, формат описан в
п.п. 2.1.3.
Используемые подпрограммы:
Порез(dot) – относится ли данная точка к точкам образованным порезами и инородными телами (см. п.п. 2.4.4);
Filter(dot1, dot2) – условие фильтрования (см. п.п. 2.4.4).
Схема подпрограммы «ReadPic»
Рис. 2.11
Схема подпрограммы «DotsFilter»
Рис. 2.12Подпрограмма AnalysePicture предназначена для обработки загруженного изображения и получение из него объектного образа для последующего хранения и сравнения. Схема подпрограммы изображена на рис. 2.13.
Синтаксис:
TAbsFing TAnalysePicture::AnalysePicture()
Входные данные для данной подпрограммы представлены:
TFingPicture *pic – указатель на битовый образ в памяти, который был загружен для обработки.
Выходные данные для данной подпрограммы представлены:
TAbsFing Ret – список координат минюций в абсолютных параметрах, формат описан в п.п. 2.1.3.
Используемые переменные:
Map – список обрабатываемых линий на папиллярном узоре, каждой линии соответствует точка {x,y};
ChangeN – хранит количество сделанных изменений на растре.
Используемые подпрограммы:
LookPic – возвращает список линий на отпечатке;
ChangeLine(i, Map) – корректировка линии на растре, избавление от слипаний и обрывов;
ReadPic – возвращает список параметров специфических точек, см. формат в п.п. 2.1.3;
DotsFilter(Ret) – сортировка специфических точек, см. условия в п.п. 2.4.
Основной целью работы программы является опознавание личности по отпечаткам пальцев на основе сравнения структурного представления папиллярных узоров. Контрольный пример должен содержать большое количество тестовых отпечатков пальцев, при этом отпечаток одного и того же пальца должен быть представлен как минимум в двух экземплярах для сравнения их между собой.
Схема подпрограммы «AnalysePicture».
Рис. 2.13
Для теста использовалось около 50 отпечатков разных людей и разного возраста. На рис. 2.14, 2.15, 2.16 приведены несколько изображений папиллярного узора, которые предполагается сравнить между собой и другими отпечатками в базе данных отпечатков. Данные изображения получены посредством зачернения пальца и приложения его к листу белой бумаги, после чего отпечатки были отсканированы и сохранены в виде bmp файлов на компьютере. Полученные таким образом отпечатки имеют не высокое качество, поэтому можно полностью проверить все этапы работы программы.
На рис. 2.14, 2.15 представлены отпечатки одного и того же пальца, а значит, в результате работы программы они должны совпасть. Рис. 2.16 это отпечаток другого пальца, нежели предыдущие два отпечатка.
Исходный образ A1
Рис. 2.14
Исходный образ A2
Рис. 2.15
Исходный образ B
Рис. 2.16
Результат работы подсистемы приведен на рис. 2.17, 2.18, 2.19 – это визуализированные структурные представления входных отпечатков.
Структурное представление A1
Рис. 2.17
Структурное представление A2
Рис. 2.18
Структурное представление B
Рис. 2.19
Для испытания программного обеспечения системы на вход были поданы тестовые образы, описанные в п.2.6.2. Испытания проводились согласно руководству программиста, приведенному в приложении 2, и руководству оператора, приведенному в приложении 3. В результате были получены структурные описания представленные на рис. 2.17, 2.18, 2.19.
Полученные структурные представления точно описывают входные образы, что не трудно проверить визуальным сравнением с входными образами. Статистически было выявлено, что на отпечатках имеется около 40..50 минюций, эта величина может варьироваться в больших пределах в зависимости от размеров пальца. На тестовых образах найдено 19, 40, 37 соответственно. Меньшее количество объясняется тем, что тестовые образы это лишь фрагменты полного отпечатка, а образ B это указательный палец, который меньше по размерам, чем большой.
В приложении 4 можно увидеть, что отпечатки A1 (1.bmp), A2 (R1_3rotate2.bmp) схожи между собой и схожи с отпечатком 1R1_1.bmp, что является верным, так как все они являются образами большого пальца правой руки одного и того же человека. Отпечаток B (3l2_2.bmp) не совпадает ни с одним из A1 и A2, но совпадает с 3l2_1.bmp, что является также верным результатом, это отпечатки указательного пальца правой руки другого человека.
Тестирование показало, что разработанное программное обеспечение способно сравнивать и отыскивать схожие отпечатки, а значит и есть возможность определить человека, которому принадлежит обрабатываемый отпечаток. Полученные результаты совпадают с ожидаемыми результатами и совпадают с ручным сравнением. Для проверки этого в приложении 4 приведено полное сравнение всех имеющихся отпечатков.
А также программа, после небольшой корректировки параметров анализа и сравнения, была настроена для распознавания символов алфавита. Для проверки был введен в базу данных набор символов изображенных на рис. 2.20, который в последующем сравнивался с алфавитом на рис. 2.21.
Алфавит для базы данных
Рис. 2.20