%% rozpoznani vyrazu obliceje
close all
clear all
clc 
%% načtení a zobrazení obrázku 

%%%%%%%%%%%%%% ZADEJTE JMENO OBRAZU: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

jmeno='C:\Data\FEKT VUT\ING_studium\Diplomka\Program\Sada6\m05_1.bmp';

RGB=imread(jmeno);
RGB=imresize(RGB, [300, NaN]);
figure; subplot(1,4,1); imshow(RGB); %title('původní obraz')
[x,y,z]=size(RGB);
%% převod na různé barevné modely a detekce pixelů s bavou kůže
sedoton=im2double(rgb2gray(RGB));
HSV=rgb2hsv(RGB); %prevod do HSV
YCC=rgb2ycbcr(RGB); %prevod do YCbCr
detRGB = fceRGB(RGB,x,y); %detekce pixelu s barvou kuze v RGB
detHSV = fceHSV(HSV,x,y); %detekce pixelu s barvou kuze v HSV
detYCC = fceYCC(YCC,x,y); %detekce pixelu s barvou kuze v YCbCr
for i=1:x   %vypocet pruniku detekce v HSV a YCbCr,  a HSV, YCbCr a RGB
    for j=1:y
        if (detHSV(i,j)==detYCC(i,j))
            if(detHSV(i,j)==detRGB(i,j))
                detRGBaHSVaYCC(i,j)=detHSV(i,j);
            end
        else
            detRGBaHSVaYCC(i,j)=0;
        end
    end
end
subplot(1,4,2); imshow(detRGBaHSVaYCC);

%% morfologické operace a dalsi upravy
detRGBaHSVaYCC=im2bw(detRGBaHSVaYCC);
[oblicej,ohraniceni] = upravy_obrazu(detRGBaHSVaYCC, RGB);

%% orez podle cerveneho ohraniceni
x1=round(ohraniceni(1,1));      y1=round(ohraniceni(1,2));
x2=round(x1+ohraniceni(1,3)-1); y2=round(y1+ohraniceni(1,4)-1);
hraniceOrezuRGB=[x1, x2, y1, y2];
vyrezRGB=RGB(y1:y2,x1:x2,:); %orez obrazku podle ramecku
vyrezRGB=imresize(vyrezRGB, [150, NaN]);
[x,y]=size(vyrezRGB(:,:,1));
oblastobliceje=oblicej(y1:y2,x1:x2);
oblastoblicejeMensi=imresize(oblastobliceje, [x-4,y-3]);
oblastobliceje=zeros(x,y);
for i=3:x-2 
    for j=3:y-2
        oblastobliceje(i,j)=oblastoblicejeMensi(i-2,j-2);
    end
end
subplot(1,4,3); imshow(oblastobliceje);
for i=1:x
    for j=1:y
        if oblastobliceje(i,j)==0
            vyrezRGB(i,j,:)=0;
        end
    end
end
subplot(1,4,4); imshow(vyrezRGB);
vyrezYCC=rgb2ycbcr(vyrezRGB);
vyrezSedoton=im2double(rgb2gray(vyrezRGB));

%% HLEDÁNÍ OBJEKŮ OBLIČEJE - podle barev
vyrezRGB=imresize(vyrezRGB,[150,NaN]);
souradniceoci=zeros(4,4);


%1) nos a oci (m)
[ustaM,nosM,ociM]=fceocinos(vyrezRGB);
souradniceoci(4,:)=ociM;
usta(2,1:2)=ustaM;


%2) usta (002)
MapaG=zeros(x,y);
a=1;b=1; c=y;
if nosM(1)>0 && nosM(1)<x-10
    a=nosM(1,1)+10;
end
if nosM(2)>0
    b=round(3*nosM(2)/4);
    c=round(5*nosM(2)/4);
end
for i=a:x-10
    for j=b:c 
        MapaG(i,j)=im2double(vyrezRGB(i,j,2)) / (im2double(vyrezRGB(i,j,1))+im2double(vyrezRGB(i,j,2))+im2double(vyrezRGB(i,j,3)) ); 
    end
end
MapaUst=zeros(x,y);
MapaUst(MapaG<0.28&MapaG>0)=1;
CC = bwconncomp(MapaUst); %odstraneni malych oblasti
numPixels = cellfun(@numel,CC.PixelIdxList); 
for i=1:length(numPixels)
     if numPixels(i)<25
         MapaUst(CC.PixelIdxList{i}) = 0;
     end
end
L = bwlabel(MapaUst);
ss = regionprops(L, 'Centroid', 'BoundingBox');
usta_pom=[0,0];
for i = 1:numel(ss)
    c = ss(i).Centroid;
    usta_pom(i,:)=c;
end
if length(usta_pom(:,2))>1
    usta_pom(:,2)=sort(usta_pom(:,2));
    usta(1,1)=round(mean(round(usta_pom(1:2,2))));
    usta(1,2)=round(mean(usta_pom(:,1))); 
elseif length(usta_pom(:,2))==1
    usta(1,1)=usta_pom(1,2);
end
if usta(1,2)==0 && nosM(1,2)~=0
    usta(1,2)=nosM(1,2);
end
figure; subplot(1,5,1); imshow(vyrezRGB); hold on
plot(usta(1,2),usta(1,1),'b+','MarkerSize', 8);

%3) oci (rozdil Cb a Cr, 62)
if nosM(1,1)>1
    MapaOci1=zeros(nosM(1,1)-5,y);
else
    MapaOci1=zeros(x,y);
end
for i=1:length(MapaOci1(:,1))
    for j=1:y
        if vyrezYCC(i,j,2) >= 1.01*vyrezYCC(i,j,3)
            MapaOci1(i,j)=1;
        end
    end
end
CC = bwconncomp(MapaOci1);
numPixels = cellfun(@numel,CC.PixelIdxList); 
for i=1:length(numPixels)
     if numPixels(i)<2 
         MapaOci1(CC.PixelIdxList{i}) = 0;
     end
end
L = bwlabel(MapaOci1); 
ss = regionprops(L, 'Centroid');
for i = 1:numel(ss)
    c = ss(i).Centroid;
end
if numel(ss)==2 %najdou se obe oci
    souradniceoci(1,1)=round(ss(1).Centroid(2)); %jedno oko
    souradniceoci(1,2)=round(ss(1).Centroid(1));
    souradniceoci(1,3)=round(ss(2).Centroid(2)); %druhe oko
    souradniceoci(1,4)=round(ss(2).Centroid(1));
elseif numel(ss)==1 %najde se jedno oko
    souradniceoci(1,1)=round(ss(1).Centroid(2)); %jedno oko
    souradniceoci(1,2)=round(ss(1).Centroid(1));
    souradniceoci(1,3)=souradniceoci(1,1);
    souradniceoci(1,4)=nosM(2)+(nosM(2)-souradniceoci(1,2));  
    if souradniceoci(1,2)>souradniceoci(1,4) %prehozeni oci v matici
        z=souradniceoci(1,1:2);
        souradniceoci(1,1:2)=souradniceoci(1,3:4);
        souradniceoci(1,3:4)=z; 
    end
else %nenajde se
    souradniceoci(1,1:4)=[0,0,0,0];
end
if souradniceoci(1,2)>souradniceoci(1,4) %leve oko v levo, prave v pravo v matici
    z=souradniceoci(1,1:2);
    souradniceoci(1,1:2)=souradniceoci(1,3:4);
    souradniceoci(1,3:4)=z;
end
subplot(1,5,2); imshow(vyrezRGB); hold on
plot(souradniceoci(1,2),souradniceoci(1,1),'w+','MarkerSize', 8);
plot(souradniceoci(1,4),souradniceoci(1,3),'w+','MarkerSize', 8);


%4) oci (002)
vyrezYCC=double(vyrezYCC);
MapaOci2=1/3*(vyrezYCC(:,:,2).^2)+(256-vyrezYCC(:,:,3)).^2+vyrezYCC(:,:,2)./vyrezYCC(:,:,3);
MapaOci2(oblastobliceje==0)=0;
MapaOci2(1:round(x/7),:)=0;
if nosM(1,1)>1
    MapaOci2=MapaOci2(1:nosM(1,1)-5,:);
end
[num, i] = max(MapaOci2(:));
[oci2(1,1), oci2(1,2)] = ind2sub(size(MapaOci2),i);
subplot(1,5,3); imshow(vyrezRGB); hold on
plot( oci2(1,2),oci2(1,1), 'w+','MarkerSize', 8); hold on;
oci2(2,1)=oci2(1,1);
oci2(2,2)=nosM(1,2)+(nosM(1,2)-oci2(1,2)); 
d=10; d1=10;
num=0;
for i=oci2(2,1)-d1:oci2(2,1)+d1    
    for j=oci2(2,2)-d:oci2(2,2)+d
        if j<=round(y/2)&&j>0 && i<=round(x/2)&&i>0
            if MapaOci2(i,j)>num
                num=MapaOci2(i,j);
                oci2(2,1)=i; oci2(2,2)=j; %druhe oko
            end
        end
    end
end
plot(oci2(2,2),oci2(2,1), 'w+','MarkerSize', 8);
if oci2(2,1)>oci2(1,1) %pokud je prvni nalezene oko leve
    souradniceoci(2,1:2)=[oci2(1,1), oci2(1,2)];
    souradniceoci(2,3:4)=[oci2(2,1), oci2(2,2)];
else           %pokud se prvni nalezlo prave oko
    souradniceoci(2,1:2)=[oci2(2,1), oci2(2,2)];
    souradniceoci(2,3:4)=[oci2(1,1), oci2(1,2)];
end


%5) oci (64)
MapaOci3=zeros(x,y);
MapaOci3(vyrezYCC(:,:,2)>120&oblastobliceje==1)=1;
if nosM(1,1)>1
    MapaOci3=MapaOci3(1:nosM(1,1)-5,:);
end
MapaOci3(:,1:round(y/10))=0; 
MapaOci3(:,round(9*y/10):y)=0;
SE=strel('disk',1,4); %eroze
%MapaOci3=imerode(MapaOci3,SE, 'same');
CC = bwconncomp(MapaOci3);
numPixels = cellfun(@numel,CC.PixelIdxList); 
for i=1:length(numPixels)
     if numPixels(i)<5 
         MapaOci3(CC.PixelIdxList{i}) = 0;
     end
end
SE=strel('disk',1,4); %dilatace
MapaOci3=imdilate(MapaOci3, SE, 'same');
L = bwlabel(MapaOci3);
ss = regionprops(L, 'Centroid', 'BoundingBox');
oci3=zeros(numel(ss),2);
for i = 1:numel(ss)
    c = ss(i).Centroid;
    oci3(i,1)=c(2);
    oci3(i,2)=c(1);
    if oci3(i,2)<10 || oci3(i,2)>(y-10)
        oci3(i,:)=[0,0];
    end
end
if isempty(oci3)==1
    oci3=[0,0;0,0];
else
    subplot(1,5,4); imshow(vyrezRGB); hold on
    [num, idx] = max(oci3(:,1));
    [i, j] = ind2sub(size(oci3(:,1)),idx);
    if i>0
        oci33(1,:)=oci3(i,:);
        souradniceoci(3,1:2)=oci33(1,:);
        plot(oci33(1,2),oci33(1,1),'w+','MarkerSize', 8);
        oci3(i,:)=[0,0];
    end
    [num, idx] = max(oci3(:,1));
    [i, j] = ind2sub(size(oci3(:,1)),idx);
    if i>0
        oci33(2,:)=oci3(i,:);
        plot(oci33(2,2),oci33(2,1),'w+','MarkerSize', 8);
        souradniceoci(3,3:4)=oci33(2,:);
    end
    oci3=[]; oci3=oci33; oci33=[];
end

for i=1:length(souradniceoci(:,1))
    if souradniceoci(i,2)>souradniceoci(i,4)&&souradniceoci(i,4)~=0
        pam=souradniceoci(i,1:2);
        souradniceoci(i,1:2)=souradniceoci(i,3:4);
        souradniceoci(i,3:4)=pam;
    end
end

subplot(1,5,5);imshow(vyrezRGB);hold on
plot(nosM(1,2),nosM(1,1),'g+','MarkerSize', 8);
plot(ustaM(1,2),ustaM(1,1),'b+','MarkerSize', 8);
plot(ociM(1,2),ociM(1,1),'w+','MarkerSize', 8);
plot(ociM(1,4),ociM(1,3),'w+','MarkerSize', 8);


%% vypocet umisteni objektu a orez
[x,y]=size(vyrezRGB(:,:,1));
oci=[]; %shoda oci
for i=1:3
    rozdily(i,:)=round(abs(souradniceoci(i,:)-souradniceoci(4,:)));
    if rozdily(i,1)<6&&rozdily(i,2)<10&&rozdily(i,3)<6&&rozdily(i,4)<10
       oci(1:4)=round((souradniceoci(i,1:4)+souradniceoci(4,1:4))./2);
       i=4;
    end
end
if min(souradniceoci(1,:))==0 && min(souradniceoci(3,:))
    rozdily(4,:)=[100,100,100,100];
else
    rozdily(4,:)=round(abs(souradniceoci(1,:)-souradniceoci(3,:)));
end
if min(souradniceoci(2,:))==0 && min(souradniceoci(3,:))    
    rozdily(5,:)=[100,100,100,100];
else
    rozdily(5,:)=round(abs(souradniceoci(2,:)-souradniceoci(3,:)));
end
if min(souradniceoci(1,:))==0 && min(souradniceoci(2,:))
    rozdily(6,:)=[100,100,100,100];
else
    rozdily(6,:)=round(abs(souradniceoci(1,:)-souradniceoci(2,:)));
end
if isempty(oci)==1
    if rozdily(4,1)<6&&rozdily(4,2)<10&&rozdily(4,3)<6&&rozdily(4,4)<10
        oci(1:4)=round((souradniceoci(1,:)+souradniceoci(3,:))./2);
    elseif rozdily(5,1)<6&&rozdily(5,2)<10&&rozdily(5,3)<6&&rozdily(5,4)<10
        oci(1:4)=round((souradniceoci(2,:)+souradniceoci(3,:))./2);
    elseif rozdily(6,1)<6&&rozdily(6,2)<10&&rozdily(6,3)<6&&rozdily(6,4)<10
        oci(1:4)=round((souradniceoci(1,:)+souradniceoci(2,:))./2);
    end
end
if isempty(oci)==1
    oci=[0,0,0,0];
end

%mista orezu:
usta(3,:)=[x,y];
if max([min(usta(1,:)),min(usta(2,:))])>0
    if usta(1,1)==0 || usta(1,2)==0
        usta(3,:)=usta(2,:);
    else
        usta(3,:)=usta(1,:);
    end
    if min(oci)>0 %pokud se oci shodly
        stredmeziocima(1,1)=round(oci(1,1)+((oci(1,3)-oci(1,1))/2));
        stredmeziocima(1,2)=round((oci(1,2)+oci(1,4))/2); 
        vzdal_oci_pusa=round(usta(3,1)-stredmeziocima(1,1));   
        vzdal_pusa_brada=0.7*vzdal_oci_pusa;
        vzdal_celo_oci=1.2*vzdal_oci_pusa;
        orez1=round(usta(3,1)+vzdal_pusa_brada); % pod bradou   
        orez2=round(stredmeziocima(1,2)-vzdal_celo_oci); %nad celem           
    elseif min(ociM)>0 %pokud se nasly ociM
        stredmeziocima(1,1)=round(ociM(1,1)+((ociM(1,3)-ociM(1,1))/2));
        stredmeziocima(1,2)=round((ociM(1,2)+ociM(1,4))/2);
        vzdal_oci_pusa=round(usta(3,1)-stredmeziocima(1,1));
        vzdal_pusa_brada=0.7*vzdal_oci_pusa; 
        vzdal_celo_oci=1.2*vzdal_oci_pusa; 
        orez1=round(usta(3,1)+vzdal_pusa_brada);
        orez2=round(stredmeziocima(1,1)-vzdal_celo_oci);               
    elseif min(nosM)>0 %pokud se nasel nos
        vzdal_nos_pusa=round(usta(3,1)-nosM(1,1));
        vzdal_pusa_brada=1.4*vzdal_nos_pusa; 
        vzdal_celo_nos=3.3*vzdal_nos_pusa; 
        orez1=round(usta(3,1)+vzdal_pusa_brada); %pod bradou
        orez2=round(nosM(1,1)-vzdal_celo_nos);%nad celem     
    else 
        orez1=x; orez2=1;
    end
else %usta se nenasla
    if min(nosM)>0 %pokud se nasel nos
       if min(oci)>0 %pokud se oci shodly
           stredmeziocima(1,1)=round(oci(1,1)+((oci(1,3)-oci(1,1))/2));
           stredmeziocima(1,2)=round((oci(1,2)+oci(1,4))/2);
           vzdal_oci_nos=nosM(1)-stredmeziocima(1,1);
           vzdal_nos_brada=2.2*vzdal_oci_nos;
           vzdal_celo_oci=2.1*vzdal_oci_nos;            
           orez1=round(nosM(1,1)+vzdal_nos_brada); %pod bradou
           orez2=round(stredmeziocima(1,1)-vzdal_celo_oci);%nad celem           
       elseif min(ociM)>0 %pokud se nasly ociM
           stredmeziocima(1,1)=round(ociM(1,1)+((ociM(1,3)-ociM(1,1))/2));
           stredmeziocima(1,2)=round((ociM(1,2)+ociM(1,4))/2);
           vzdal_oci_nos=nosM(1)-stredmeziocima(1,1);
           vzdal_nos_brada=2.2*vzdal_oci_nos;
           vzdal_celo_oci=2.1*vzdal_oci_nos; 
           orez1=round(nosM(1,1)+vzdal_nos_brada); %pod bradou
           orez2=round(stredmeziocima(1,1)-vzdal_celo_oci);%nad celem 
       else
           orez1=x; orez2=1;
       end
    else
       orez1=x; orez2=1;
    end   
end

%automaticky orez:
vyrezRGB2=vyrezRGB;
oblastobliceje2=oblastobliceje;
if orez1<x&&orez1>usta(3,1)  %pokud je hranice orezu uvnitr obrazu (ne mimo nej)
    vyrezRGB2=vyrezRGB2(1:orez1,:,:);    %orez zespoda
    oblastobliceje2=oblastobliceje2(1:orez1,:,:);
end 
[x,y]=size(vyrezRGB2(:,:,1));
if orez2>1&&orez2<max([oci(1),ociM(1)])
    vyrezRGB2=vyrezRGB2(orez2:x,:,:);    %orez zezhora
    oblastobliceje2=oblastobliceje2(orez2:x,:,:);
end
vyrezRGB2=imresize(vyrezRGB2, [150, NaN]);
%orez z boku
[x,y]=size(vyrezRGB2(:,:,1));
[ustaM,nosM,ociM]=fceocinos(vyrezRGB2);
figure; imshow(vyrezRGB2); title('orez z boku'); hold on
plot(nosM(1,2),nosM(1,1)-5:nosM(1,1)+5,'r');
plot(nosM(1,2)-5:nosM(1,2)+5,nosM(1,1),'r');
pomerstran=y/x
if pomerstran>0.7 %příliš široký - ořez z boků
    doboku=(x*0.7)/2-0.5;
    orezP=nosM(1,2)+doboku;
    orezL=nosM(1,2)-doboku;
    if orezL<=0
        orezP=orezP-orezL;
        orezL=1;  
    elseif orezP>y
        orezL=orezL-(orezP-y);
        orezP=y;
    end
    plot(orezL,1:x, 'r');
    plot(orezP,1:x, 'r');
    vyrezRGB2=vyrezRGB2(:,orezL:orezP,:);  
elseif pomerstran<0.7 %příliš úzky - rozšíření   
    d=floor((0.7*x-y)/2);
    pridej=zeros(1,d);
    if 105-2*d-1==y 
        for i=1:x
            for j=1:3
            AA(i,:,j)=[0,pridej,vyrezRGB2(i,:,j),pridej];
            end
        end
    else
        for i=1:x
            for j=1:3
            AA(i,:,j)=[pridej,vyrezRGB2(i,:,j),pridej];
            end
        end
    end
    vyrezRGB2=AA;
end
figure; subplot(1,2,1); imshow(vyrezRGB);title('puvodni obraz');
subplot(1,2,2);imshow(vyrezRGB2); title('automaticky orez');

%% Volba orezu
dotaz = 'Chcete povezt automaticky orez? A/N (pokud ne, bude pozadovatrucni orez)? ';
odpoved = input(dotaz,'s');
if isempty(odpoved)
    odpoved = 'A';
end
if odpoved(1)=='A' || odpoved(1)=='a'
    vyrezRGB=vyrezRGB2;
    oblastobliceje=oblastobliceje2;
elseif odpoved(1)=='N' || odpoved(1)=='n'
    figure; imshow(vyrezRGB); title('vyber potvrdte dvojklikem');
    h=imrect(gca, [10 10 75 100]);
    setFixedAspectRatioMode(h,1)
    pozice=wait(h);
    [x,y]=size(vyrezRGB(:,:,1));
    pozice=round(pozice);
    if pozice(1)>0&&pozice(2)>0&&pozice(3)>0&&pozice(4)>0&&(pozice(2)+pozice(4))<y&&(pozice(1)+pozice(3))<x
        vyrezRGB=vyrezRGB(pozice(2):(pozice(2)+pozice(4)),pozice(1):(pozice(1)+pozice(3)),:);
    end
    vyrezRGB=imresize(vyrezRGB, [150, NaN]);
else %pri spatne odpovedi -automat. orez
    vyrezRGB=vyrezRGB2;
    oblastobliceje=oblastobliceje2;
end
figure; imshow(vyrezRGB); title('obraz po orezu');
vyrezRGB=imresize(vyrezRGB, [150,105]);

%% Gaborovy priznkay
MaticePriznaku=zeros(700,1);
MaticeVysledku=zeros(4,1);
vyrezRGB=imresize(vyrezRGB, [100, 70]);
[xb,yb]=size(vyrezRGB(:,:,1));
vyrezSedoton=im2double(rgb2gray(vyrezRGB));

%%%%%%%%% VYBERTE JEDNU ZE 3 MOZNYCH BANEK FILTRU:  %%%%%%%%%%%%%%%%%%%%%%%
%prvni banka filtru:
%GaborPriznaky=banka1(vyrezSedoton,10,10,2,1,pi/2); banka=1;
%druha banka filtru: %(WZ)
%GaborPriznaky=banka2(vyrezSedoton,2,5,21,21); banka=2;
%banka vlast filtru:
GaborPriznaky=banka3(vyrezSedoton,2,5,21,21); banka=3;

%podvzorkovani a ulozeni do matice
MaticePriznaku=zeros(10,70);
for j=1:length(GaborPriznaky(1,1,:))
    Priznak=GaborPriznaky(:,:,j);
    Priznak=downsample(Priznak,10);
    Priznak=imrotate(Priznak,90);
    Priznak=downsample(Priznak,10);
    Priznak=imrotate(Priznak,-90);  
    MaticePriznaku(j,:)=Priznak(:);
end
MaticePriznaku=MaticePriznaku(:);
% urceni vektoru vysledku
k1=strfind(jmeno, '1.bmp');
k2=strfind(jmeno, '2.bmp');
k3=strfind(jmeno, '3.bmp');
k4=strfind(jmeno, '4.bmp');
if isempty(k1)==0
    MaticeVysledku(:)=[1;0;0;0];
end
if isempty(k2)==0
    MaticeVysledku(:)=[0;1;0;0];
end
if isempty(k3)==0
    MaticeVysledku(:)=[0;0;1;0];
end
if isempty(k4)==0
    MaticeVysledku(:)=[0;0;0;1];
end

%% klasifikace neuronovou siti
switch banka
    case 1
        load bestNet100_20_00322.mat
    case 2
        load bestNetWZ20_00458.mat
    case 3
        load bestNetW100_30_00393.mat
end
net=bestNet;
inputs=MaticePriznaku;
targets=MaticeVysledku;
outputs=net(inputs);
[num,idx]=max(outputs);
[vyraz,i]=ind2sub(size(outputs),idx);
[num,idx]=max(targets);
[spravnyvyraz,i]=ind2sub(size(targets),idx);
errors=gsubtract(targets,outputs);
performance=perform(net,targets,outputs);
%figure; plotconfusion(targets,outputs)
figure;imshow(vyrezRGB); %zobrazeni vysledku
clc;
if vyraz==1
    if max(targets)>0
        if spravnyvyraz==vyraz
            title('vyraz spravne zarazen do skupiny 1 - neutralni vyraz');
        else
            title('vyraz nespravne zarazen do skupiny 1 - neutralni vyraz');
        end
    else
        title('vyraz zarazen do skupiny 1 - neutralni vyraz');
    end
elseif vyraz==2
    if max(targets)>0
        if spravnyvyraz==vyraz
            title('vyraz spravne zarazen do skupiny 2 - usmev');
        else
            title('vyraz nespravne zarazen do skupiny 2 - usmev');
        end
    else
        title('vyraz zarazen do skupiny 2 - smich');
    end
elseif vyraz==3
    if max(targets)>0
        if spravnyvyraz==vyraz
            title('vyraz spravne zarazen do skupiny 3 - vztek');
        else
            title('vyraz nespravne zarazen do skupiny 3 - vztek');
        end
    else
        title('vyraz zarazen do skupiny 3 - vztek');
    end
elseif vyraz==4
    if max(targets)>0
        if spravnyvyraz==vyraz
            title('vyraz spravne zarazen do skupiny 4 - krik');
        else
            title('vyraz nespravne zarazen do skupiny 4 - krik');
        end
    else
        title('vyraz zarazen do skupiny 4 - krik');
    end
end
