69776

Розробка системи розпізнавання двох об’єктів розпізнавання образів

Лабораторная работа

Информатика, кибернетика и программирование

Мета роботи: Вивчити основні принципи роботи алгоритму розпізнавання образів Hamming classification. Пояснення Хемінгової мережі та її класифікація: задаємо фігури у вигляді координат ,задаємо їх колір(розмір) та запускаємо програму.

Украинкский

2014-10-10

402 KB

3 чел.

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД

КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ

імені ВАДИМА ГЕТЬМАНА

Кафедра інформаційних систем в економіці

СИСТЕМИ РОЗПІЗНАВАННЯ ОБРАЗІВ

ЗВІТ

з лабораторної роботи № 3

«Розробка системи розпізнавання двох обєктів розпізнавання образів»


Підготував:

студент 5 курсу

спеціальності 8404

“ Інтелектуальні системи  прийняття рішень”



Прийняв:
Доц.Іванченко Г.Ф.

Київ 2011

Лабораторна робота №1

Тема роботи: РОЗРОБКА СИСТЕМИ РОЗПІЗНАВАННЯ ДВОХ ОБЄКТІВ РОЗПІЗНАВАННЯ ОБРАЗІВ.

Мета роботи: Вивчити основні принципи роботи алгоритму розпізнавання образів Hamming classification.

Пояснення Хемінгової мережі та її класифікація: задаємо фігури у вигляді координат ,задаємо їх колір(розмір) та запускаємо програму.

Мережа Хемінга

Мережа Хемінга (Hamming) є розширенням мережі Хопфілда. Ця мережа була розроблена Річардом Ліппманом (Richard Lippman) у середині 80-х рр. Мережа Хемінга реалізує класифікатор, що базується на найменшій похибці для векторів двійкових входів, де похибка визначається відстанню Хемінга. Відстань Хемінга визначається як число бітів, які відрізняються між двома відповідними вхідними векторами фіксованої довжини. Один вхідний вектор є незашумленим прикладом образу, інший є спотвореним образом. Вектор виходів навчальної множини є вектором класів, до яких належать образи. У режимі навчання вхідні вектори розподіляються до категорій для яких відстань між зразковими вхідними векторами та біжучим вхідним вектором є мінімальною.

Мережа Хемінга має три прошарки: вхідний прошарок з кількістю вузлів, скільки є окремих двійкових ознак; прошарок категорій (прошарок Хопфілда), з кількістю вузлів, скільки є категорій або класів; вихідний прошарок, який відповідає числу вузлів у прошарку категорій.

Мережа є простою архітектурою прямого поширення з вхідним рівнем, повністю під'єднаним до прошарку категорій. Кожен елемент обробки у прошарку категорій є зворотно під'єднаним до кожного нейрона у тому ж самому прошарку і прямо під'єднаним до вихідного нейрону. Вихід з прошарку категорій до вихідного прошарку формується через конкуренцію.

Навчання мережі Хемінга є подібним до методології Хопфілда. На вхідний прошарок надходить бажаний навчальний образ, а на виході вихідного прошарку надходить значення бажаного класу, до якого належить вектор. Вихід містить лише значення класу до якої належить вхідний вектор. Рекурсивний характер прошарку Хопфілда забезпечує засоби корекції всіх ваг з'єднань.

Рис. 11. Структурна схема мережі Хемінга

Алгоритм функціонування мережі Хемінга

  1.  На стадії ініціалізації ваговим коефіцієнтам першого прошарку і порогу передатної функції присвоюються такі значення:

Wik=xIk/2, i=0...n-1, k=0...m-1

bk = n / 2, k = 0...m-1

Тут xik - i-ий елемент k-ого зразка.

Вагові коефіцієнти гальмуючих синапсів у другому прошарку беруть рівними деякій величині 0 < v < 1/m. Синапс нейрона, пов'язаний із його ж виходом має вагу +1.

  1.  На входи мережі подається невідомий вектор x1, xi, xn ...Розраховуються стани нейронів першого прошарку (верхній індекс у скобках указує номер прошарку):

, j=0...m-1

Після цього отримання значення ініціалізують значення виходів другого прошарку:

yj(2) = yj(1), j = 0...m-1

  1.  Обчислюються нові стани нейронів другого прошарку:

і значення їх виходів:

Передатна функція f має вид порога, причому величина b повинна бути достатньо великою, щоб будь-які можливі значення аргументу не призводили до насичення.

  1.  Перевіряється, чи змінилися виходи нейронів другого прошарку за останню ітерацію. Якщо так - перейти до кроку 3. Інакше - кінець.

Роль першого прошарку є умовною: скориставшись один раз на першому кроці 1 значеннями його вагових коефіцієнтів, мережа більше не вертається до нього, тому перший прошарок може бути взагалі виключений із мережі.

Мережа Хемінга має ряд переваг над мережею Хопфілда. Вона реалізує оптимальний класифікатор мінімуму похибки, якщо похибки вхідних бітів є випадковими та незалежними. Для функціонування мережі Хемінга потрібна менша кількість нейронів, оскільки середній прошарок вимагає лише один нейрон на клас, замість нейрону на кожен вхідний вузол. І, нарешті, мережа Хемінга не страждає від неправильних класифікацій, які можуть трапитись у мережі Хопфілда. В цілому, мережа Хемінга є як швидшою, так і точнішою за мережу Хопфілда.

Задаємо фігури у системі координат:

% Figure ID, COLOR & SHAPE

 

  if (rand > 0.25)

   % Pentagon

   Figure_id = 3;

   Figure_x =   [0 0  5  10 10];

   Figure_y = 2+[0 10 15 10  0];

   Figure_c = nnblue;

   p1 = 1;

   p2 = 1;

 elseif (rand > 0.5)

   % Rhombus

   Figure_id = 1;

   Figure_x =   [0 10 20 10];

   Figure_y = 7+[0 10 0 -10];

   Figure_c = nnred;

   p1 = 0;

   p2 = 0;

 else

   % Trapeze

   Figure_id = 2;

   Figure_x =   [0 5  15 20];

   Figure_y = 2+[0 10 10 0];

   Figure_c = nngreen

   p1 = 0;

   p2 = 0;

 end

Текст програми:

function nnd13hd(cmd,arg1,arg2,arg3)

%NND13HD Hebb with decay demonstration.

%

%  This demonstration requires either the MININNET functions

%  on the NND disk or the Neural Network Toolbox.

 

% $Revision: 1.7.2.2 $

% Copyright 1994-2008 PWS Publishing Company and The MathWorks, Inc.

% First Version, 8-31-95.

 

%==================================================================

 

% CONSTANTS

me = 'nnd13hd';

Fs = 8192;

pause1 = 0.7;

pause2 = 0.1;

 

% DEFAULTS

if nargin == 0, cmd = ''; else cmd = lower(cmd); end

 

% FIND WINDOW IF IT EXISTS

fig = nndfgflg(me);

if length(get(fig,'children')) == 0, fig = 0; end

 

% GET WINDOW DATA IF IT EXISTS

if fig

 H = get(fig,'userdata');

 fig_axis = H(1);         % window axis

 desc_text = H(2);        % handle to first line of text sequence

 lines = H(3:4);          % belt circle lines

 Figure_indicator = H(5);  % Figure entrance indicator

 top_indicator = H(6);    % top exit indicator

 bottom_indicator = H(7); % bottom exit indicator;

 sounds = H(8:15);        % pointers to sounds

 angle_ptr = H(16);       % angle (deg) of lines in conveyor ends

 Figure_ptr = H(17);       % pointer to Figure shape

 arrows = H(21:22);       % handles to arrows

 rb1 = H(23);             % Working radio button

 rb2 = H(24);             % Not working radio button

 cross = H(25);           % Not working cross

 p1_ptr = H(26);          % Input #1

 p2_ptr = H(27);          % Input #2

 a_ptr = H(28);           % Output

 W2_ptr = H(29);          % Weights #2

 p1_box = H(30);

 p1_text = H(31);

 p2_box = H(32);

 p2_text = H(33);

 a_box = H(34);

 a_text = H(35);

 go_button = H(36);

 mode_ptr = H(37);

 W2_box = H(38);

 W2_text = H(39);

 n_box = H(40);

 n_text = H(41);

 mode = get(mode_ptr,'userdata');

end

 

%==================================================================

% Activate the window.

%

% ME() or ME('')

%==================================================================

 

if strcmp(cmd,'')

 if fig

   figure(fig)

   set(fig,'visible','on')

 else

   feval(me,'init')

 end

 

%==================================================================

% Close the window.

%

% ME() or ME('')

%==================================================================

 

elseif strcmp(cmd,'close') & (fig)

 delete(fig)

 

%==================================================================

% Initialize the window.

%

% ME('init')

%==================================================================

 

elseif strcmp(cmd,'init') & (~fig)

 

 % CHECK FOR TRANSFER FUNCTIONS

 if ~nnfexist(me), return, end

 

 % NEW DEMO FIGURE

 fig = nndemof2(me,'Безродний А.М., КН-IV-2','','','Chapter 13');

 

 set(fig, ...

   'windowbuttondownfcn',nncallbk(me,'down'), ...

   'BackingStore','off',...

   'nextplot','add');

 H = get(fig,'userdata');

 fig_axis = H(1);

 desc_text = H(2);

 

 % SOUND POINTERS

 wind = uicontrol('visible','off','userdata',nndsnd(3));

 knock = uicontrol('visible','off','userdata',nndsnd(5));

 scan = uicontrol('visible','off','userdata',nndsnd(1));

 classify = uicontrol('visible','off','userdata',nndsnd(4));

 blip = uicontrol('visible','off','userdata',nndsnd(6));

 bloop = uicontrol('visible','off','userdata',nndsnd(7));

 blp = uicontrol('visible','off','userdata',nndsnd(9));

 tribble = uicontrol('visible','off','userdata',nndsnd(8));

 

 % ICON

 nndicon(13,458,363,'shadow')

 

 % CONVEYOR BELT

 deg = pi/180;

 angle = [0:5:360]*deg;

 cx = cos(angle);

 cy = sin(angle);

 

 % ENTRANCE BOX

 x = 60;

 y = 20;

 fill([0 0 x+10 x+10],y+[70 50 50 70],nndkblue,...

   'edgecolor','none')

 fill(x+[10 10 50 50],y+[80 40 40 80],nndkblue,...

   'edgecolor','none')

 plot([0 x+[10 10 50 50 10 10] 0],...

   y+[50 50 40 40 80 80 70 70],...

   'color',nnred)

 left_arrow = fill(x+30+[-5 -5 -10 0 10 5 5],y+60+[15 5 5 -15 5 5 15],nndkblue,...

   'edgecolor',nnred,...

   'CreateFcn','');

 Figure_ind = text(x-25,y+60,'Figure',...

   'color',[0.8 0.8 0],...

   'fontweight','bold',...

   'horiz','center',...

   'CreateFcn','');

 

 % LEFT CIRCLE

 line_angle = 45*deg;

 fill(x-10+cx*10,y+10+cy*10,nnred,...

   'edgecolor',nndkblue,...

   'linewidth',2)

 line_1 = plot(x-10+cos([0 pi]+line_angle)*8,y+10+sin([0 pi]+line_angle)*8,...

   'color',nndkblue,...

   'CreateFcn','',...

   'linewidth',2);

 

 % RIGHT CIRCLE

 x = 320;

 fill(x+10+cx*10,y+10+cy*10,nnred,...

   'edgecolor',nndkblue,...

   'linewidth',2)

 line_2 = plot(x+10+cos([0 pi]+line_angle)*8,y+10+sin([0 pi]+line_angle)*8,...

   'color',nndkblue,...

   'CreateFcn','',...

   'linewidth',2);

 

 % BELT

 plot([50 330],[y y]+20,...

   'color',nndkblue,...

   'linewidth',2)

 plot([50 330],[y y],...

   'color',nndkblue,...

   'linewidth',2)

 

 % SENSOR BOX #1

 x = 140;

 fill(x+[0 40 20],y+[40 40 80],nndkblue,...

   'edgecolor',nnred)

 fill(x+[0 40 40 0],y+[14 14 8 8],nndkblue,...

   'edgecolor',nnred)

 cross = plot(x+[15 25 20 25 15],y+[50 60 55 50 60],...

   'color',nndkblue,...

   'linewidth',3,...

   'CreateFcn','');

 

 % SENSOR BOX #2

 x = 200;

 fill(x+[0 40 20],y+[40 40 80],nndkblue,...

   'edgecolor',nnred)

 fill(x+[0 40 40 0],y+[14 14 8 8],nndkblue,...

   'edgecolor',nnred)

 

 % EXIT BOX

 x = 320;

 fill([x-10 x-10 380 380],y+[80 62 62 80],nndkblue,...

   'edgecolor','none')

 fill([x-10 x-10 380 380],y+[40 58 58 40],nndkblue,...

   'edgecolor','none')

 fill(x-[10 10 50 50],y+[80 40 40 80],nndkblue,...

   'edgecolor','none')

 plot([378 x-[50 50] 378],y+[80 80 40 40],...

   'color',nnred)

 plot([378 x-[10 10] 378],y+[62 62 58 58],...

   'color',nnred)

 right_arrow = fill(x-30+[-5 -5 -10 0 10 5 5],y+60-[15 5 5 -15 5 5 15],nndkblue,...

   'edgecolor',nnred,...

   'CreateFcn','');

 top_ind = text(x+23,y+71,'П`ятикутник',...

   'color',[0.8 0.8 0],...

   'fontweight','bold',...

   'horiz','center',...

   'CreateFcn','');

 bottom_ind = text(x+18,y+48,'Ромб/трапеція',...

   'color',[0.8 0.8 0],...

   'fontweight','bold',...

   'horiz','center',...

   'CreateFcn','');

 

 % BUTTONS

 go_button = uicontrol(...

   'units','points',...

   'position',[400 165 60 20],...

   'string','Фігура',...

   'callback',[me '(''go'')']);

 uicontrol(...

   'units','points',...

   'position',[400 130 60 20],...

   'string','Обновити',...

   'callback',[me '(''clear'')'])

 uicontrol(...

   'units','points',...

   'position',[400 95 60 20],...

   'string','Зміст',...

   'callback','nndtoc')

 uicontrol(...

   'units','points',...

   'position',[400 60 60 20],...

   'string','Закрити',...

   'callback',[me '(''close'')'])

 

 % LOWER SEPARATION BAR

 fill([0 0 380 380],130+[0 4 4 0],nndkblue,...

   'edgecolor','none')

 

 % UPPER SEPARATION BAR

 fill([0 0 380 380],160+[0 4 4 0],nndkblue,...

   'edgecolor','none')

 

 % RADIO BUTTONS

 set(nndtext(20,147,'Сканування:','left'),...

   'fontsize',12)

 rb1 = uicontrol(...

   'units','points',...

   'position',[140 139 100 20],...

   'string','Працює',...

   'style','radio',...

   'value',1,...

   'callback',[me '(''working'')']);

 rb2 = uicontrol(...

   'units','points',...

   'position',[250 139 100 20],...

   'string','Непрацює',...

   'style','radio',...

   'callback',[me '(''notworking'')']);

 

 W1 = 1;

 W2 = 0;

 set(fig,'nextplot','add')

 

 % NETWORK INPUT #1

 x1 = 70;

 y1 = 310;

 dy1 = 55;

 nndtext(x1+1,y1+10,'П`ятикутник  ','right');

 nndtext(x1-10,y1-10,'Shape?','right');

 p1_box = fill(x1+[0 20 20 0 0],y1-10+[0 0 20 20 0],nnltgray,...

   'edgecolor',nnred,...

   'linewidth',2,...

   'CreateFcn','');

 p1_text = nndtext(x1+10,y1,'?');

 set(p1_text,'CreateFcn','');

 

 % NETWORK INPUT #2

 y3 = y1-2*dy1;

 dy3 = 20;

 nndtext(x1-5,y3+10,'П`ятикутник','right');

 nndtext(x1-10,y3-10,'Колір?','right');

 p2_box = fill(x1+[0 20 20 0 0],y3-10+[0 0 20 20 0],nnltgray,...

   'edgecolor',nnred,...

   'linewidth',2,...

   'CreateFcn','');

 p2_text = nndtext(x1+10,y3,'?');

 set(p2_text,'CreateFcn','');

 

 % NEURON

 x2 = x1+165;

 y2 = y1-dy1;

 sumdist = 50;

 sz = 15;

 plot(x2+[0 0 sumdist],y2+[-25 0 0],'linewidth',2,'color',nnred);

 plot(x2-20+[0 40 40 0 0],y2-45+[0 0 20 20 0],'color',nnred,'linewidth',2);

 plot(x2+[0 0],y2+[-45 -55],'linewidth',2,'color',nnred);

 plot(x2+sumdist+sz+[20 30 0 30 20],y2+[10 0 0 0 -10],'linewidth',2,'color',nnred);

 nndtext(x2+sumdist+sz+45,y2+30,'П`ятикутник?   ');

 nndsicon('sum',x2,y2,sz)

 nndsicon('hardlim',x2+sumdist,y2,sz)

 nndtext(x2,y2-36,'-0.5');

 nndtext(x2,y2-66,'1');

 a_box = fill(x2+sumdist+sz+35+[0 20 20 0 0],y2-10+[0 0 20 20 0],nnltgray,...

   'edgecolor',nnred,...

   'linewidth',2,...

   'CreateFcn','');

 a_text = nndtext(x2+sumdist+sz+45,y2,'?');

 set(a_text,'CreateFcn','');

 

 % NET INPUT

 n_box = fill(x2+5+[0 40 40 0 0],y2+30+[0 0 20 20 0],nnltgray,...

   'edgecolor',nnred,...

   'linewidth',2,...

   'CreateFcn','');

 n_text = nndtext(x2+25,y2+40,'?');

 plot(x2+25+[0 0],y2+[30 0],':','linewidth',2,'color',nnred);

 

 % WEIGHTS #1

 straight = 95;

 plot([x1+20 x1+straight-50],[y1 y1],'linewidth',2,'color',nnred);

 plot([x1+straight-10 x1+straight x2-sz],[y1 y1 y2],'linewidth',2,'color',nnred);

 plot(x1+straight-50+[0 40 40 0 0],y1-10+[0 0 20 20 0],'color',nnred,'linewidth',2);

 nndtext(x1+straight-30,y1,'1');

 

 % WEIGHTS #2

 straight_dist = 100;

 plot([x1+20 x1+straight-50],[y3 y3],'linewidth',2,'color',nnred);

 plot([x1+straight-10 x1+straight x2-sz],[y3 y3 y2],'linewidth',2,'color',nnred);

 W2_box = fill(x1+straight-50+[0 40 40 0 0],y3-10+[0 0 20 20 0],nnltgray,...

   'edgecolor',nnred,...

   'linewidth',2,...

   'CreateFcn','');

 W2_text = nndtext(x1+straight-30,y3,sprintf('%5.2f',W2));

 

 % INPUT HEADING

 temp = nndtext(x1+10,y1+30,'Вхід');

 

 % WEIGHT HEADING

 nndtext(x1+straight_dist-35,y1+30,'Ваги');

 

 % SCANNER NAMES

 set(nndtext(160,120,'П`ятикутник'),...

   'fontsize',10)

 set(nndtext(160,110,'Shape?'),...

   'fontsize',10)

 set(nndtext(230,120,'П`ятикутник'),...

   'fontsize',10)

 set(nndtext(230,110,'Колір?'),...

   'fontsize',10)

 

 % SAVE WINDOW DATA AND LOCK

 angle_ptr = uicontrol('visible','off','userdata',line_angle);

 Figure_ptr = uicontrol('visible','off','userdata',[]);

 

 p1_ptr = uicontrol('visible','off','userdata',[]);

 p2_ptr = uicontrol('visible','off','userdata',[]);

 a_ptr = uicontrol('visible','off','userdata',[]);

 W2_ptr = uicontrol('visible','off','userdata',W2);

 W2_ptr = uicontrol('visible','off','userdata',W2);

 mode_ptr = uicontrol('visible','off','userdata',1);

 

 H = [fig_axis, ...

      desc_text, ...

      line_1 line_2, ...

      Figure_ind top_ind bottom_ind, ...

      wind knock scan classify blip bloop blp tribble, ...

      angle_ptr Figure_ptr 0 0 0, ...

      left_arrow right_arrow,rb1 rb2 cross, ...

      p1_ptr p2_ptr a_ptr W2_ptr,...

      p1_box p1_text p2_box p2_text a_box a_text,...

      go_button mode_ptr W2_box W2_text,...

      n_box n_text];

 

 set(fig,'userdata',H,'nextplot','new')

 

 % INSTRUCTION TEXT

 feval(me,'instr');

 

 % LOCK WINDOW

 set(fig,...

  'nextplot','new',...

  'color',nnltgray);

 

 nnchkfs;

 

%==================================================================

% Display the instructions.

%

% ME('instr')

%==================================================================

 

elseif strcmp(cmd,'instr') & (fig)

 nnsettxt(desc_text,...

   'Натисніть [Фігура] і відправте',...

   'a Figure down the belt',...

   'to be recognized.',...

   'Натисніть [Обновити] to apply',...

   'the Hebb w/decay rule.',...

   '',...

   'Because of weight',...

   'decay the weight will',...

   'never exceed a value',...

   'of 2.0.')

   

%==================================================================

% Respond to Figure.

%

% ME('Figure')

%==================================================================

 

elseif strcmp(cmd,'go') & (fig) & (nargin == 1) & (mode == 1);

 

 % GET DATA

 wind = get(sounds(1),'userdata');

 knock = get(sounds(2),'userdata');

 scan = get(sounds(3),'userdata');

 classify = get(sounds(4),'userdata');

 blip = get(sounds(5),'userdata');

 bloop = get(sounds(6),'userdata');

 blp = get(sounds(7),'userdata');

 tribble = get(sounds(8),'userdata');

 angle = get(angle_ptr,'userdata');

 Figure = get(Figure_ptr,'userdata');

 axes(fig_axis);

 

 % NEW Figure

 nnpause(pause1)

 x = 82;

 y = 42;

 

 % Figure ID, COLOR & SHAPE

 

  if (rand > 0.25)

   % Pentagon

   Figure_id = 3;

   Figure_x =   [0 0  5  10 10];

   Figure_y = 2+[0 10 15 10  0];

   Figure_c = nnblue;

   p1 = 1;

   p2 = 1;

 elseif (rand > 0.5)

   % Rhombus

   Figure_id = 1;

   Figure_x =   [0 10 20 10];

   Figure_y = 7+[0 10 0 -10];

   Figure_c = nnred;

   p1 = 0;

   p2 = 0;

 else

   % Trapeze

   Figure_id = 2;

   Figure_x =   [0 5  15 20];

   Figure_y = 2+[0 10 10 0];

   Figure_c = nngreen

   p1 = 0;

   p2 = 0;

 end

 

 % FLASH Figure INDICATOR TWICE

 set(fig,'nextplot','add')

 nnsound(blip,Fs);

 set(Figure_indicator,...

   'color',[1 1 1])

 box = plot([10 60 60 10 10],[72 72 88 88 72],...

   'color',[1 1 1],...

   'CreateFcn','');

 

 nnpause(pause2)

 nnsound(bloop,Fs);

 set(Figure_indicator,...

   'color',[0.8 0.8 0])

 set(box,...

   'color',nndkblue)

 delete(box)

 nnpause(pause2)

 

 set(arrows(1),...

   'facecolor',nnred)

 t1 = clock;

 nnsound(wind,Fs);

 while etime(clock,t1) < 1, end

 nnpause(pause2)

 set(arrows(1),...

   'facecolor',nndkblue)

 

 set(Figure_indicator,...

   'color',[0.8 0.8 0])

 

 % CREATE Figure

 Figure = fill(x+Figure_x,y+Figure_y,Figure_c,...

   'edgecolor',Figure_c*0.5,...

   'CreateFcn','');

 set(fig,'nextplot','new')

 nnsound(knock,Fs);

 nnpause(pause2)

 

 % MOVE Figure TO SENSOR #1

 deg = pi/180;

 for dx=10:10:70

   t1 = clock;

   nnsound(blp,Fs);

   set(Figure,...

     'facecolor',nnltgray,...

     'edgecolor',nnltgray);

   set(Figure,...

     'facecolor',Figure_c,...

     'edgecolor',Figure_c*0.5,...

     'xdata',Figure_x + x + dx)

   angle = angle + 20;

   adata = [0 pi]-angle*deg;

   xdata = cos(adata)*8;

   ydata = sin(adata)*8+30;

   set(lines,'color',nnred);

   set(lines(1),...

     'xdata',xdata+50,...

     'ydata',ydata,...

     'color',nndkblue)

   set(lines(2),...

     'xdata',xdata+330,...

     'ydata',ydata,...

     'color',nndkblue)

   while etime(clock,t1) < 0.1, end

 end

 

 % SCAN Figure #1

 nnpause(pause2)

 working = get(rb1,'value');

 set(fig,'nextplot','add')

 if (working)

   h1 = fill(10+[170 130 130 170],[35 35 39 39],[1 1 1],...

     'edgecolor','none',...

     'CreateFcn','');

   h2 = fill(10+[170 130 130 170],[41 41 58 58],[1 1 1],...

     'edgecolor','none',...

     'CreateFcn','');

   set(Figure,...

    'facecolor',[1 1 1])

   t1 = clock;

   nnsound(scan,Fs);

   while etime(clock,t1) < 1; end

 else

   t1 = clock;

   nnsound(tribble,Fs);

   while etime(clock,t1) < 1, end

   p1 = 0;

 end

 

 t1 = clock;

 set(p1_box,'facecolor',[1 1 1]);

 set(p1_text,'color',nndkblue);

 nnsound(blip,Fs);

 while etime(clock,t1) < 1; end

 t1 = clock;

 set(p1_box,'facecolor',nnltgray);

 set(p1_text,'string',num2str(p1),'color',nndkblue);

 nnsound(bloop,Fs);

 while etime(clock,t1) < 1; end

 

 if (working)

   set(h1,'facecolor',nnltgray)

   set(h2,'facecolor',nnltgray)

   delete(h1)

   delete(h2)

   set(Figure,...

     'facecolor',Figure_c)

   set(fig,'nextplot','new')

 end

 nnpause(pause2)

 

 % MOVE Figure TO SENSOR #2

 deg = pi/180;

 for dx=80:10:130

   t1 = clock;

   nnsound(blp,Fs);

   set(Figure,...

     'facecolor',nnltgray,...

     'edgecolor',nnltgray);

   set(Figure,...

     'facecolor',Figure_c,...

     'edgecolor',Figure_c*0.5,...

     'xdata',Figure_x + x + dx)

   angle = angle + 20;

   adata = [0 pi]-angle*deg;

   xdata = cos(adata)*8;

   ydata = sin(adata)*8+30;

   set(lines,'color',nnred);

   set(lines(1),...

     'xdata',xdata+50,...

     'ydata',ydata,...

     'color',nndkblue)

   set(lines(2),...

     'xdata',xdata+330,...

     'ydata',ydata,...

     'color',nndkblue)

   while etime(clock,t1) < 0.1, end

 end

 

 % SCAN Figure #2

 nnpause(pause2)

 set(fig,'nextplot','add')

 h1 = fill(70+[170 130 130 170],[35 35 39 39],[1 1 1],...

   'edgecolor','none',...

   'CreateFcn','');

 h2 = fill(70+[170 130 130 170],[41 41 58 58],[1 1 1],...

   'edgecolor','none',...

   'CreateFcn','');

 set(Figure,...

  'facecolor',[1 1 1])

 

 t1 = clock;

 nnsound(scan,Fs);

 while etime(clock,t1) < 1, end

 

 t1 = clock;

 set(p2_box,'facecolor',[1 1 1]);

 set(p2_text,'color',nndkblue);

 nnsound(blip,Fs);

 while etime(clock,t1) < 1; end

 t1 = clock;

 set(p2_box,'facecolor',nnltgray);

 set(p2_text,'string',num2str(p2),'color',nndkblue);

 nnsound(bloop,Fs);

 while etime(clock,t1) < 1; end

 

 set(h1,'facecolor',nnltgray)

 set(h2,'facecolor',nnltgray)

 delete(h1)

 delete(h2)

 set(Figure,...

   'facecolor',Figure_c)

 set(fig,'nextplot','new')

 nnpause(pause2)

 

 % CLASSIFY Figure

 W2 = get(W2_ptr,'userdata');

 n = p1+W2*p2-0.5;

 a = hardlim(n);

 if (a == 1)

   result = 1;

 else

   result = 2;

 end

 

 t1 = clock;

 set(n_box,'facecolor',[1 1 1]);

 set(n_text,'color',nndkblue);

 nnsound(blip,Fs);

 while etime(clock,t1) < 1; end

 t1 = clock;

 set(n_box,'facecolor',nnltgray);

 set(n_text,'string',sprintf('%5.2f',n),'color',nndkblue);

 nnsound(bloop,Fs);

 while etime(clock,t1) < 1; end

 

 t1 = clock;

 set(a_box,'facecolor',[1 1 1]);

 set(a_text,'color',nndkblue);

 nnsound(blip,Fs);

 while etime(clock,t1) < 1; end

 t1 = clock;

 set(a_box,'facecolor',nnltgray);

 set(a_text,'string',num2str(a),'color',nndkblue);

 nnsound(bloop,Fs);

 while etime(clock,t1) < 1; end

 

 % MOVE DATA FROM NETWORK TO EXIT

 if (result == 1)

   indicator = top_indicator;

   box_x = 84;

 else

   indicator = bottom_indicator;

   box_x = 62;

 end

 set(indicator,...

   'color',[1 1 1])

 axes(fig_axis)

 set(fig,'nextplot','add')

 box = plot([0 62 62 0 0]+314,[0 0 14 14 0]+box_x,...

   'color',[1 1 1],...

   'CreateFcn','');

 

 nnpause(pause2);

 nnsound(bloop,Fs);

 

 % MOVE Figure TO EXIT

 for dx=140:10:200

   t1 = clock;

   nnsound(blp,Fs);

   set(Figure, ...

     'facecolor',nnltgray, ...

     'edgecolor',nnltgray);

   set(Figure, ...

     'facecolor',Figure_c, ...

     'edgecolor',Figure_c*0.5, ...

     'xdata',Figure_x + x + dx)

   angle = angle + 20;

   adata = [0 pi]-angle*deg;

   xdata = cos(adata)*8;

   ydata = sin(adata)*8+30;

   set(lines,'color',nnred);

   set(lines(1),...

     'xdata',xdata+50,...

     'ydata',ydata,...

     'color',nndkblue)

   set(lines(2),...

     'xdata',xdata+330,...

     'ydata',ydata,...

     'color',nndkblue)

   while etime(clock,t1) < 0.1, end

 end

 

 % REMOVE Figure

 nnpause(pause1)

 nnsound(blip,Fs);

 set(Figure,...

   'facecolor',nnltgray,...

   'edgecolor',nnltgray);

 delete(Figure)

 set(arrows(2),...

   'facecolor',nnred)

 nnsound(wind,Fs);

 set(arrows(2),...

   'facecolor',nndkblue)

 

 % UNLIGHT APPROPRIATE INDICATOR

 nnpause(pause1)

 nnsound(bloop,Fs);

 set(indicator,...

   'color',[0.8 0.8 0])

 set(box,...

   'color',nndkblue)

 delete(box)

 set(fig,'nextplot','new')

 

 % CHANGE GO BUTTON

 set(go_button,'string','Update');

 set(mode_ptr,'userdata',2);

 

 % SAVE DATA

 set(angle_ptr,'userdata',angle);

 set(Figure_ptr,'userdata',Figure);

 set(p1_ptr,'userdata',p1);

 set(p2_ptr,'userdata',p2);

 set(a_ptr,'userdata',a);  

 

%==================================================================

% Respond to Figure.

%

% ME('update')

%==================================================================

 

elseif strcmp(cmd,'go') & (fig) & (nargin == 1) & (mode == 2);

 

 % GET DATA

 blip = get(sounds(5),'userdata');

 bloop = get(sounds(6),'userdata');

 p2 = get(p2_ptr,'userdata');

 W2 = get(W2_ptr,'userdata');

 a = get(a_ptr,'userdata');

 

 % UPDATE WEIGHT

 W2 = W2 + 0.2*a*p2'-0.1*W2;

 if (W2 >= 10)

   W2_str = '>=10';

 else

   W2_str = sprintf('%5.2f',W2);

 end

 

 t1 = clock;

 set(W2_box,'facecolor',[1 1 1]);

 set(W2_text,'color',nndkblue);

 nnsound(blip,Fs);

 while etime(clock,t1) < 1; end

 t1 = clock;

 set(W2_box,'facecolor',nnltgray);

 set(W2_text,'string',W2_str,'color',nndkblue);

 nnsound(bloop,Fs);

 while etime(clock,t1) < 1; end

   % CLEAR INPUT AND OUTPUT

 set(p1_text,'color',nnltgray);

 set(p2_text,'color',nnltgray);

 set(a_text,'color',nnltgray);

 set(n_text,'color',nnltgray);

 set(p1_text,'color',nndkblue,'string','?');

 set(p2_text,'color',nndkblue,'string','?');

 set(a_text,'color',nndkblue,'string','?');

 set(n_text,'color',nndkblue,'string','?');

   % CHANGE GO BUTTON

 set(go_button,'string','Figure');

 set(mode_ptr,'userdata',1);

  % SAVE DATA

 set(W2_ptr,'userdata',W2);

 

%==================================================================

% Clear weights.

%

% ME('clear')

%==================================================================

 

elseif strcmp(cmd,'clear') & (fig) & (nargin == 1)

 

 % GET DATA

 blip = get(sounds(5),'userdata');

 bloop = get(sounds(6),'userdata');

 

 % CLEAR WEIGHT

 W2 = 0;

 

 t1 = clock;

 set(W2_box,'facecolor',[1 1 1]);

 set(W2_text,'color',nndkblue);

 nnsound(blip,Fs);

 while etime(clock,t1) < 1; end

 t1 = clock;

 set(W2_box,'facecolor',nnltgray);

 set(W2_text,'string',sprintf('%5.2f',W2),'color',nndkblue);

 nnsound(bloop,Fs);

 while etime(clock,t1) < 1; end

 

 % CLEAR INPUT AND OUTPUT

 set(p1_text,'color',nnltgray);

 set(p2_text,'color',nnltgray);

 set(a_text,'color',nnltgray);

 set(n_text,'color',nnltgray);

 set(p1_text,'color',nndkblue,'string','?');

 set(p2_text,'color',nndkblue,'string','?');

 set(a_text,'color',nndkblue,'string','?');

 set(n_text,'color',nndkblue,'string','?');

   % CHANGE GO BUTTON

 set(go_button,'string','Figure');

 set(mode_ptr,'userdata',1);

  % SAVE DATA

 set(W2_ptr,'userdata',W2);

 %==================================================================

% "Working" radio button.

%

% ME('working')

%==================================================================

 

elseif strcmp(cmd,'working') & (fig)

 

 set(rb1,'value',1);

 set(rb2,'value',0);

 set(cross,'color',nndkblue);

 %==================================================================

% "Not Working" radio button.

%

% ME('working')

%==================================================================

 elseif strcmp(cmd,'notworking') & (fig)

 

 set(rb1,'value',0);

 set(rb2,'value',1);

 set(cross,'color',nnred);

end

Результати роботи програми:

Інша фігура:

 

Висновок:

У ході виконання лабораторної роботи було вивчено основні принципи роботи алгоритму розпізнавання образів Hamming classification.


 

А также другие работы, которые могут Вас заинтересовать

45070. Нарушения психологического развития (F8) 31 KB
  Этиология Для нарушений психологического развития характерна наследственная отягощенность подобными или родственными расстройствами. Специфические расстройства развития речи F80. Этиология и патогенез Причина специфических расстройств развития речи неизвестна.
45071. Умственная отсталость (F7) 36.5 KB
  На фоне умственной отсталости может наблюдаться весь диапазон психических расстройств. Нарушения обмена приводят к прогредиентному течению дефекта при умственной отсталости а также присоединению таких симптомов как припадки соматическая патология. Причиной умственной отсталости могут быть эмбриопатии с дизостозами в частности синдром Апера Крузона COFS синдром синдром Корнелии де Ланге и Рубинштейна а также фетопатии в частности болезнь Марфана. Эндогенные случаи умственной отсталости передаются полигенно рецессивно доминантно хотя...
45072. Характеристика степеней умственной отсталости 29.5 KB
  Отставание в развитии понимания и использовании речи, навыков самообслуживания и моторики, заметное с раннего возраста. В школе развиваются только базисные навыки при постоянном специальном педагогическом внимании (специальные школы). В зрелом возрасте также нуждаются в надзоре. Речевой запас достаточен для сообщения о своих потребностях.
45073. Девиантное поведение – определение, причины, классификация 24.5 KB
  Девиантное поведение определение причины классификация. Девиантное поведение представляет собой устойчивое сознательное и избирательное нарушение социальных норм. Крайние проявление социально-пассивного типа саморазрушающее поведение.: аддиктивное поведение сексуальная распущенность аутоагрессия суицидальное поведение синдром сгорания.
45074. Эпилепсия (G40) 50.5 KB
  При этом чем интенсивнее представлены одни из них тем меньшая выраженность других достаточна для проявления эпилепсии. Почти в половине случаев причину эпилепсии установить не удается даже при самом тщательном обследовании. Эти идиопатические эпилепсии связаны главным образом с наследственным предрасположением имеют помимо других отличий типичный возраст заболевания и в большинстве случаев хорошо реагируют на терапию. В случаях когда при анализе особенностей клинического синдрома и данных исследования предполагается вероятность отнесения...
45075. ПОВЕДЕНЧЕСКАЯ ПСИХОТЕРАПИЯ 34.5 KB
  Могут рассматриваться методы психотерапии основанные на принципах научения которые появились во втором десятилетии нашего века. содействовать увеличению потенциала их личного поведения мыслей чувств и уменьшению или исключению нежелательных способов реагирования;2 не ставится задача изменить эмоциональную суть отношений и чувств личности;3 позитивное терапевтическое отношение необходимое но недостаточное условие эффективной психотерапии;4 жалобы пациента принимаются как значимый материал на котором терапия фокусируется а не как...
45076. КЛАССИЧЕСКИЙ ПСИХОАНАЛИЗ 39 KB
  Психоанализ инструмент дающий возможность Эго достичь победы над Ид . Он считал что в психоанализе основные усилия направлены на то чтобы усилить Эго сделать его более независимым от СуперЭго расширить сферу действия перцепции и укрепить его организацию. Цель психоанализа Фрейд видел в том чтобы сделать бессознательное сознательным; он утверждал что дело анализа обеспечить насколько это возможно хорошие условия для функционирования Эго .
45077. Гуманистическая психотерапия 26 KB
  Метод позитивной психотерапии основывается на 3х принципах каждому из которых соответствует определённая методическая составляющая: Принципу надежды соответствует позитивный подход в видении способностей и возможностей человека. Принципу баланса соответствует содержательный дифференциальный анализ психодинамики личности результатом которого есть гармонизация первичных и вторичных актуальных способностей человека. Принципу самопомощи соответствует 5шаговая метамодель используемая как стратегия гармонизации адаптации и развития...
45078. Социальная реабилитация 29 KB
  Все реабилитационные мероприятия должны быть нацелены на вовлечение самого больного в лечебно-восстановительный процесс. Реабилитировать больного без его активного участия в этом процессе невозможно. Реабилитация объединяет усилия врача медицинского персонала и больного направленные на восстановление социальнопсихологического статуса последнего. Охранительный режим предусматривает постоянное пребывание больного в постели преимущественно по соматическим показаниям и требует от медицинского персонала постоянного наблюдения за ним.