- •Содержание
- •Описание предприятия
- •Анализ предприятия
- •II.I биометрическая скуд
- •Структурная схема биометрической скуд
- •Алгоритмы распознавания
- •Выбор и обоснование оборудования
- •На сегодняшний день на рынке hd Web-камер конкурируют в основном 2 фирмы – Microsoft и Logitech. Поскольку их стоимость не очень высока и мы вполне входим в бюджет, выберем камеру Logitech c910 hd pro
- •Список литературы
- •Приложение 1. Заявка на проведение сертификации
- •Заявка на проведение сертификации
- •Приложение 2. Спецификация скуд “BioBank”
- •Приложение 3. Описание продукта скуд “BioBank”
- •Приложение 4. Руководство пользователя программы “Bank”
- •Приложение 5. Листинг программы
Приложение 4. Руководство пользователя программы “Bank”
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ПРОГРАММЫ “BANK”
1. УСТАНОВКА ПО
1.1 Минимальные системные требования
Центральный процессор: Intel Pentium
Объём оперативной памяти: не менее 256Mb
Объём свободного дискового пространства не менее: 12Mb
Операционная MS Windows 2000 или старше.
1.2 Установка ПО Bank
Вставьте компакт-диск с программным обеспечением в CD-ROM
Скопировать программу с компакт-диска в нужную директорию
Программа готова к использованию
2. РАБОТА С ПО “BANK”
Для начала работы с программой необходимо запустить файл Project.exe. При запуске программы откроется следующее окно.
Рисунок П4-1. Интерфейс программы BANK
2.1 Добавление пользователя в БД
В окне программы Bank нажмите кнопку «Получить изображение». Для повышения точности идентификации необходимо занести в БД не менее 3 изображений, с целью создания более точной модели.
2.2 Идентификация пользователя
Для идентификации пользователя необходимо нажать кнопку «Сравнить с БД». В итоге при ее нажатии в левом нижнем углу появится захваченное текущее изображение, а снизу по центру – изображения, наиболее похожие на текущее, имеющиеся в БД. По нему охранник и производит идентификацию.
2.3 Интерфейс программы
По центру отображается захваченный видеосигнал, в правом верхнем углу – текущее захваченное изображение.
2.4 Работа с БД
Для работы с БД необходимо вручную зайти в папку Faces и удалить или перенести в нужную папку файлы изображений.
Приложение 5. Листинг программы
Листинг модуля сохранения в БД:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
IplImage* test_img;
test_img = cvCreateImage( cvSize(mini->width,mini->height), IPL_DEPTH_8U, 1 ); //создание изображения
cvCopy(mini,test_img,0);
int i=1;
AnsiString str;
while(1)
{
str=i;
str+=".pgm";
if(FileExists(str.c_str())){
i++;
continue;
}
cvSaveImage(str.c_str() ,test_img); //сохранение изображения
break;
}
cvReleaseImage( &test_img);
}
Листинг модуля идентификации лица:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
const unsigned int N_People=40; // Количество людей в БД
const unsigned int N_Samples=3; // Количество снимков на одного человека
IplImage* img_load;
IplImage* img_load_ch1[N_Samples];
IplImage* test_img;
CvEHMM **Ehmms;
Ehmms=new CvEHMM* [N_People];
CvSize size;
// Загрузка лиц и обучение
for (int j=0;j<N_People;j++)
{ //Загружаем набор фотографий для 1 человека и обучаем
for (int i=0;i<N_Samples;i++) // Цикл по фотографиям
{
img_load = cvLoadImage(("faces//s"+IntToStr(j+1)+"//"+IntToStr(i+1)+".pgm").c_str());
size=cvSize(img_load->width,img_load->height);
img_load_ch1[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 );
cvSplit(img_load,img_load_ch1[i],NULL,NULL,NULL);
}
Ehmms[j]=Train(img_load_ch1,N_Samples);
}
// Полученное изображение
test_img = cvCreateImage( cvSize(mini->width,mini->height), IPL_DEPTH_8U, 1 );
cvCopy(mini,test_img,0);
APIDrawIpl(10 ,550,test_img,Form1->Handle);
// Проверка
float *likehood;
likehood = new float[N_People];
for ( j=0;j<N_People;j++) // Цикл по разным людям
likehood[j] = ComputeLikelihood(test_img,*Ehmms[j]); //вычисляем значение совпадения
float max=likehood[0];
int nmax=0;
for ( j=1;j<N_People;j++)
if(max<likehood[j]){max=likehood[j];nmax=j;}
delete likehood;
j=nmax;
for ( int i=0;i<N_Samples;i++) // Цикл по фото
{
img_load = cvLoadImage(("faces//s"+IntToStr(j+1)+"//"+IntToStr(i+1)+".pgm").c_str());
size=cvSize(img_load->width,img_load->height);
img_load_ch1[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 );
cvSplit(img_load,img_load_ch1[i],NULL,NULL,NULL);
APIDrawIpl(10+(size.width+10)*i+200,550,img_load,Form1->Handle);
}
cvReleaseImage( &test_img);
}
