- •Аннотация
- •Введение
- •Термины и определения
- •Биометрические методы идентификации
- •Анатомия пальца человека
- •Общие сведения о преобразовании Габора
- •Обзор существующих методов генерации отпечатков пальцев
- •Обзор существующего программного обеспечения
- •Введение
- •Формализация алгоритма генерации искусственных биометрических образов
- •Roc-анализ
- •Математическая постановка задачи
- •Решение поставленной математической задачи
- •Введение
- •Разработка общей структуры по
- •Выбор языка программирования
- •Выбор типа оп и формирование глобальных признаков
- •Построение поля направлений
- •Построение шаблона
- •Применение фильтра Габора
- •Обрезание изображения
- •Введение
- •Расчёт трудоёмкости проекта
- •4.2.2 Построение сетевого графика
- •4.2.3 Диаграмма Гантта
- •4.2.4 Анализ структуры затрат проекта
- •4.2.5 Затраты на выплату заработной платы
- •4.2.6 Отчисления на социальные нужды
- •4.2.7 Материальные затраты
- •4.2.8 Прочие затраты
- •4.2.9 Затраты на организацию рабочих мест
- •4.2.10 Накладные расходы
- •4.2.11 Суммарные затраты на реализацию программного проекта
- •Исследование рынка
- •4.3.1 Планирование цены и прогнозирование прибыли
- •4.3.2 Сервисное обслуживание
- •4.3.3 Отчисления на социальные нужды
- •Введение
- •Конституция Российской Федерации
- •Доктрина информационной безопасности Российской Федерации
- •Федеральный Закон «Об информации, информационных технологиях и о защите информации»
- •Федеральный Закон «о персональных данных»
- •Постановление Правительства Российской Федерации «Об утверждении требований к защите персональных данных при их обработке в информационных системах персональных данных»
- •Гражданский Кодекс Российской Федерации
- •Уголовный Кодекс Российской Федерации
Выбор типа оп и формирование глобальных признаков
Тип ОП характеризуется положением и количеством сингулярностей (ядер и дельт).
Рисунок 27. Расположение сингулярностей для типа отпечатка пальца «треугольная арка».
Построение поля направлений
Поле направлений строится по модели Шерлока-Монро в зависимости от выбранного типа ОП.
Входными данными на данном этапе являются: 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 представлен пример построения поля направлений.
Рисунок 28. Поле направлений с отмеченными позициями ядра и дельты.
Построение шаблона
На этапе построения шаблона происходит заполнение пустого изображения растровыми прототипами, соответствующими разным типам минуций.
Рисунок 29. Используемые прототипы.
На вход функции добавления минуций поступают переменные:
форма отпечатка (эллипс);
растровые прототипы минуций;
поле направлений;
количество минуций.
В ходе работы функции генерируются случайные числа – координаты для минуций. Если сгенерированные координаты попали в область отпечатка (эллипс), то на этом месте ставится минуция, если нет – координаты генерируются еще раз. Минуция ставится с учетом поля направлений, в случайную сторону.
Код функции размещения одной минуции:
function [ img ] = place_min( img, minuc, x, y, alfa )
minuc = imadjust(minuc, [0 1], [1 0]);
minuc = imrotate(minuc, alfa);
minuc = imadjust(minuc, [0 1], [1 0]);
for a = (1:size(minuc,1))
for b = (1:size(minuc,2))
if(minuc(a,b)<253)
img(x-fix(size(minuc,1)/2)+a,y-fix(size(minuc,2)/2)+b) = minuc(a,b);
end
end
end
end
Код функции размещения всех минуций представлен в полном тексте программы в Приложении 1.
Рисунок 30. Расположение минуций.
Применение фильтра Габора
Первым шагом на этом этапе является генерация фильтра Габора. Ниже приведен код функции, реализующий генерацию фильтра Габора по заданным углом 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
Рисунок 31. Примеры сгенерированных фильтров Габора.
Следующим шагом является наложение фильтра Габора на изображение с учетом расположения минуций и значений углов. Функция наложения зависит от входного изображения 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
Обработка изображения фильтром Габора проходит в несколько итераций. При этом происходит постепенное наращивание папиллярных линий ОП.
Рисунок 32. Процесс наращивания папиллярных линий