function [ nejbl_vzorek, nejbl_vzorek_zobraz, min_vzorek ] = hamming_sit( obr_zprac, databaze_gest )
% Funkce provadi rozpoznani gesta pomoci databaze gest dle Hammingove site
% Vstup
% obr_zprac - predzpracovany obraz pro nalezeni nejpodobnejsi vzoru z
% databaze, obraz musi byt binarni a jednoslozkovy
% obr - vzory gest
% Vystup
% nejbl_vzorek - nejblizsi nalezeny vzorek
% nejbl_vzorek_zobraz - nejblizsi nalezeny vzorek pro zobrazeni
% autor: Jan Netopil

x=obr_zprac(:); %prevedeni na vektor
x(x<=0.5)=-1;x(x>0.5)=1; % uprava pro hammingovu sit
N=length(x); % delka vstupniho vektoru
%nahrani databaze gest - ucebni vzory
%definovane binarni vzory ...x... bodu jako matice


%% B. VYPOCET ODPOVEDI SITE NA PREDLOZENE VSTUPNI VZORY (ROZPOZNAVANI VZORU)
varianta_vzor_vsech=[];
ham_vzd_vsech=[];
for gest=1:length(databaze_gest) %prochazim vsechna vzorova gesta
    k=cellfun(@length,databaze_gest);
    variant_poc=length(find(k(gest,:)));%kolik sloupcu na n-tem radku - pocet variant gesta
    ham_aktualni_vzor=[];
    for variant=1:variant_poc %prochazim vsechny varianty vzorovych gest
        w = databaze_gest{gest,variant};w = w(:); %nastaveni vah neuronu
        aktualni_vzor = 0.5 * ( sum((x(:)) .* w) + N); % vypocet hammingove vzdalenosti na vystupu n-teho neuronu
        ham_aktualni_vzor = [ham_aktualni_vzor, N - aktualni_vzor]; 
    end
    varianta_vzor = find(ham_aktualni_vzor==min(ham_aktualni_vzor)); %ktera varianta aktualniho vzoru
    varianta_vzor_vsech = [varianta_vzor_vsech, varianta_vzor];
    ham_aktualni_vzor = min(ham_aktualni_vzor); %minimalni hammingova vzdalenost pro prave testovany vzor
    ham_vzd_vsech = [ham_vzd_vsech,ham_aktualni_vzor]; %ulozeni minimalnich vzdalenosti pro vsechny vzory
    if ham_aktualni_vzor<1000
    break;
    end
end
min_vzorek=min(ham_vzd_vsech); %nalezeni nejpodobnejsiho vzoru z databaze gest dle minimalni hammingove vzdalenosti
nejbl_vzorek=find(ham_vzd_vsech==min_vzorek);
nejbl_vzorek_varianta=varianta_vzor_vsech(nejbl_vzorek);

nejbl_vzorek_zobraz=databaze_gest{nejbl_vzorek,nejbl_vzorek_varianta};
end

