function bitove_hladiny(uplna_cesta)
clc;

obr = (imread(uplna_cesta));                            % info 0 - 255 o kazdem bodu obrazu  
obraz_info = imfinfo(uplna_cesta,'bmp');                % kompletni informace o obrazu 

X = obraz_info.Height;
Y = obraz_info.Width;                                   

binarni = dec2bin(obr,8);       % vytvoren vektor o vel (X*Y) x 8 a decimalni cislo na 2 vektor stringu

% <<<<<<< 8 bitovych rovin, kazda do vlastni matice 1-8 >>>>>

for m=1:Y
    for n=1:X
        %(00000001) => prvni hladina (d0) je 8. pozice

% <<<<<<<<<<<<<< prvni metoda rozkladu - pomalejsi o 1/3 >>>>>>>>>>>>>>>>>>        

%         a = ( binarni((n+((m-1)*X)),1:8) );                 % nacteni celeho vektoru stringu, 8b 
%         i=1;
%         
%         for i=1:8
%             a(i);
%             switch (9-i)
%                 case 1
%                     if str2num(a(i))>0                                    % '0','1'na 0 a 255 (cerna, bila)
%                         prvni(n,m)=255;
%                     else   
%                       prvni(n,m)= str2num(a(i));
%                     end 
%                 case 2
%                     if str2num(a(i))>0                                    % '0','1'na 0 a 255 (cerna, bila)
%                         druha(n,m)=255;
%                     else   
%                         druha(n,m)= str2num(a(i));
%                     end
%                 case 3
%                     if str2num(a(i))>0                                    % '0','1'na 0 a 255 (cerna, bila)
%                         treti(n,m)=255;
%                     else   
%                         treti(n,m)= str2num(a(i));
%                     end
%                 case 4
%                     if str2num(a(i))>0                                    % '0','1'na 0 a 255 (cerna, bila)
%                         ctvrta(n,m)=255;
%                     else   
%                         ctvrta(n,m)= str2num(a(i));
%                     end
%                 case 5
%                     if str2num(a(i))>0                                    % '0','1'na 0 a 255 (cerna, bila)
%                         pata(n,m)=255;
%                     else   
%                         pata(n,m)= str2num(a(i));
%                     end
%                 case 6
%                     if str2num(a(i))>0                                    % '0','1'na 0 a 255 (cerna, bila)
%                         sesta(n,m)=255;
%                     else   
%                         sesta(n,m)= str2num(a(i));
%                     end
%                 case 7
%                     if str2num(a(i))>0                                    % '0','1'na 0 a 255 (cerna, bila)
%                         sedma(n,m)=255;
%                     else   
%                         sedma(n,m)= str2num(a(i));
%                     end
%                 case 8
%                     if str2num(a(i))>0                                    % '0','1'na 0 a 255 (cerna, bila)
%                         osma(n,m)=255;
%                     else   
%                         osma(n,m)= str2num(a(i));
%                     end
%             end
% 
%         end
  
% <<<<<<<<<<<<<< Druha metoda rozkladu >>>>>>>>>>>>>>>>>>

        prvni(n,m) = str2num( binarni(n+((m-1)*X),8));      % (X*Y x 8)->(X x Y), hladina d0
        if prvni(n,m)==0                                    % '0','1'na 0 a 255 (cerna, bila)
            prvni(n,m)=0;
        else
            prvni(n,m)=255;
        end;
        
        druha(n,m)  = str2num(binarni(n+((m-1)*X),7));
        if druha(n,m)==0
            druha(n,m)=0;
        else
            druha(n,m)=255;
        end;
        
        treti(n,m)  =str2num( binarni(n+((m-1)*X),6));
        if treti(n,m)==0
            treti(n,m)=0;
        else
            treti(n,m)=255;
        end;
        
        ctvrta(n,m) = str2num(binarni(n+((m-1)*X),5));
        if ctvrta(n,m)==0
            ctvrta(n,m)=0;
        else
            ctvrta(n,m)=255;
        end;
        
        pata(n,m)  = str2num(binarni(n+((m-1)*X),4));
        if pata(n,m)==0
            paty(n,m)=0;
        else
            pata(n,m)=255;
        end;
        
        sesta(n,m) = str2num(binarni(n+((m-1)*X),3));
        if sesta(n,m)==0
            sesta(n,m)=0;
        else
            sesta(n,m)=255;
        end;
        
        sedma(n,m) = str2num(binarni(n+((m-1)*X),2));
        if sedma(n,m)==0
            sedma(n,m)=0;
        else
            sedma(n,m)=255;
        end;
        
        osma(n,m)   = str2num(binarni(n+((m-1)*X),1));
        if osma(n,m)==0
            osmy(n,m)=0;
        else
            osma(n,m)=255;
        end;
    end
end

open('kompletni_rozklad.fig');

    figure = gcf;
    polozky = get(figure,'children');
    graf = gca;
  
    axes(polozky(17));
    imshow(uint8(prvni));

    axes(polozky(16));
    imshow(uint8(druha));    
   
    axes(polozky(15));
    imshow(uint8(treti));

    axes(polozky(14));
    imshow(uint8(ctvrta));    

    axes(polozky(13));
    imshow(uint8(pata));

    axes(polozky(12));
    imshow(uint8(sesta));    
    
    axes(polozky(11));
    imshow(uint8(sedma));

    axes(polozky(10));
    imshow(uint8(osma));    
