%%korelační funkce
function CC = kritCC(a)                                                     %do funkce kritCC vstupuje parametr a, který nese informaci o posuvech ve směru obou ox
global A B;                                                                 %globální proměnné, a představuje referenční obraz, B obraz registrovaný
puvodni_posouvany=B;                                                        %přeuložení proměnné
x=a(1);                                                                     %z proměnné, která do funkce vstupuje je vybrán posun v ose x 
y=a(2);                                                                     %z proměnné, která do funkce vstupuje je vybrán posun v ose y 
c = [400 400 100 100];                                                      %volba hraničních sloupců vymezujících oblast zájmu
r = [180 400 400 180];                                                      %volba hraničních řádků vymezujících oblast zájmu
maskaA=roipoly(A,c,r);                                                      %vytvoření masky 
[height,width]=size(puvodni_posouvany);                                     %zjištění velikosti obrazu
[souradniceX,souradniceY] = meshgrid(1:width,1:height);                     %vytvoření mřížky
XI = souradniceX + x;                                                       %realizace posunu
YI = souradniceY + y;                                                       %realizace posunu    
vysledny_posunutyB=interp2(souradniceX,souradniceY,puvodni_posouvany,XI,YI);%interpolace pro daný posun
AA=A(maskaA>0);                                                             %výběr oblasti zájmu
BB=vysledny_posunutyB(maskaA>0);                                            %výběr oblasti zájmu
AA=AA-mean(mean(AA));                                                       %výpočet korelace, je dosazeno do dalšího vzorce
BB=BB-mean(mean(BB));                                                       %výpočet korelace, je dosazeno do dalšího vzorce
CC = (sum(sum(AA.*BB))/sqrt(sum(sum(AA.^2))*sum(sum(BB.^2))));              %výpočet korelace
CC = (CC*100);                                                              %normalizace                                       
CC=-CC;                                                                     %úprava na hodnoty na fitness, pro hledání minima
global KorValue                                                             %globální proměná
KorValue=-CC;                                                               %hodnota korelace, slouží pouze pro informaci, je třeba aby byla převedena zpátky