Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МОЙ Диплом 2.doc
Скачиваний:
69
Добавлен:
09.02.2015
Размер:
3.41 Mб
Скачать
    1. Выбор языка программирования

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

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

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

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

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

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

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

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

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

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

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

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

Входными данными на данном этапе являются: 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. Поле направлений с отмеченными позициями ядра и дельты.

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]