DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт по лабораторній роботі №1 на тему: «Побудова детермінованої системи розпізнавання образів»

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут енергетики та систем керування
Факультет:
Електроенергетики та систем керування
Кафедра:
Не вказано

Інформація про роботу

Рік:
2012
Тип роботи:
Лабораторна робота
Предмет:
Розпізнавання та обробка образів
Група:
ЕК
Коротко про документ

Про що ця робота

У звіті розглядається побудова детермінованої системи розпізнавання образів на прикладі класифікації літаків. Наведено теоретичні відомості, розв'язання та приклади програмного коду на мові C++.

У роботі розглядаються

  • Розпізнавання образів
  • Класифікація об'єктів
  • Системи розпізнавання літаків
  • Метрики простору
  • Програмна реалізація алгоритмів

Зміст і розділи

  1. Мета роботи
  2. Теоретичні відомості
  3. Розв’язання
  4. Висновок
Для кого:Студенти технічних спеціальностей та вивчаючі дисципліну розпізнавання та обробки образів.
Викладачі:Викладач кафедри

Ключові поняття

детермінована системарозпізнавання образівклас подібностіхарактеристика подібностіеталон класувідстаньлітакалгоритм

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ Національний університет «Львівська політехніка» ІЕПТ ім. В’ячеслава Чорновола Кафедра загальної екології та екоінформаційних систем ЗВІТ по лабораторній роботі №1 на тему: „Побудова детермінованої системи розпізнавання образів.” з дисципліни: „ Розпізнавання та обробка образів” Львів-2012 Мета роботи: навчитися проектувати системи розпізнавання образів на прикладі системи розпізнавання літаків. Теоретичні відомості. Вважатимемо, що образи - це деякі об'єкти (тіла, модулі), які можна виділити в досліджуваному середовищі як його незалежно існуючі складові і які ми можемо охарактеризувати скінченим числом числових чи описових характеристик. Клас подібних образів - це сукупність образів, що мало відрізняються по заданих чи усіх характеристиках у порівнянні з іншими образами. Система розпізнавання образів - це система, що по певному алгоритму відносить досліджуваний образ до відомих їй (системі) класів подібних образів. Побудувати систему розпізнавання образів означає: 1. Виділити у заданих системі об’єктів характеристики, що є. спільними для деякого набору об’єктів. 2. Розбити усю множину відомих образів по класах подібності, проаналізувавши їх за характеристиками подібності. 3. Побудувати алгоритм віднесення невідомого образу до одного із. класів подібності на основі характеристик подібності. У нашій системі розпізнавання образів літаки - це образи, а система розпізнавання літаків - це система розпізнавання образів. Спосіб побудови системи розпізнавання наступний: Образи (літаки.) представляються у вигляді точок у N - мірному просторі, де N - кількість характеристик, що характеризують образ (отже, кожна характеристика представляється одним із напрямів простору). У літаків можна виділити слідуючі характеристики: вага, швидкість, площа відбиття, рівень шуму, ширина крил і т.п. Тепер, якщо, наприклад, вісь Х відповідає за вагу літака, вісь Y відповідає за швидкість літака, то точки, у яких координата X дорівнює 1000,а координата Y дорівнює 300 представляють літаки з вагою 1000 і швидкістю 300. Для характеристик, які виражаються у символьному виді, наприклад колір, потрібно вводити свою шкалу значень, де кожне значення шкали відповідає певному значенню характеристики. Характеристика подібності між образами (D), що виділені у один клас, вираховується як середня квадратична відстань між образами. Для цього обчислюються відстані між усіма можливими парами образів із класу подібності і знаходиться їх середнє значення:  де F - клас подібності; L - відстань між і-им та j-им образами F-класу; М - кількість можливих пар. Система може сама виділяти групи образів, які можна віднести до одного класу подібності. Для полегшення завдання будемо працювати із заданими класами подібних образів. На початку роботи системі задається список відомих нам літаків, з вказанням їх характеристик і класу подібності (бомбардувальник, штурмовик, винищувач). З цього списку система виділяє літаки, що належать одному класу і обчислює його характеристику подібності. Характеристика подібності кожного класу покаже нам рівень згрупування образів у кожному класі і дозволить класифікувати невідомий літак. Нехай маємо невідомий об'єкт (у нашому випадку літак), описаний певними характеристиками. Визначаємо належність невідомого об'єкта до відомих нам класів. Характеристику належності до відомого класу (S) обчислюється як середнє значення відстані між невідомим об'єктом і всіма образами подібності.  де k – невідомий образ; F - клас подібності; і - і-тий образ F-класу; L - відстань між невідомим та і-им образом F-класу; N - кількість образів у F-класі. На основі отриманих S-характеристик невідомого образу робимо висновок про клас невідомого об'єкта: він належить класу, до якого середня відстань найменша (S - найменша). Ймовірність належності класу (Р) обчислюється як процентне співвідношення відстані до досліджуваного класу порівняно із відстанями до інших класів.  де k - невідомий образ; F - досліджуваний клас подібності; W - кількість класів подібності. Маємо такі характеристики літака: Клас літака Вага, т. Розмах крил, м. Висота польоту, км.  1 Винищувач 1,5 - 3 2 - 3 1 - 2  2 Штурмовик 4 - 6 3 - 4 3 - 5  3 Бомбардувальник 7 - 15 4,5 - 6 6 - 9   Характеристика подібності між образами (D), що виділені в один клас, вираховується як середня квадратична відстань між ознаками образа. Для цього обчислюються відстані між усіма можливими параметрами образів із класу подібності і знаходяться їх середнє значення:  де D – клас подібності;  - ознаки класу. Знаходимо еталон класу:  Характеристику належності до відомого класу (S) обчислюється як середнє значення відстані між невідомим об’єктом і всіма образами подібності.  На основі отриманих S-характеристик невідомого образу робимо висновок про клас невідомого об’єкта: він належить класу, до якого середня відстань найменша (S -найменше). Розв’язування.                   Нехай літак має такі ознаки 2, 2, 2.         за умовою і - літак є винищувачем 1-го типу.  Імовірність похибки=19.23%. Нехай літак має такі ознаки 5, 4, 4.         за умовою і - літак штурмовиком 2-го типу.  Імовірність похибки=44.44%. Нехай літак має такі ознаки 1, 1, 1.       оскільки - літак не є ні винищувачем, ні штурмовиком, ні винищувачем. //Litaku lab1_1 # include <iostream.h> # include <math.h> # include <conio.h> float DX(float Z[2][3]); float oznaku(float W[2][3],float Q[3],float X[3]); int main() { float x[3], A[2][3], A1[3], B[2][3], B1[3], C[2][3], C1[3]; float d, d1, d2, d3, min; cin >>x[0]; cin >>x[1]; cin >>x[2]; A[0][0]= 1.5, A[1][0]=3; A[0][1]=2, A[1][1]=3; A[0][2]=1, A[1][2]=2; A1[0]=2.25, A1[1]=2.5; A1[2]=1.5; B[0][0]=4, B[1][0]=6; B[0][1]=3, B[1][1]=4; B[0][2]=3, B[1][2]=5; B1[0]=5, B1[1]=3.5; B1[2]=4; C[0][0]=7, C[1][0]=15; C[0][1]=4.5, C[1][1]=6; C[0][2]=6, C[1][2]=9; C1[0]=11, C1[1]=5.25; C1[2]=7.5; d=sqrt(x[0]*x[0]+x[1]*x[1]+x[2]*x[2]); d1=fabs(DX(A)-d); d2=fabs(DX(B)-d); d3=fabs(DX(C)-d); min=d1; if(min>d2) min=d2; if(min>d3) min=d3; if(d1==d2 || d2==d3){ if(d1==d2){ if(x[0]>A[0][0] && x[0]<A[1][0] || x[0]==A[0][0] || x[0]==A[1][0]){ if(x[1]>A[0][1] && x[1]<A[1][1] || x[1]==A[0][1] || x[1]==A[1][1]){ if(x[2]>A[0][2] && x[2]<A[1][2] || x[2]==A[0][2] || x[2]==A[1][2]) min=d1; } } else min=d2; } if(d2==d3){ if(x[0]>B[0][0] && x[0]<B[1][0] || x[0]==B[0][0] || x[0]==B[1][0]){ if(x[1]>B[0][1] && x[1]<B[1][1] || x[1]==B[0][1] || x[1]==B[1][1]){ if(x[2]>B[0][2] && x[2]<B[1][2] || x[2]==B[0][2] || x[2]==B[1][2]) min=d2; } } else min=d3; } } if(min==d1){ if(x[0]>A[0][0] && x[0]<A[1][0] || x[0]==A[0][0] || x[0]==A[1][0]){ if(x[1]>A[0][1] && x[1]<A[1][1] || x[1]==A[0][1] || x[1]==A[1][1]){ if(x[2]>A[0][2] && x[2]<A[1][2] || x[2]==A[0][2] || x[2]==A[1][2]){ cout<<"nalegut' 1 klasy "; oznaku(A,A1,x); } } } } else if(min==d2){ if(x[0]>B[0][0] && x[0]<B[1][0] || x[0]==B[0][0] || x[0]==B[1][0]){ if(x[1]>B[0][1] && x[1]<B[1][1] || x[1]==B[0][1] || x[1]==B[1][1]){ if(x[2]>B[0][2] && x[2]<B[1][2] || x[2]==B[0][2] || x[2]==B[1][2]){ cout<<"nalegut' 2 klasy "; oznaku(B,B1,x); } } } } else if(min==d3){ if(x[0]>C[0][0] && x[0]<C[1][0] || x[0]==C[0][0] || x[0]==C[1][0]){ if(x[1]>C[0][1] && x[1]<C[1][1] || x[1]==C[0][1] || x[1]==C[1][1]){ if(x[2]>C[0][2] && x[2]<C[1][2] || x[2]==C[0][2] || x[2]==C[1][2]){ cout<<"nalegut' 3 klasy "; oznaku(C,C1,x); } } } } else cout<<"0"; getch(); return 0; } float DX(float Z[2][3]) { float d1, d2, D; d1=sqrt(pow(Z[0][0],2)+pow(Z[0][1],2)+pow(Z[0][2],2)); d2=sqrt(pow(Z[1][0],2)+pow(Z[1][1],2)+pow(Z[1][2],2)); D=(d1+d2)/2; return D; } float oznaku(float W[2][3],float Q[3],float X[3]) { float s1, s2, s3, k, V; int m=0, r=0, b=0; s1=pow(W[0][0]-X[0],2)+pow(W[0][1]-X[1],2)+pow(W[0][2]-X[2],2); s2=pow(W[1][0]-X[0],2)+pow(W[1][1]-X[1],2)+pow(W[1][2]-X[2],2); s3=pow(W[1][0]-Q[0],2)+pow(W[1][1]-Q[1],2)+pow(W[1][2]-Q[2],2); k=s3/50; if(s1<s2){ V=s1/k; cout<<"1 tup \n"; cout<<"Vidsotok pohubku "<<V<<endl; } if(s1>s2){ V=s2/k; cout <<"2 tup \n"; cout<<"Vidsook pohubku "<<V<<endl; } if (s1==s2){ V=s3/k; cout<<"Vidsook pohubku "<<V<<endl; for (int i=0; i<4; i++){ if(X[i]>Q[i]) b=b+1; if(X[i]==Q[i]) r=r+1; if (X[i]<Q[i]) m=m+1; } if (b>=2 && m<2) cout<<"1 tup\n"; if (m>=2 && b<2) cout<<"2 tup\n"; if (r>=2 && b<2 && m<2) cout<<"1 abo 2 tup\n"; } return 0; } ============================================================= //Litaku. Lab1 # include <iostream.h> # include <math.h> # include <conio.h> int main() { float x[3], A[2][3], B[2][3], C[2][3], A1[3], B1[3], C1[3]; float d, d1, d2, d3, D1, D2, D3, min, s1, s2, s3, k, V; int m=0; int r=0; int b=0; cin >>x[0]; cin >>x[1]; cin >>x[2]; A[0][0]=1.5; A[1][0]=3; A[0][1]=2; A[1][1]=3; A[0][2]=1; A[1][2]=2; A1[0]=2.25, A1[1]=2.5; A1[2]=1.5; d1=sqrt(pow(A[0][0],2)+pow(A[0][1],2)+pow(A[0][2],2)); d2=sqrt(pow(A[1][0],2)+pow(A[1][1],2)+pow(A[1][2],2)); D1=(d1+d2)/2; B[0][0]=4, B[1][0]=6; B[0][1]=3, B[1][1]=4; B[0][2]=3, B[1][2]=5; B1[0]=5, B1[1]=3.5; B1[2]=4; d1=sqrt(pow(B[0][0],2)+pow(B[0][1],2)+pow(B[0][2],2)); d2=sqrt(pow(B[1][0],2)+pow(B[1][1],2)+pow(B[1][2],2)); D2=(d1+d2)/2; C[0][0]=7, C[1][0]=15; C[0][1]=4.5, C[1][1]=6; C[0][2]=6, C[1][2]=9; C1[0]=11, C1[1]=5.25; C1[2]=7; d1=sqrt(pow(C[0][0],2)+pow(C[0][1],2)+pow(C[0][2],2)); d2=sqrt(pow(C[1][0],2)+pow(C[1][1],2)+pow(C[1][2],2)); D3=(d1+d2)/2; d=sqrt(x[0]*x[0]+x[1]*x[1]+x[2]*x[2]); d1=fabs(D1-d); d2=fabs(D2-d); d3=fabs(D3-d); min=d1; if(min>d2) min=d2; if(min>d3) min=d3; if(d1==d2 || d2==d3){ if(d1==d2){ if(x[0]>A[0][0] && x[0]<A[1][0] || x[0]==A[0][0] || x[0]==A[1][0]){ if(x[1]>A[0][1] && x[1]<A[1][1] || x[1]==A[0][1] || x[1]==A[1][1]){ if(x[2]>A[0][2] && x[2]<A[1][2] || x[2]==A[0][2] || x[2]==A[1][2]) min=d1; } } else min=d2; } if(d2==d3){ if(x[0]>B[0][0] && x[0]<B[1][0] || x[0]==B[0][0] || x[0]==B[1][0]){ if(x[1]>B[0][1] && x[1]<B[1][1] || x[1]==B[0][1] || x[1]==B[1][1]){ if(x[2]>B[0][2] && x[2]<B[1][2] || x[2]==B[0][2]|| x[2]==B[1][2]) min=d2; } } else min=d3; } } if(min==d1){ if(x[0]>A[0][0] && x[0]<A[1][0] || x[0]==A[0][0] || x[0]==A[1][0]){ if(x[1]>A[0][1] && x[1]<A[1][1] || x[1]==A[0][1] || x[1]==A[1][1]){ if(x[2]>A[0][2] && x[2]<A[1][2] || x[2]==A[0][2] || x[2]==A[1][2]){ s1=pow(A[0][0]-x[0],2)+pow(A[0][1]-x[1],2)+pow(A[0][2]-x[2],2); s2=pow(A[1][0]-x[0],2)+pow(A[1][1]-x[1],2)+pow(A[1][2]-x[2],2); s3=pow(A[1][0]-A1[0],2)+pow(A[1][1]-A1[1],2)+pow(A[1][2]-A1[2],2); k=s3/50; if(s1<s2){ V=s1/k; cout<<"1.1\n"; cout<<"Vidsotok pohubku "<<V<<endl; } if(s1>s2){ V=s2/k; cout <<"1.2\n"; cout<<"Vidsook pohubku "<<V<<endl; } if (s1==s2){ V=s3/k; cout<<"Vidsook pohubku "<<V<<endl; for (int i=0; i<3; i++){ if(x[i]>A1[i]) b=b+1; if (x[i]==A1[i]) r=r+1; if (x[i]<A1[i]) m=m+1; } if (b>=2 && m<2) cout<<"1.1\n"; if (m>=2 && b<2) cout<<"1.2\n"; if (r>=2 && b<2 && m<2) cout<<"1.1 abo 1.2\n"; } } } } } else if(min==d2){ if(x[0]>B[0][0] && x[0]<B[1][0] || x[0]==B[0][0] || x[0]==B[1][0]){ if(x[1]>B[0][1] && x[1]<B[1][1] || x[1]==B[0][1] || x[1]==B[1][1]){ if(x[2]>B[0][2] && x[2]<B[1][2] || x[2]==B[0][2] || x[2]==B[1][2]){ s1=pow(B[0][0]-x[0],2)+pow(B[0][1]-x[1],2)+pow(B[0][2]-x[2],2); s2=pow(B[1][0]-x[0],2)+pow(B[1][1]-x[1],2)+pow(B[1][2]-x[2],2); s3=pow(B[1][0]-B1[0],2)+pow(B[1][1]-B1[1],2)+pow(B[1][2]-B1[2],2); if(s1<s2){ V=s1/k; cout<<"2.1\n"; cout<<"Vidsotok pohubku "<<V<<endl; } if(s1>s2){ V=s2/k; cout <<"2.2\n"; cout<<"Vidsook pohubku "<<V<<endl; } if (s1==s2){ V=s3/k; cout<<"Vidsook pohubku "<<V<<endl; for (int i=0; i<3; i++){ if(x[i]>B1[i]) b=b+1; if (x[i]==B1[i]) r=r+1; if (x[i]<B1[i]) m=m+1; } if (b>=2 && m<2) cout<<"1.1\n"; if (m>=2 && b<2) cout<<"1.2\n"; if (r>=2 && b<2 && m<2) cout<<"1.1 abo 1.2\n"; } } } } } else if(min==d3){ if(x[0]>C[0][0] && x[0]<C[1][0] || x[0]==C[0][0] || x[0]==C[1][0]){ if(x[1]>=C[0][1] && x[1]<C[1][1] || x[1]==C[0][1] || x[1]==C[1][1]){ if(x[2]>C[0][2] && x[2]<C[1][2] || x[2]==C[0][2] || x[2]==C[1][2]){ s1=pow(C[0][0]-x[0],2)+pow(C[0][1]-x[1],2)+pow(C[0][2]-x[2],2); s2=pow(C[1][0]-x[0],2)+pow(C[1][1]-x[1],2)+pow(C[1][2]-x[2],2); s3=pow(C[1][0]-C1[0],2)+pow(C[1][1]-C1[1],2)+pow(C[1][2]-C1[2],2); if(s1<s2){ V=s1/k; cout<<"3.1\n"; cout<<"Vidsotok pohubku "<<V<<endl; } if(s1>s2){ V=s2/k; cout <<"3.2\n"; cout<<"Vidsook pohubku "<<V<<endl; } if (s1==s2){ V=s3/k; cout<<"Vidsook pohubku "<<V<<endl; for (int i=0; i<3; i++){ if(x[i]>C1[i]) b=b+1; if (x[i]==C1[i]) r=r+1; if (x[i]<C1[i]) m=m+1; } if (b>=2 && m<2) cout<<"1.1\n"; if (m>=2 && b<2) cout<<"1.2\n"; if (r>=2 && b<2 && m<2) cout<<"1.1 abo 1.2\n"; } } } } } else cout<<"0"; getch(); return 0; } Висновок: під час виконання лабораторної роботи навчилася проектувати системи розпізнавання образів на прикладі системи розпізнавання літаків.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!