function [ out_vector, struktura ] = koeficient_na_vektor(koeficienty,urovne,pocet_filtru)
% funkce slouzi k prevedeni vsech hodnot koeficientu na jeden vektor
%
%   out_vector - vektor obsahuje vsechny body koeficientu vzniklych
%       pouzitim frameletove transformace, tedy f x f koef. na uroven
%       transformace, kde f je pocet filtru
%
%   struktura -  dava matici o 5 sloupcich, slouzici k opetovnemu poskladani
%       bodu vektoru do jednotlivych koeficientu. 
%       Kazdy radek vyjadruje informace o ulozeni jednoho koefic. do vekt.
%       1. sl. - uroven transformace koeficientu
%       2. a 3.sl. - pozice koeficientu v cell
%       4. a 5.sl. - pocty rows a cols koeficientu


    akt_pozice = 1;
    [rows,cols] = size(koeficienty{1,1}{1,1});
    konc_pozice = 0;
    
    pozice_struktura = 1;
    akt_struktura = zeros(16*urovne,5);
    
    % ziskani celkoveho poctu bodu
    delka = 0;
    for rozmer = 1:urovne
        if rozmer<urovne
            [height,width] = size(koeficienty{rozmer,1}{2,1});
            akt_delka = 15*height*width;
            delka = delka + akt_delka;
        else
            [height,width] = size(koeficienty{rozmer,1}{2,1});
            akt_delka = 16*height*width;
            delka = delka + akt_delka;
        end
    end
    
    vektor = zeros(1,delka);
    
    % jede se od nejvetsich koef. k nizsim
    for p_ur = 1:urovne
        for row_cell = 1:pocet_filtru
            for col_cell = 1:pocet_filtru
    
                [rows,cols] = size(koeficienty{p_ur,1}{row_cell,col_cell});
                
                
                % {1,1} koeficienty nizsich transformaci nejsou potreba,
                % jelikoz jsou nahrazeny pri dekompozici vyssi urovne
                if p_ur<urovne && row_cell == 1 && col_cell == 1
                    
                    akt_struktura(pozice_struktura,1) = p_ur;
                    akt_struktura(pozice_struktura,2) = row_cell;
                    akt_struktura(pozice_struktura,3) = col_cell;
                    akt_struktura(pozice_struktura,4) = 0;
                    akt_struktura(pozice_struktura,5) = 0;

                    pozice_struktura = pozice_struktura + 1;
                    
                else    
                    for row = 1:rows   % ulozeni po radcich do vektoru
                        konc_pozice = konc_pozice + cols;
                        vektor(1,akt_pozice:konc_pozice) = koeficienty{p_ur,1}{row_cell,col_cell}(row,1:end);
                        akt_pozice = akt_pozice + cols;

                    end

                    % vytvoreni zaznamu o aktualnim poli koeficientu pro opetovne slozeni
                    % (level transformace, pozice a velikost)
                    akt_struktura(pozice_struktura,1) = p_ur;
                    akt_struktura(pozice_struktura,2) = row_cell;
                    akt_struktura(pozice_struktura,3) = col_cell;
                    akt_struktura(pozice_struktura,4) = rows;
                    akt_struktura(pozice_struktura,5) = cols;

                    pozice_struktura = pozice_struktura + 1;
                end
                
            end
        end
    end
  
struktura = akt_struktura;    
out_vector = vektor;

end
