You are on page 1of 10

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ БІОРЕСУРСІВ І

ПРИРОДОКОРИСТУВАННЯ УКРАЇНИ
ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Кафедра комп’ютерних наук

ЛАБОРАТОРНА РОБОТА №2

на тему: «Розпізнавання образів на основі методу потенційних


функцій»

Виконала:

студентка групи КН-18002б

Граудул Олександра

Перевірив:

доктор технічних наук, професор,

Бондаренко Віктор Євгенович

КИЇВ - 2021
Зміст

Вступ.............................................................................................................................3

Розділ 1. Методи розпізнавання образів....................................................................3

Розділ 2. Програмна реалізація системи розпізнавання образів..............................4

Розділ 3. Дослідження системи розпізнавання образів............................................7

Висновки.......................................................................................................................9

Література.....................................................................................................................9

2
Вступ
Метою даної роботи є вивчення способів класифікації образів на основі методу
потенційних функцій, розробка програмної системи, що реалізує розпізнавання
образів на основі зазначеного методу, а також дослідження розробленої
системи.
Вихідні дані:
 кількість класів, об’єктів та їх показників для навчання системи
розпізнавання
 самі об’єкти для навчання
 довільні об’єкти для класифікації.

Розділ 1. Методи розпізнавання образів


Суть методу потенційних функцій полягає в тому, щоб скласти таку вирішальну
функцію, яка буде для кожного об'єкта визначати приналежність його до
потрібного класу. Нехай кожен документ навчальної вибірки і документ
(об'єкт), який ми плануємо класифікувати, у вигляді вектору ознак: {X1, X 2, ...
Xn}. При класифікації об'єкт перевіряється на близькість до об'єктів з
навчальної вибірки. Вважається, що об'єкти з навчальної вибірки «заряджені»
своїм класом, а міра «важливості» кожного з них при класифікації залежить від
його «заряду» і відстані до об'єкта класифікації.
У найпростішому випадку для кожного з ознак можна обчислити потенціал за
формулою:
P = a / R2
де a - деякий постійний коефіцієнт (для зручності a можна прирівняти до 100
або 1000), R - відстань від даної точки до середнього значення одного з класів.
Обчисливши потенціали за певною ознакою об'єкта, який класифікується, щодо
кожного з заздалегідь визначених класів, вважаємо, що цей об'єкт
«притягується» до того класу, при якому потенціал має найбільше значення.
Проводимо дану операцію за всіма ознаками об'єкта, який класифікується.
Нехай образи еталони, необхідні для навчання системи розпізнавання,
задаються векторами ознак. Обчислюємо середнє значення за кожною ознакою.
А потім обраховуємо значення потенційної функції для кожного образу.
В якості потенційної функції виберемо:

f = f0 / (1+ (ar) 2),

3
де а = 0,01; f0 = 1; r - відстань об'єкту до еталонного (середнього) об'єкта класу.
rÙ1, rÙ2 - відстань від об'єкта до еталонного об'єкта класу Ù1, Ù2.
fÙ1, fÙ2 - потенційні функції для класів Ù1, Ù2.

Розділ 2. Програмна реалізація системи розпізнавання образів


Програма написана на алгоритмічній мові С ++.

Лістинг програми:
#include <iostream>
#include <cmath>
#include <conio.h>

using namespace std;

int main()
{

int num_arr; //кількість класів


int num_pok; //кількість показників
int num_ekz; //кількість екземплярів
char quite;

cout<<"Вкажіть кількість класів для навчання"<< endl;


cin >> num_arr;
cout<<"Вкажіть кількість показників"<< endl;
cin >> num_pok;
cout<<"Вкажіть кількість екземплярів кожного класу"<< endl;
cin >> num_ekz;

//створення масиву для кожного класу екземплярів


int ***array = new int** [num_arr]; // кількість класів
for (int i = 0; i < num_arr; i++) {
array[i] = new int* [num_pok]; // кількість показників
for (int j = 0; j < num_pok; j++) {
array[i][j] = new int [num_ekz]; // кількість екземплярів
}
}

//введення значень показників для кожного екземпляру


int a;
for(int i=0; i<num_arr; i++) {
cout<<"\nВведення даних для класу "<<i+1<< endl;

4
for(int k=0; k<num_pok; k++) {
cout<<"Показник "<<k+1<< endl;
for(int j=0; j<num_ekz; j++) {
cout<<"Екземпляр "<<j+1<<": ";
cin >> a;
array[i][k][j] = a;
}
}
cout<<endl;
}

//пошук середнього значення для кожного показника кожного класу


//створюємо масив для зберігання середніх знач показників
float **mid = new float* [num_arr];
for (int i = 0; i < num_arr; i++)
mid[i] = new float [num_pok];
a=0;
cout<<"Визначення середніх значень"<< endl;
for(int i=0; i<num_arr; i++) {
cout<<"Клас "<<i+1<< endl;
for(int k=0; k<num_pok; k++) {
cout<<"Показник "<<k+1<< ": сер.значення = ";
for(int j=0; j<num_ekz; j++) {

a += array[i][k][j];
}
a /= num_ekz;
mid[i][k] = a;
cout << a << endl;
a = 0;
cout << endl;
}
}

int count;
double max;
int max_i;
//введення і порівняння значень з еталоном
count = 1;
do {
cout << "\n\nВведіть екземпляр для порівняння з еталоном"<<endl;
int *pok = new int[num_pok];
double *poriv = new double[num_arr];
double *f = new double[num_arr]; //масив для потенційної ф-ії

cout<<"Екземпляр "<<count<< endl;

5
for(int j=0; j<num_pok; j++) {
cout<<"Показник "<<j+1<<": ";
cin >> pok[j];
}

// порівняння з еталоном
for(int i=0; i<num_arr; i++) {
for(int k=0; k<num_pok; k++) {
poriv[i] += pow((mid[i][k]-pok[k]),2);
}
poriv[i] = pow(poriv[i],0.5);
// потенційна ф-ія f=f0/(1+(ar)^2), де а=0,01; f0=1; r –
відстань об’єкта до еталонного (середнього) об’єкта класу
f[i] = pow((1+pow((0.01*poriv[i]),2)),-1); // використання
потенційної ф-ії
cout <<"Потенційна ф-ія для класу "<<i+1<<": "<<f[i]<<endl;
}

max = f[0];
max_i = 0;
for(int i=0; i<num_arr; i++) {
if(f[i]>max) {
max = f[i];
max_i = i;
}
}

cout << "\nДаний екземпляр відноситься до класу "<<max_i+1<<endl;


count++;

cout << "\nДля завершення натисність 1"<< endl;


cin >> quite;

} while (quite != '1');

return 0;
}

6
Розділ 3. Дослідження системи розпізнавання образів
Скріншоти роботи програми:

7
8
9
Висновки
У результаті було розроблено програмну систему, що реалізує розпізнавання
образів на основі методу потенційних функцій. Було досліджено роботу
розробленої системи шляхом введення навчальних об’єктів, які відрізняються за
двома показниками. Дані об’єкти були класифіковані на 2 класи. А потім було
успішно класифіковано декілька довільних образів за допомогою порівняння
потенціалів.
Також було отримано практичні навички з розробки програмних систем
розпізнавання образів.

Література
1. Бондаренко В.Є. Практикум Теорія Розпізнавання образів. - К.: 2020 - 10-
12с.
2. Дуда Р., Харт П. Распознавание образов и анализ сцен. Перевод с английского
Г. Г. Вайештейнв и А. М. Васьковского, под редакцией В. Л. Стефанюка,
Издательство «МИР», - М.: 1976. - 509 с.

10

You might also like