Рефераты. Система идентификации личности по отпечаткам пальцев. Подсистема анализа изображения
return
true;
}
bool
TFingPicture::Line(CPoint from, CPoint to, int width, COLORREF color)
{
if(!IsLoad)
return false;
CPen
pen(PS_SOLID, width, color);
pic.SelectObject(&pen);
pic.MoveTo(from.x,
from.y);
pic.LineTo(to.x,
to.y);
return
true;
}
bool
TFingPicture::Rectangle(CPoint from, CPoint to, int width, COLORREF color)
{
if(!IsLoad)
return false;
Line(from,
CPoint(from.x, to.y), width, color);
Line(CPoint(from.x,
to.y), to, width, color);
Line(to,
CPoint(to.x, from.y), width, color);
Line(CPoint(to.x,
from.y), from, width, color);
return
true;
}
bool
TFingPicture::Copy(TFingPicture &from)
{
bmp =
from.bmp;
IsLoad
= from.IsLoad;
Screen
= from.Screen;
return
pic.BitBlt(0, 0, bmp.bmWidth, bmp.bmHeight, &from.pic, 0, 0, SRCCOPY)>0;
}
CPoint
TFingPicture::NextDotCW(const CPoint dot, int &vec)
//Поиск
следующей точки "_по часовой_ стрелке"
//vec
вероятное направление поиска
{
int
i = vec,
step =
0;
CPoint
newdot = dot;
COLORREF
clMas[9];
clMas[8]
= clMas[0] = GetPixel(dot.x-1, dot.y-1);
clMas[1]
= GetPixel(dot.x, dot.y-1);
clMas[2]
= GetPixel(dot.x+1, dot.y-1);
clMas[3]
= GetPixel(dot.x+1, dot.y);
clMas[4]
= GetPixel(dot.x+1, dot.y+1);
clMas[5]
= GetPixel(dot.x, dot.y+1);
clMas[6]
= GetPixel(dot.x-1, dot.y+1);
clMas[7]
= GetPixel(dot.x-1, dot.y);
do{
if(clMas[i+1]
< clMas[i])
{
vec
= (i + 1) % 8;
newdot.x
= dot.x + incXY[vec].x;
newdot.y
= dot.y + incXY[vec].y;
if(vec
% 2 == 0) SetPixel(dot.x + incXY[vec+1].x, dot.y + incXY[vec+1].y, 0x000000);
vec
= (vec + 5) % 8;
return
newdot; //найдена новая
точка
}
i
= (i + 1) % 8;
step++;
}while(step
<= 8);
return
dot; //поиск ни к чему не привел
}
CPoint
TFingPicture::NextDotCCW(const CPoint dot, int &vec)
//Поиск
следующей точки "_против часовой_ стрелке"
//vec
вероятное направление поиска
{
int
i = vec,
step =
0;
CPoint
newdot = dot;
COLORREF
clMas[9];
clMas[8]
= clMas[0] = GetPixel(dot.x-1, dot.y-1);
clMas[1]
= GetPixel(dot.x-1, dot.y);
clMas[2]
= GetPixel(dot.x-1, dot.y+1);
clMas[3]
= GetPixel(dot.x, dot.y+1);
clMas[4]
= GetPixel(dot.x+1, dot.y+1);
clMas[5]
= GetPixel(dot.x+1, dot.y);
clMas[6]
= GetPixel(dot.x+1, dot.y-1);
clMas[7]
= GetPixel(dot.x, dot.y-1);
do{
if(clMas[i+1]
< clMas[i])
{
vec
= (i + 1) % 8;
newdot.x
= dot.x + incXY[(8-vec)%8].x;
newdot.y
= dot.y + incXY[(8-vec)%8].y;
if(vec
% 2 == 0) SetPixel(dot.x + incXY[8-vec-1].x, dot.y + incXY[8-vec-1].y,
0x000000);
vec
= (vec + 5) % 8;
return
newdot; //найдена новая
точка
}
i
= (i + 1) % 8;
step++;
}while(step
<= 8);
return
dot; //поиск ни к чему не привел
}
CPoint
TFingPicture::GetSize()
//получение
размера изображения
{ if(!IsLoad)
return false;
return
CPoint(bmp.bmWidth, bmp.bmHeight);}
РУКОВОДСТВО ПРОГРАММИСТА
П.2.1. НАЗНАЧЕНИЕ ПРОГРАММЫ
Программа распознавания личности по отпечаткам
пальцев имеет идентификатор FingerAnalyser и предназначена
для автоматической идентификации личности по папиллярному узору. Программа FingerAnalyser выполняет следующие функции:
1)
модификация изображения, исправление искажений;
2)
выделение локальных особенностей – минюций.
формирование списка минюций в абсолютных параметрах;
3)
сортировка списка абсолютных параметров, исключение
ложных и ненадежных минюций;
4)
конвертирование абсолютных параметров в отностительные,
формирование списка относительных параметров;
5)
установка системы допусков для учета корреляции
изображений;
6)
сравнение одного отпечатка с множеством других.
Данная работа реализует такое преобразование
изображения, при котором данные о расположение уникальных особенностей
сохраняются наиболее полно и с наименьшим содержанием ложной информации.
Создаваемая система облегчит разработку алгоритмов
обработки изображений, упростит анализ экспериментальных данных и выявление
общих закономерностей.
П.2.2. УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫ
Программа FingerAnalyser предъявляет
следующие требования к техническим средствам:
-
стандартный x86-совместимый
ПК;
-
тактовая частота процессора 900 МГц или более;
-
объем оперативной памяти не менее 64 Мб;
-
разрешение экрана монитора не менее 1024x768.
Программа FingerAnalyser предъявляет
следующие требования к программным средствам:
-
операционная система семейства Windows (Windows 9x/ME/NT/2000/XP);
-
среда для разработки приложений Microsoft Visual
Studio C++ 2003.
П.2.3. ХАРАКТЕРИСТИКА ПРОГРАММЫ
Программа FingerAnalyser требует
для своего функционирования наличия в проекте файлов, содержащих растровые
представления папиллярного узора.
В состав программы входят следующие файлы,
необходимые для ее функционирования:
1)
FingerAnalyser.exe –
исполняемый файл, содержащий основной интерфейс программы;
2)
MFC[1] – библиотеки для поддержки оконного среды;
3)
blank.bmp – пустое изображение;
4)
report.txt – файл отчет в который записываются все
результаты сравнения;
5)
sav/*.sav – файлы со структурным представлением
отпечатков;
6)
sav/fingbase.bse – база данных отпечатков;
7)
report.txt – файл-отчет с
результатами проведенных сравнений.
Программа является интерактивной, т.е. требующей
взаимодействия с пользователем, поэтому время выполнения отдельных этапов
обработки не превышает 0.5 с. при использовании требуемых технических средств.
П.2.4. ОБРАЩЕНИЕ К
ПРОГРАММЕ
Для запуска программы необходимо убедиться в том,
что необходимые библиотеки MFC находятся в том же каталоге, что и исполняемый
файл или в каталоге Windows/System32.
Для корректной работы программы она должна
находиться в каталоге, к которому есть права на чтение и запись.
Для запуска работы
подсистемы необходимо в оболочке системы на главном окне нажать на кнопку
«Анализ» - для сравнения нужного отпечатка с набором имеющимся в базе данных,
или «Запомнить в базу» - для внесения указанных отпечатков в базу данных.
Интерфейс программы представлен на рис. П.2.2.
Интерфейс программы FingerAnalyser
Рис. П.2.2
На форме программы в визуальном виде представляется,
после открытия через пункт «Открыть», исходное изображение, после нажатия на
кнопку «Анализ», скорректированное изображение и визуальное представление
структурного вида отпечатка. После чего можно нажатием на кнопку «Сравнить»
отыскать в базе схожие отпечатки.
При каждом анализе отпечатка создается файл с его
структурным описанием. Для того чтобы поместить отпечаток в базу данных
отпечатков, для последующего сравнения с ним, необходимо нажать на кнопку
«Запомнить в базу». Для запоминания в базу можно выбирать группу файлов для
применения операции записи в базу данных для всех выбранных файлов.
П.2.5. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ
Входными и выходными данными для программы является
файл базы данных отпечатков sav/fingbase.bse. Структура
файла:
src [kol]
[dpi] [date] [description]
src [kol]
[dpi] [date] [description]
...
src
[kol] [dpi] [date] [description]
В каждой записи файла базы данных отпечатков содержится
описание одного отпечатка. В табл. П.2.1 приведен формат записи.
Таблица П.2.1
Формат записи базы данных
Поле
Формат
Описание
src
Строка
путь к образу из которого была получена информация
kol
Целое
количество точек
dpi
Целое
качество исходного отпечатка (dot per inch)
date
Дата
дата отпечатка
description
строка
описание