Разработка алгоритма генерации для создания базы данных искусственных биометрических образов

Исследование существующих алгоритмов и программного обеспечения для генерации искусственных биометрических образов. Разработка алгоритма генерации искусственных отпечатков пальцев на основе преобразования Габора и его экономико-правовое обоснование.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 22.07.2014
Размер файла 3,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

АННОТАЦИЯ

Ключевые слова: биометрия, генерация биометрических образов, отпечаток пальца, поле направлений, преобразование Габора

Цель работы - разработка алгоритма генерации для создания базы данных искусственных биометрических образов.

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

СОДЕРЖАНИЕ

  • Принятые сокращения
  • Введение
  • 1. Исследовательская часть
    • 1.1 Введение
    • 1.2 Термины и определения
    • 1.3 Биометрические методы идентификации
    • 1.4 Анатомия пальца человека
    • 1.5 Общие сведения о преобразовании Габора
    • 1.6 Обзор существующих методов генерации отпечатков пальцев
    • 1.7 Обзор существующего программного обеспечения
    • 1.8 Выводы
  • 2. Конструкторская часть
    • 2.1 Введение
    • 2.2 Формализация алгоритма генерации искусственных биометрических образов
    • 2.3 Математическая постановка задачи
    • 2.4 Обоснование выбранного решения
    • 2.5 Выводы
  • 3. Технологическая часть
    • 3.1 Введение
    • 3.2 Разработка общей структуры ПО
    • 3.3 Выбор языка программирования
    • 3.4 Выбор типа ОП и формирование глобальных признаков
    • 3.5 Построение поля направлений
    • 3.6 Построение шаблона
    • 3.7 Применение фильтра Габора
    • 3.8 Обрезание изображения
    • 3.9 Выводы
  • 4. Организационно-экономическая часть
    • 4.1 Введение
    • 4.2 Расчёт трудоёмкости проекта
    • 4.3 Исследование рынка
    • 4.4 Выводы
  • 5. Организационно-правовая часть
    • 5.1 Введение
    • 5.2 Конституция Российской Федерации
    • 5.3 Доктрина информационной безопасности Российской Федерации
    • 5.4 Федеральный Закон «Об информации, информационных технологиях и о защите информации»
    • 5.5 Федеральный Закон «О персональных данных»
    • 5.6 Постановление Правительства Российской Федерации «Об утверждении требований к защите персональных данных при их обработке в информационных системах персональных данных»
    • 5.7 Гражданский Кодекс Российской Федерации
    • 5.8 Уголовный Кодекс Российской Федерации
    • 5.9 Выводы
  • Заключение
  • Список использованных источников

ПРИНЯТЫЕ СОКРАЩЕНИЯ

АРМ Автоматизированное рабочее место

АС Автоматизированная система

БД База данных

ИБ Информационная безопасность

ИС Информационная система

ОС Операционная система

ОП Отпечаток пальца

РФ Российская Федерация

ГК РФ Гражданский кодекс Российской Федерации

УК РФ Уголовный кодекс Российской Федерации

ЭВМ Электронная вычислительная машина

ISO International Organization for Standardization (Международная организация по стандартизации)

IEC International Electrotechnical Commission (Международная электротехническая комиссия)

алгоритм программный генерация биометрический искусственный отпечаток

ВВЕДЕНИЕ

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

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

Задачами дипломного проектирования являются:

· исследование существующих методов, алгоритмов и программного обеспечения для генерации искусственных биометрических образов;

· разработка алгоритма генерации искусственных биометрических образов с использованием преобразования Габора;

· программная реализация алгоритма генерации;

· рассмотрение организационно-правовых вопросов, связанных с разработанным алгоритмом;

· рассмотрение экономической целесообразности продвижения данного проекта.

Дипломный проект состоит из пяти частей.

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

Во второй части проекта приводится подробная формализация алгоритма генерации искусственных биометрических образов. Также описывается математическая постановка задачи.

Третья часть посвящена реализации программного обеспечения, иллюстрирующего работу алгоритма. Подробно описаны этапы работы алгоритма, приведены полученные результаты.

В четвертой части рассматриваются правовые аспекты, касающиеся дипломного проекта.

В пятой части рассмотрены организационно - экономические показатели проектной разработки, оценена экономическая выгода реализации проекта.

1. Исследовательская часть

1.1 Введение

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

1.2 Термины и определения

В настоящем дипломном проекте применены следующие термины с соответствующими определениями:

? биометрия - автоматизированное распознавание личности, основанное на определении поведенческих и биологических (анатомических и физиологических) характеристик;

? биометрический - имеющий отношение к биометрии;

? биометрические данные - данные, кодирующие особенность или особенности, используемые в биометрической верификации;

? база данных - любое хранилище биометрических шаблонов;

? ядро - самая верхняя точка на внутреннем загнутом гребне отпечатка пальца, расположенная, в общем случае, в пределах самого внутреннего загиба петли;

? дельта - точка на гребне, расположенная ближе остальных к точке расхождения двух граничных папиллярных гребней;

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

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

? бифуркация гребня - ключевая точка, соответствующая области, в которой отпечаток гребня расщепляется на два гребня или в которой два отдельных отпечатка гребня соединяются в один;

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

? окончание основы гребня - ключевая точка, соответствующая области, в которой заканчивается основа гребня;

? основа - изображение гребней или впадин шириной в один элемент изображения, полученное последовательными симметричными операциями утончения (допускается применять термин «срединная линия»);

? граничные гребни - два крайних гребня, начинающихся параллельно, расходящихся и окружающих или стремящихся окружить пальцевой узор;

? впадина - область, окружающая папиллярный гребень и не контактирующая с плоской поверхностью при соприкосновении, -- участок между двумя папиллярными гребнями;

? бифуркация впадины - точка, в которой впадина расщепляется на две впадины или две отдельные впадины соединяются в одну;

? верификация/верифицировать - процесс сравнения полученного биометрического образца с определенным по условию контрольным биометрическим шаблоном с целью определения схожести.

1.3 Биометрические методы идентификации

Биометрическая идентификация - автоматизированный метод, с помощью которого путем исследования уникальных физиологических особенностей или поведенческих характеристик человека осуществляется идентификация личности. Физиологические особенности, например, такие как папиллярный узор пальца, геометрия ладони или рисунок радужной оболочки глаза, являются постоянными физическими характеристиками человека. Данный тип проверки практически неизменен также как и сами физиологические характеристики. В отличие от пароля или персонального идентификационного номера, биометрическая характеристика не может быть забыта, потеряна, или украдена.

Биометрические методы идентификации по принципу действия делятся на статические и динамические методы. Статические методы основаны на физиологических характеристиках человека, присутствующих от рождения и до смерти, находящиеся при нём в течение всей его жизни, и которые не могут быть потеряны, украдены и скопированы. Динамические методы основаны на поведенческой (динамической) характеристике человека, т. е. построены на особенностях, характерных для подсознательных движений в процессе воспроизведения какого-либо действия.

Биометрические системы идентификации, доступные в настоящее время или находящиеся в стадии разработки включают в себя системы доступа по отпечатку пальца, ДНК, форме уха, геометрии лица, температуре кожи лица, клавиатурному почерку, отпечатку ладони, сетчатке глаза, рисунку радужной оболочки глаза, подписи и голосу.

Рисунок 1. Биометрические методы идентификации.

Процесс идентификации личности по отпечатку пальца, как информационная биометрическая технология, широко используется и не только в органах внутренних дел. Актуальность использования идентификации личности на основании отпечатков пальцев обусловлена широкой областью применения. Это системы идентификации личности, системы контроля доступа, электронной коммерции, банковские системы и т.п. Уже имеются примеры конкретных реализаций систем ограничения доступа к мобильным персональным телекоммуникационным и вычислительным устройствам, системы пропускного контроля на пограничных постах и аэропортах. Реализован проект по интеграции биометрических идентификаторов в документы подтверждающие личность.

1.4 Анатомия пальца человека

Отпечатки пальцев являются одним из надежных биометрических признаков, успешно применяемыми для идентификации личности. Отпечаток пальца условно состоит из некоего рода рельефных линий - так называемых папиллярных линий, строение которых обусловлено гребешковыми выступами кожи (горные хребты), которые разделены бороздками. В каждом отпечатке пальца можно определить два типа признаков - глобальные и локальные. Глобальные признаки - характеристики отпечатка пальца, которые можно увидеть невооруженным глазом. Глобальные признаки включают в себя область образа, ядро, пункт «дельта», счетчик линий, папиллярный узор. Локальные признаки, называющие минуциями, являются маленькими уникальными точками для каждого отпечатка пальца, которые успешно используются для идентификации личности. У отпечатка пальца могут быть одинаковые глобальные признаки, но локальные признаки всегда являются уникальными.

Рисунок 2. Глобальные и локальные признаки отпечатка пальца.

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

Пункт «дельта» является начальной точкой, где происходит разделение или соединение бороздок папиллярных линий, может иметь вид очень короткой бороздки, в предельном случае - точки.

Счетчик линий - число папиллярных линий на области образа, либо между ядром и пунктом «дельта».

Примеры типов папиллярных узоров представлены на рисунке 3.

Рисунок 3. Типы папиллярных узоров: а) простая арка; б) треугольная арка; в) левая петля; г) правая петля; д) двойная петля; е) завиток.

Согласно [2] существуют следующие типы локальных признаков (минуций):

· Точка окончания гребня

Ключевая точка окончания гребня, определенная через точку бифуркации основы впадин, представляет собой точку, расположенную непосредственно перед окончанием гребня в области разветвления линий основы впадин. Если ширина линий в основе впадин составляет один элемент изображения, то контрольную точку окончания гребня определяют как точку пересечения трех утонченных линий впадин, то есть точку, рядом с которой линии впадин имеют вид «Y».

Рисунок 4. Расположение и ориентация ключевой точки окончания гребня.

· Точка бифуркации гребня

Ключевая точка бифуркации гребня, определенная через точку бифуркации основы гребней, представляет собой точку разветвления линий основы гребня. Если ширина линий в основе гребня составляет один элемент изображения, то контрольную точку бифуркации гребня определяют как точку пересечения трех утонченных линий гребня, то есть точку, рядом с которой линии гребней имеют вид «Y».

Рисунок 5. Расположение и ориентация ключевой точки бифуркации гребня.

· Точка окончания основы гребней

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

Рисунок 6. Расположение и ориентация ключевой точки окончания основы гребней

· Другие ключевые точки

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

1.5 Общие сведения о преобразовании Габора

Пусть имеется функция , тогда преобразование Фурье для этой функции выглядит следующим образом:

Преобразование Фурье дает частотную информацию, содержащуюся в сигнале, то есть показывает, каково содержание каждой частоты в сигнале. Интеграл берется от до по всей временной оси. Время возникновения конкретной частоты учитывается, так как для преобразования Фурье её вклад будет равнозначным вне зависимости от её протяжения.

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

Для исправления этих недостатков может быть использовано преобразование Габора. Пусть

,

где - фиксированный параметр.

Функция используется в качестве так называемого временного окна.

Преобразованием Габора функции f является следующее выражение:

где b - параметр, используемый для сдвига окна.

Преобразование Габора локализирует преобразование Фурье вокруг точки t = b.

Алгоритм построения одномерного фильтра Габора

Для построения одномерного фильтра Габора применяется формула:

,

где - стандартное отклонение Гаусового ядра, определяющее амплитуду функции; - частота колебаний.

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

Частота колебаний определяется как

,

где Т - период функции косинуса.

Рисунок 7. Функция Габора, представляющая собой композицию функции косинуса и экспоненты.

Пространственный фильтра Габора для двухмерных изображений

Формула функции Габора выглядит следующим образом:

,

где - комплексная синусоида, а - огибающая Гаусса для двумерного пространства. Остановимся более подробно на этих составных частях фильтра Габора.

Комплексная синусоида

Комплексная синусоида определяется как

,

где и Р определяются как пространственная частота и фаза синусоиды.

Можно представить синусоиду как две действительные функции, расположенные в действительной и мнимой части комплексной функции.

Рисунок 8. Действительная и мнимая часть комплексной синусоиды с параметрами: , .

Действительная и мнимая части синусоиды имеют вид:

Параметры определяют частоту синусоиды в декартовых координатах.

Огибающая Гаусса

Огибающая Гаусса имеет вид:

,

где - координаты пика функции, а и b скалярные параметры Гауссиана, - индекс, обозначающий операцию вращения, такой, что:

.

Иллюстрация огибающей Гаусса представлена на рисунке 9.

Рисунок 9. Огибающая Гаусса при значениях параметров:

Комплексная функция Габора

Комплексная функция Габора определяется следующими 9 параметрами:

· K - весовая величина огибающей Гаусса

· (a,b) - весовые величины огибающей, распределенные по осям

· - угол вращения огибающей Гаусса

· - координаты пика огибающей Гаусса

· - пространственные частоты комплексной синусоиды

· Р - фаза комплексной синусоиды

Каждая комплексная функция Габора состоит из двух частей, расположенных в действительной и мнимой части функции (Рисунок 10).

Рисунок 10. Действительная и мнимая часть комплексной функции Габора.

Таким образом, функция Габора имеет вид:

Алгоритм построения двумерного фильтра Габора

Для построения двумерного фильтра Габора применяется формула

где , ; и - стандартные отклонения Гауссова ядра по осям соответственно, определяющая растянутость фильтра по осям; - частотная модуляция фильтра; - пространственное направление фильтра, определяющее ориентацию фильтра относительно осей x и y.

Рисунок 11. Графическое представление фильтра Габора (визуализация двухмерного фильтра Габора в трехмерном пространстве и пример применения фильтра с ориентацией ).

Применение фильтра Габора для двухмерных изображений

Фильтр настраивается на локальную ориентацию выступов, применяется к пикселям выступов и впадин изображения.

где ; ; - ориентация фильтра Габора, - частота, а и - пространственные константы огибающей Гаусса вдоль осей x и y соответственно.

Для использования Фильтра Габора нам необходимо знать значения следующих величин:

1) направление фильтра

2) частоту синусоидальной плоскостной волны

3) и - среднеквадратичные отклонения огибающей Габора

1.6 Обзор существующих методов генерации отпечатков пальцев Кривые Безье

Кривые Безье (P. Bezier) порядка , заданные точками описываются уравнением:

,

где , очевидно, , .

Порядок кривой Безье на единицу меньше, чем число точек, используемых для ее формирования.

Рисунок 12. Кубическая кривая Безье

Для компьютерной графики характерны кривые, определяемые четырьмя точками по описанному выше принципу. Такие кривые называются кубическими кривыми Безье. Кривые Безье обладают рядом свойств, благодаря которым они широко используются. Одно из этих свойств - это свойство инвариантности кривых Безье к аффинным преобразованиям, связанным с переносом изображения в другую систему координат, что соответствует искажениям отпечатка при его реальном снятии с различных криволинейных поверхностей. Второе важное свойство - это ограниченность. Кривая Безье всегда полностью лежит внутри выпуклой фигуры, вершинами которой являются ее определяющие точки.

Рисунок 13. Использование кривых Безье для построения отпечатка пальца.

Двухмерный сигнал с амплитудной и частотной модуляцией

Larkin и Fletcher для построения отпечатка пальца предложили использовать двухмерный сигнал с амплитудной и частотной модуляцией:

,

где - интенсивность смещения, - амплитуда, - фаза, - шум.

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

.

По теореме разложения Гельмгольца фаза однозначно разлагается на две части: непрерывная фаза и спиральная фаза:

.

Градиент непрерывной фазы определяют как мгновенную частоту . Направление мгновенной частоты перпендикулярно к ориентации гребня. Амплитуда мгновенной частоты равна частоте гребня. Спиральная фаза соответствует минуциям:

,

где и - координаты n-й минуции, N - общее количество минуций.

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

Добавление спиральной фазы в непрерывную фазу генерирует минуции. Рисунок 14 показывает сгенерированный отпечаток пальца, который содержит только непрерывную фазу (а), и отпечаток с добавлением спиральной фазы (b).

Рисунок 14. Искусственный отпечаток пальца без минуций (а) и синтетический отпечаток пальца с семью минуциями (b).

Построение поля направлений

Двухступенчатым подходом к разработке алгоритма создания искусственного отпечатка является первоначальное использование метода Шерлока и Монро для формирования поля направленности папиллярных линий, а затем уже самого рисунка. Модель, предложенная Шерлоком и Монро, позволяет искусственно создавать поле направлений на базе информации о положении центров и дельт. Создание папиллярных линий на базе поля направлений и поля плотности состоит в следующем: исходная картинка, содержащая несколько изолированных сингулярностей (окончания, разветвления, точки и т.д.), постепенно увеличивается за счет использования фильтра Габора, настроенного на определенный уровень плотности. При этом минуции различных типов автоматически генерируются случайным образом.

Рисунок 15. Пример поля направлений.

Модель ориентации, предложенная Шерлоком и Монро (1993), позволяет получить непротиворечивое изображение ориентации папиллярных линий с учетом особенностей (ядра и дельты) отпечатка пальца. В этой модели каждый элемент поля направлений является комплексным числом. Местная ориентация папиллярной линии определяется как фаза модуля рациональной функции, особенности которой (полюса и нули) расположены там же, где и особенности искусственного отпечатка пальца (петли и дельты ). Ориентация для каждой точки определяется по формуле:

,

где - комплексное число, состоящее из - координат точки, в которой вычисляется направление папиллярных линий; - количество дельт в отпечатке пальца; - количество островов в отпечатке пальца; - комплексное число, состоящее из - координат -ой дельты отпечатка пальца; - комплексное число, состоящее из - координат -го острова отпечатка пальца; - функция, возвращающая фазу комплексной переменной .

Рисунок 16. Модель Шерлока и Монро.

Модель Шерлока и Монро используется следующим образом. Сначала выбирается класс отпечатка пальца, затем случайным образом задаются позиции сингулярностей (ядер и дельт) в соответствии с ограничениями характерными выбранному классу. После этого строится поле направлений.

Рисунок 17. Примеры построения полей направлений, соответствующих разным типам папиллярных узоров.

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

Рисунок 18. Построение папиллярного узора по полю направлений.

Фильтр Габора представляет собой произведение нормальной функции распределения и косинусоидальной плоской волны.

Фильтр настраивается на локальную ориентацию выступов, применяется к пикселям выступов и впадин изображения.

,

где , ; пространственное направление фильтра, определяющее ориентацию фильтра относительно осей x и y; и - пространственные константы огибающей Гаусса вдоль осей и соответственно (корректируется в зависимости от частоты так, что фильтр не содержит более трёх эффективных пиков); - частота синусоидальной плоскостной волны.

Данный фильтр задан тремя параметрами - периодом папиллярных линий, углом их наклона и шириной. Варьируя эти параметры можно изменять текстуру рисунка в широких пределах.

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

Рисунок 19. Формирование искусственных отпечатков.

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

1.7 Обзор существующего программного обеспечения

Сведений, посвященных разработке программных комплексов, позволяющих генерировать искусственные отпечатки пальцев немного. Одна из работ в этой области - это работа Sherstin и Picard (1994), в которой предложен сложный метод, связанный с использованием динамической нелинейной системы названной "М решеткой". Система позволяет получать полутоновое изображение отпечатка пальца. Метод основан на модели распространения реакции-диффузии, ранее в 1952 предложенный Тьюрингом, чтобы объяснить формирование различных текстур рисунка волосяного покрова животных, таких как полосы зебры. Хотя работа Тьюринга не имеет отношения к синтезу искусственных отпечатков пальцев, предложенная модель формирования рисунка могла быть использована как основа для создания искусственных отпечатков пальцев.

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

Американские ученые Новиков С.О. и Глушенко Г.Т. предложили методику построения папиллярных линий, работающую в частотной области. Для каждого пикселя начального случайного изображения, вычисляется двумерный спектр Фурье локального окна, центрированного в . Из спектра исключаются высоко энергетические гармоники. Все оставшиеся гармоники суммируются. Процедура многократно повторяется, пока не получается достаточно гладкий результат. У этого метода есть некоторая аналогии с итерационной процедурой на основе пространственного фильтра Габора.

В 2001 году сотрудниками Австралийского национального университета был предложен конструктивный подход, где отпечаток сгенерирован, начинаясь с данного набора сингулярностей отпечатка пальца. Работа была нацелена на доказательство возможности “мошеннической” подмены реальных отпечатков, отпечатками, сгенерированными ЭВМ. К сожалению, алгоритм, предложенный автором, создает изображения, которые визуально не реалистичны.

Примером программы, позволяющей создавать искусственные отпечатки пальцев, может служить программа SFinGE -фирменная разработка лаборатории Biometric Systems Lab, разработанная в 2002-2006 годах. Программное обеспечение SFinGE позволяет создавать базы данных для проведения тестов алгоритмов распознавания отпечатков. Программа SFinGE вер. 2.0. сертифицирована BTC (Biometric Testing Center).

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

Рисунок 20. Сравнение реального ОП с ОП, созданным программой SFinGE.

Основные параметры программы

Number of fingers: количество искусственных ОП, которые будут сгенерированы программным обеспечением SFinGe. Возможные значения: от 0 до 100 тысяч.

Impressions per finger: количество изображений отпечатков одного пальца, которые будут сгенерированы SFinGe. Возможные значения: от 0 до 10. Таким образом, общим количеством сгенерированных ОП будет Number of fingers х Impressions per finger.

Generator seed: данный параметр позволяет определить внутренний идентификатор при случайной выборке набора внутренних идентификаторов ОП. Этот параметр позволяет повторить ту же самую базы данных любому другому пользователю SFinGE.

Class distribution: данный параметр определяет, будет ли ОП сгенерирован в соответствии с равномерным распределением 5 типов кожных узоров (дуга, шатровая дуга, левая петля, правая петля, завиток) или с естественным распределением (дуга = 3,7%, заостренная дуга = 2,9%, левая петля = 33,8%, правая петля = 31,7%, завиток = 27,9%).

Rotation: угол поворота сгенерированного ОП.

Deformation: величина искажения ОП.

Noise: уровень зашумления ОП.

Scratches Степень наличия искусственно созданных царапин.

Difficulty: данный параметр характеризует степень вариабельности между изображениями, созданными для одного сгенерированного ОП.

Журнал работы

SFinGE создает журнал работы, содержащий информацию о созданной базе данных искусственных ОП: дата создания, формат, размер базы данных и т.д. Кроме того, в журнале содержится информация о параметрах ОП, выбранных пользователем при работе с основным окном SFinGE.

Время генерации

Процедуру генерации ОП можно условно представить в виде двух основных шагов:

· Создание основного ОП (мастера);

· Создание изображений одного и того же ОП с использованием основного ОП.

Выполнение вышеуказанных операций занимает в среднем: 11,5 сек для создания основного изображения ОП (мастера); 4,9 для генерации изображений одного и того же ОП с использованием мастера.

Процесс генерации

Процесс генерации искусственного ОП представлен 4 основными стадиями:

· Создание сингулярных особенностей (центров и дельт) и поля направлений;

· Создание поля плотности;

· Создание модели папиллярных линий;

· Зашумление.

Генерация поля направлений

В данной программе для создания поля направлений используется модель, предложенная Шерлоком и Монро.

Генерация поля плотности

Визуальное обследование ОП доказывает, что сгенерировать поле плотности случайным образом невозможно. Было замечено, что в районе над самым северным центром, а также под самой южной дельтой плотность расположения папиллярных линий гораздо меньше, чем в остальных областях. Соответственно, предлагается следующий способ создания поля плотности:

· Случайным образом производится выборка фоновой плотности;

· Слегка увеличивается плотность в вышеуказанных районах в соответствии с расположением сингулярных особенностей.

Рисунок 21. Пример поля плотности.

Создание папиллярных линий

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

Рисунок 22. Процесс наращивания папиллярных линий.

Зашумление

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

· Неправильная форма папиллярных линий, а также разная сила нажатия пальца к сканеру;

· Наличие пор;

· Наличие маленьких и слабо выраженных линий;

· Разрывы за счет неравномерного нажатия пальца к сканеру, а также в случае слишком влажных или слишком сухих пальцев.

Процедура искусственного зашумления проходит в несколько шагов:

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

· Добавление шума в виде небольших белых пятен различной формы и размера.

· Помещение изображения в окне 3х3.

· Наложение слоя белых точек на полученное изображение.

Результат генерации

Результатом процесса генерации искусственных ОП программы SFinGE является изображение ОП в формате .tiff.

Рисунок 23. Искусственные отпечатки пальцев.

Однако несмотря признанное лидерство программы SFinGe., существуют несколько характерных моментов, на которые следует обратить внимание:

? алгоритм формирования формы отпечатка, предполагает наличие прямолинейных участков и дуг окружности, что существенно ограничивает множество возможных форм отпечатков.

? множество видов отпечатков ограничено тремя видами: петлевые, дуговые, завитковые, без выделения подвидов. В тоже время в отечественной дактилоскопии это множество можно расширить до 96.

? алгоритм формирования папиллярных линий основывается на использовании фильтра Габора. Однако фильтр Габора обладает большим затуханием и уже через один - два периода (одну-две папиллярных линии) полностью затухает, что приводит к необходимости применения специальных процедур, чтобы расширить его на весь отпечаток. Генератор отпечатков SFinGe. создавался в момент (2000-2002г.), когда не были созданы и освоены программно-ориентированные средства и в частности Matlab Т2007а, позволяющие эффективно работать с изображениями, что позволяет в десятки и сотни раз повысить быстродействие программы, а, следовательно, ее эффективность.

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

? отсутствует информация о программном коде генератора, что затрудняет использовать его в комплексах тестирования алгоритмов распознавания отпечатков.

1.8 Выводы

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

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

Решением данной проблемы является создание программного комплекса, позволяющего в кратчайшие промежутки времени генерировать электронные изображение отпечатков пальцев по своим характеристикам практически не отличающиеся от реальных отпечатков. А поскольку разработчики SFinGe не опубликовали исходные коды своей программы и отказались от ее продажи, потребность в генераторах искусственных отпечатков пальцев остается высокой, особенно при отсутствии отечественных работ по созданию таких программных комплексов.

2. Конструкторская часть

2.1 Введение

В конструкторской части приводится подробная формализация алгоритма генерации искусственных биометрических образов. Также описывается математическая постановка задачи.

2.2 Формализация алгоритма генерации искусственных биометрических образов

В данном дипломном проекте реализуется алгоритм генерации искусственных отпечатков пальцев на основе модели Шерлока и Монро с применением фильтра Габора.

Пусть и ? горизонтальный и вертикальный размер изображения соответственно, пусть ? разрешение изображения (в пикселях на см) и пусть ? набор минуций -го шаблона отпечатка пальца, где каждая минуция определяется, как , где где - тип точки, - координаты точки (в пикселях), - ориентация (, в радианах). Параметрпринимает значения: 01 - для точки окончания гребня, 10 - для точки бифуркации гребня, 00 - для других точек.

Обозначим ряд последовательных шагов, из которых состоит данный алгоритм:

· Выбирается класс и формируются глобальные признаки отпечатка пальца (задаются позиции ядер и дельт);

· На основе данных об ориентации ключевых точек выстраивается поле направлений по модели Шерлока-Монро

Ориентация для каждой точки определяется по формуле:

,

где - комплексное число, состоящее из - координат точки, в которой вычисляется направление папиллярных линий; - количество дельт в отпечатке пальца; - количество островов в отпечатке пальца; - комплексное число, состоящее из - координат -ой дельты отпечатка пальца; - комплексное число, состоящее из - координат -го острова отпечатка пальца; - функция, возвращающая фазу комплексной переменной .

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

· Далее изображение в несколько итераций попиксельно обрабатывается фильтром Габора:

,

где , ; - угол ориентации минуции, и - пространственные константы огибающей Гаусса вдоль осей и соответственно (корректируется в зависимости от частоты так, что фильтр не содержит более трёх эффективных пиков); - частота синусоидальной плоскостной волны.

Параметр определяется как с периодом =6, 7, 8, 9 пикселей. Этот диапазон изменений позволяет охватить типичные частоты хребтов, встречающиеся в отпечатках пальцев человека;

· После построения шаблона линий, он обрезается по выбранной форме отпечатка.

2.3 Математическая постановка задачи

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

Исходные данные:

- множество исходных отпечатков пальцев;

- множество наборов исходных ключевых точек;

- набор ключевых точек для каждого отпечатка,

- ключевая точка (минуция).

где n - количество исходных отпечатков, , - количество ключевых точек для каждого отпечатка;

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

- набор ключевых точек сгенерированного отпечатка,

- ключевая точка.

где , - количество ключевых точек для каждого отпечатка;

Введём функцию , соответствующую следующим параметрам:

.

Тогда количество совпадающих ключевых точек для каждого из алгоритмов будет равно:

.

Обозначим

- общее количество исходных ключевых точек,

- общее количество сгенерированных ключевых точек.

Тогда

- количество ошибок 1 рода, то есть наличия лишних ключевых точек.

- количество ошибок 2 рода, то есть отсутствия некоторых исходных ключевых точек;

Отсюда

- количество ошибок 1 рода, то есть наличие лишних ключевых точек.

- количество ошибок 2 рода, то есть отсутствие некоторых исходных ключевых точек;

Пусть - некоторая функция, являющаяся линейной комбинацией 2-х параметров:

,

где и - весовые коэффициенты,

Тогда для определения оптимального алгоритма необходимо выбрать минимальное , соответствующе искомому алгоритму :

.

2.4 Обоснование выбранного решения

Поставленная задача является оптимизационной. Множество алгоритмов генерации искусственных отпечатков пальцев является конечным, и для каждого алгоритма необходимо выполнить последовательность вычислений. Для каждого алгоритма генерации необходимо выполнить построение набора искусственных отпечатков пальцев и провести анализ полученного набора. По результатам анализа определить количество сгенерированных ключевых точек и сравнить его с количеством исходных ключевых точек, тем самым определяя наличие ошибок 1 и 2 рода. Затем вычислить значение , характеризующее схожесть исходных и восстановленных по ключевым точкам отпечатков. Оптимальным будет алгоритм, для которого значение будет минимальным. Для осуществления необходимых вычислений необходимо разработать программное обеспечение.

2.5 Выводы

В данной части была произведена формализация алгоритма генерации искусственных биометрических образов и задана математическая постановка задачи. Был приведен способ решения поставленной задачи и обоснован выбор данного способа.

3. Технологическая часть

3.1 Введение

В данной части рассмотрен процесс разработки программного обеспечения, предъявлены требования к разрабатываемому ПО, выбран язык программирования для реализации программного обеспечения. Подробно описаны этапы работы алгоритма, приведены полученные результаты.

3.2 Разработка общей структуры ПО

В рамках разработки ПО необходимо обеспечить решение следующих задач:

· доступ к базе данных;

· предоставление интерфейса пользователю для ввода данных;

· обработка введенных данных;

· создание и хранение базы искусственных ОП.

В том числе необходимо обеспечить следующие этапы генерации искусственного отпечатка пальца:

· выбор типа ОП и формирование глобальных признаков;

· построение поля направлений;

· построение шаблона;

· применение фильтра Габора;

· обрезание изображения.

Так же должен быть реализован пользовательский интерфейс данного ПО.

Рассмотренные задачи и требования обуславливают следующую структуру программной системы (рисунок 24).

Размещено на http://www.allbest.ru

Рисунок 24. Общая структура разрабатываемого ПО.

Подсистема обработки введенных данных должна обеспечивать подключение к базе данных и создание искусственных ОП с учетом введенных пользователем данных.

Подсистема графического интерфейса пользователя должна обеспечивать обработку и вывод результата обработки введенных данных.

База данных содержит информацию об исходных ключевых точках.

База искусственных ОП содержит сгенерированные искусственные биометрические образы.

Общий алгоритм всех действий программы представлен на рисунке 25.

Рисунок 25. Общий алгоритм действий программы.

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

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

3.3 Выбор языка программирования

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

Выделим следующие требования к языку написания данного ПО:

· возможность использования стандартных библиотек, предназначенных для работы с матричными типами данных;

· наличие свободно распространяемых библиотек обработки изображений;

· особенности системы разработки программного обеспечения (простота использования, стоимость, наличие доступной справочной документации);

· опыт конкретного разработчика в области проектирования и написания кода для этого языка программирования.

С учетом перечисленных требований был выбран язык Matlab. Данный язык программирования позволяет выполнять широкий спектр операций над матричными типами данных, имеет мощную встроенную библиотеку для работы с изображениями. Так же Matlab не требователен к навыкам программирования, что позволяет писать достаточно сложные программы не имея высокого уровня знаний в области программирования.

3.4 Выбор типа ОП и формирование глобальных признаков

Тип ОП характеризуется положением и количеством сингулярностей (ядер и дельт).

Рисунок 26. Расположение сингулярностей для типа отпечатка пальца «треугольная арка».

3.5 Построение поля направлений

Поле направлений строится по модели Шерлока-Монро в зависимости от выбранного типа ОП

Входными данными на данном этапе являются: cores и deltas - массивы с координатами центров и дельт данного отпечатка, size_x и size_y - размер выходной матрицы, задающей поле направлений.

function [ img ] = Sh_M_orientation( cores, deltas, size_x, size_y )

for a=(1:size_y)

for b = (1:size_x)

sum_c = 0;

sum_d = 0;

z = 0;

for c = (1:size(cores,1))

if(((size_y-a)==cores(c,2))&(b==cores(c,1)))

z=1;

end

end

for c = (1:size(deltas,1))

if(((size_y-a)==deltas(c,2))&(b==deltas(c,1)))

z=1;

end

end

if(z==0)

for c = (1:size(cores,1))

sum_c = sum_c + atan(((size_y-a)-cores(c,2))/(b-cores(c,1)));

end

for c = (1:size(deltas,1))

sum_d = sum_d + atan(((size_y-a)-deltas(c,2))/(b-deltas(c,1)));

end

line(b) = (sum_d - sum_c)/2;

else

line(b)=0;

end

end

if (a==1)

img = line;

else

img = cat(1, img, line);

end

end

end

На рисунке 27 представлен пример построения поля направлений.

Рисунок 27. Поле направлений с отмеченными позициями ядра и дельты.

3.6 Построение шаблона

На этапе построения шаблона происходил заполнение пустого изображения растровыми прототипами, соответствующими разным типам минуций.

Рисунок 28. Используемые прототипы.

Сюда функцию и описание

Рисунок 29. Расположение минуций.

3.7 Применение фильтра Габора

Первым шагом на этом этапе является генерация фильтра Габора. Ниже приведен код функции, реализующий генерацию фильтра Габора по заданным углом theta.

function gb=gabor_fn(theta)

% bw = bandwidth, (1)

% gamma = aspect ratio, (0.5)

% psi = phase shift, (0)

% lambda= wave length, (>=2)

% theta = angle in rad, [0 pi)

bw = 0.7;

gamma = 1;

psi = 1;

lambda = 8;

sigma = lambda/pi*sqrt(log(2)/2)*(2^bw+1)/(2^bw-1);

sigma_x = sigma;

sigma_y = sigma/gamma;

sz=fix(8*max(sigma_y,sigma_x));

if mod(sz,2)==0, sz=sz+1;end

[x y]=meshgrid(-fix(sz/2):fix(sz/2),fix(sz/2):-1:fix(-sz/2));

% Rotation

x_theta=x*cos(theta)+y*sin(theta);

y_theta=-x*sin(theta)+y*cos(theta);

gb=exp(-0.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);

end

Рисунок 30. Примеры сгенерированных фильтров Габора.

Следующим шагом является наложение фильтра Габора на изображение с учетом расположения минуций и значений углов. Функция наложения зависит от входного изображения img и поля направлений orient.

Ниже приведен код программы, реализующий данную функциию:

function [ img ] = gabbor_app( img, orient)

win_size = 3;

for a = (fix(win_size/2)+1:win_size:size(img,1)-fix(win_size/2)-10)

for b = (fix(win_size/2)+1:win_size:size(img,2)-fix(win_size/2)-10)

gab = gabor_fun(orient(ceil(a/9),ceil(b/9)));

%gab = gabor_fun(pi/4);

M = zeros(win_size, win_size);

for c = (1:win_size)

for d =(1:win_size)

M(c,d) = img(a-fix(win_size/2+1)+c, b-fix(win_size/2+1)+d);

end

end

M = imfilter(M, gab);

for c = (1:win_size)

for d =(1:win_size)

img(a-fix(win_size/2+1)+c, b-fix(win_size/2+1)+d) = M(c,d);

end

end

end

end

end

Обработка изображения фильтром Габора проходит в несколько итераций. При этом происходит постепенное наращивание папиллярных линий ОП.

Рисунок 31. Процесс наращивания папиллярных линий

3.8 Обрезание изображения

После построения шаблона линий, он обрезается по выбранной форме отпечатка.

Рисунок 32. Пример сгенерированного ОП.

3.9 Выводы

В данной части была сконструирована структура ПО, а также сформулированы требования к каждой подсистеме. Был произведен выбор языка программирования с учетом требований к разрабатываемому ПО. Также была проведена реализация программного обеспечения, выполняющего генерацию искусственных отпечатков пальцев, основанную на фильтре Габора. Приведены результаты работы отдельных частей алгоритма и конечный результат работы программы - образ сгенерированного отпечатка пальца.

4. Организационно-экономическая часть

4.1 Введение

Разработка программного обеспечения предполагает необходимость координации значительного количества весьма разноплановых работ, в которых принимают участие специалисты различного профиля и квалификации. Необходимость обеспечения эффективности разработки требует формирования единого плана, предусматривающего окончание всего комплекса работ и отдельных его составляющих в заданные сроки и при ограниченных издержках.


Подобные документы

  • Проблема улучшения качества отпечатков пальца с целью повышения эффективности работы алгоритмов биометрической аутентификации. Обзор алгоритмов обработки изображений отпечатков пальцев. Анализ алгоритма, основанного на использовании преобразования Габора.

    дипломная работа [4,5 M], добавлен 16.07.2014

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

    дипломная работа [4,0 M], добавлен 13.10.2017

  • Понятие фрактала, принципы создания изображения. Разработка алгоритма и режимов генерации ландшафта. Описание программы FracLandscapes.exe. в среде разработки Delphi 10. Примеры построения ландшафта с использованием различных режимов и количества изгибов.

    курсовая работа [688,9 K], добавлен 04.05.2014

  • Разработка программно-аппаратного комплекса на базе ПЭВМ типа Pentium IV, включающего в себя периферийное устройство для генерации сигнала в виде напряжения, меняющегося во времени, и программного обеспечения для управления процессом генерации.

    дипломная работа [3,0 M], добавлен 30.06.2012

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

    дипломная работа [554,8 K], добавлен 06.04.2014

  • Информационно-вычислительный комплекс "Ангара" для компьютерного моделирования трубопроводных систем энергетики. Генерации SQL скрипта структуры базы данных и средства программного доступа. Описание интерфейса пользователя и его режимы генерации.

    дипломная работа [5,0 M], добавлен 09.05.2014

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

    курсовая работа [234,1 K], добавлен 04.08.2009

  • Обзор области генерации сетевого трафика. Описание выбранных методов, моделей, алгоритмов решения задач. Создание модели поведения пользователя, распределение количества посещённых страниц сайта. Выбор средств реализации программного продукта (проекта).

    курсовая работа [1,3 M], добавлен 30.06.2017

  • Спецификация требований к разрабатываемому приложению. Разработка структурной схемы интерфейса. Описание алгоритма шифрования DES. Разработка программного кода приложения "DES". Проведение исследования основных шагов для генерации ключей и шифрования.

    курсовая работа [398,4 K], добавлен 13.12.2022

  • Создание набора классов, реализующих функции генерации метаданых для заданного файла данных спутника MTSAT-1R. Существующие методы решения. Реализация алгоритма получения необходимых полей с нужными данными. Разработка структуры базы данных инвентаря.

    курсовая работа [38,6 K], добавлен 17.07.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.