Obsahem README.txt je objasneni a detailni popis prilohy k bakalarske prace. 
Soubor obsahuje 3 nasledujici casti:
    1. Popis vsech souboru a slozek v priloze.
    2. Vysvetlivky ke skriptum.
    3. Popis vstupnich videi.

Z duvodu omezeni velikosti prilohy v systemu, byla priloha pripravena ve dvou variantach:
    a) Pruvodni - priloha obsahuje skripty vsech metod vcetne pomocnych skriptu, nezbytnych pro spusteni programu a overeni jejich funkcnosti. Zde jsou rovnez zahrnuty vstupni videa (simulovana data se musi vygenerovat pomoci skriptu simulated_data.m, soubor pedestrian.mat je potreba umistit do slozky input_video), jeden ukazkovy vystup (test.avi) pro kazdou metodu a log soubory s vysledky vypoctu (pro vsechna videa). Ostatni videa je mozne nasledne zpracovat pomoci prilozenych skriptu. Tato verze je nahrana do systemu spolu s hlavnim souborem BP, a proto bude dostupna ke stazeni z databaze zaverecnych praci VUT.
    b) Rozsirena - tato verze prilohy obsahuje vsechna vstupni a vystupni videa. Rozsirena priloha je nahrana na skolni Google disk autora prace (183690@vutbr.cz) a je zpristupnena pro verejnost. Dana verze bude dostupna ke stazeni do doby zaniku Google disku autora po ukonceni studia na VUT.

-------------------------------

1.  Popis vsech souboru a slozek v priloze. 

Soubory:
    Hlavni programy:
    H1      Approach_1_STATS.m          Pristup k separaci na bazi statistik - prumeru a medianu.
    H2      Approach_2_PCA.m            Pristup k separaci na bazi Analyzy hlavnich komponent.
    H3      Approach_3_PCP_ALM.m        Pristup k separaci na bazi PCP, metoda ALM.
    H4      Approach_4_SPCP_ASALM.m     Pristup k separaci na bazi Stabilni PCP, metoda ASALM.
    
    Pomocne skripty a funkce:        
    P1      createMask.m                Vytvareni masky popredi z ridke matice S.
    P2      importVideoToColumn.m       Import videa ve formatu AVI do pracovniho prostredi, transformace do matice pozorovani.           
    P3      makeVideoFromColumn.m       Export matice pozorovani (promenne) do videosouboru formatu AVI.
    P4      makeCompilation.m           Export 4 matic pozorovani do jednoho videosouboru (ve tvaru kompilace).                   
    P5      shiftBrightness.m           Transformace rozsahu hodnot jasu matice z (-255, 255) na (0, 255) se zachovanim pomeru.
    P6      simulated_data.m            Pomocny program pro vytvareni simulovaneho videa.
    P7      soft.m                      Operator mekkeho prahovani (soft thresholding).
    P8      svt.m                       Operator prahovani singularnich cisel (singular value thresholding).
             
Slozky:
            input_video                 Obsahuje vstupni videa.
            output_STAT                 Do teto slozky se ulozi vysledek programu H1
            output_PCA                  -//- H2
            output_PCP                  -//- H3
            output_SPCP                 -//- H4
            pedestrian_video            -//- P6

2.  Vysvetlivky ke skriptum.

Hlavni skripty H1-H4 funguji nezavisle na sobe nasledujicim zpusobem:
    - Inicializace
    - Nahrani videa pomoci funkce P2 (simulovana vstupni data jsou vygenerovana pomoci P6).
    - Vypocet. H3 a H4 pouzivaji funkce P7 a P8.
    - Postprocessing. Pouziji se funkce P1 a P5.
    - Vystup, ulozeni videi pomoci P3, P4.

Popis detailu skriptu a nekterych bloku kodu lze nalezt v komentarich ke kodu. V nasledujici casti budou uvedeny dulezite vysvetlivky ke skriptum metod H1-H4, popis pomocnych skriptu a funkci P1-P8 je v komentarich ke kodu.

    H1      Approach_1_STATS.m
        Volba statistiky - radek 10. Volba vstupniho videa - radek 15. Pomoci hodnot true/false se nastavi vystup - radky 28 az 31.
        Na radku 68 se definuje parametr, ktery ovlivnuje pocet vybranych snimku videa.
        Dle zvolenych vystupu, program po ukonceni ulozi:
        - Jednotlive separovane slozky L, S, a taky puvodni video A, a masku M ve formatu AVI;
        - Kompilaci ze ctyr danych videi.
        - Strukturu ve forme MAT souboru, ktera obsahuje nekomprimovana videa (matice pozorovani) A, L, S a M, a jejich charakteristiky.
        - Textovy log soubor "(nazev)_(pristup)_log.txt", ktery obsahuje udaje o videu a vysledky vypoctu: hodnost L; ridkost S a M; SNR(L) (pro simulovana data).
            
    H2      Approach_2_PCA.m   
        Definice hodnosti vystupni matice L - radek 10. Volba vstupu - radek 13. Volba a forma vystupu - podobne - radky 27 az 30.
        
    H3      Approach_3_PCP_ALM.m
        Volba vstupu - radek 10. Volba vystupu - radky 23 az 26. V nasledujici casti se definuji nekolik parametru, ktere ovlivnuji chod iterovani:
        Radek 62 - parametr mi0, ktery slouzi jako korekce pocatecniho odhadu penalizacniho parametru mi (radek 75) pro zrychleni konvergence. Jeho hodnota byla urcena experimentalne.
        Radek 64 - parametr miIn, kterym je nasobena hodnota parametru mi po kazde iteraci.
        Radek 66 - parametr lambda0, ktery napodobi mi0 slouzi jako korekce pocatecneho odhadu regularizacniho parametru lambda (radek 76).
        Radek 68 - parametr delta - slouzi pro vypocet hodnoty pro ukoncovaci kriterium (radek 79).
        Radek 70 - maximalni pocet iteraci.
        Forma vystupu je podobna. Log soubor obsahuje kompletni informaci o prubehu iterovani. 
        
    H4      Approach_4_SPCP_ASALM.m  
        Volba vstupu - radek 10. Volba vystupu - radky 23 az 26. Parametry:
        Radek 57 - pomocna promenna d.
        Radky 62, 64, 66 a 70 - stejne jak v Approach_3_PCP_ALM.m
        Radek 68 - parametr epsilon - absolutni limita, ukoncovaci kriterium (radek 129, vypocet kriterialni hodnoty na radku 112).
        Radky 72 a 73 - definice parametru standartni deviace sigmaN a nasledny vypocet hranici nuN, pomoci niz se aproximuje slozka sumu N (radky 99 a 100).
        Forma vystupu a log souboru je podobna.
        
3.  Popis vstupnich videi.
       
       1)   test             - testovaci video o nizkem rozliseni (48x48 px), primarne pro zkouseni funkcnosti algoritmu ve fazi vyvoje.
       2)   escalator        - obsahem je staticke pozadi, pohybujici se lidi na popredi a pohybujici se schody, ktere se da povazovat za dynamicke pozadi.
       3)   rowing           - vyznamnou casti zaberu je dynamicke pozadi - voda, na popredi jsou pohybujici se veslari a bezci. Vypocet je pomerne casove narocny.
       4)   shop             - pohybujici se lidi na statickem pozadi, video je zatizeno slozitym osvetlenim a pohybujicimi se stiny.
       5)   traffic          - pohybujici se auta na silnici, pozadi je ve znacne mire staticke, avsak urcitou dynamiku predstavuji koruny stromu.
       6)   pedestrian       - simulovane video (muze byt interpretovano jak pohled shora na pohyb chodcu napr. namestim), je slozenim ryze nizkohodnostni struktury a ridke zmeny.
       7)   pedestrian_noisy - stejne jak predchozi, navic zatizene rovnomernym Gaussovskym sumem s definovanym rozptylem (byla pouzita hodnota rozptylu 0.0001).
       
-------------------------------

BP "Separace dynamickeho a statickeho obsahu ve videu", Ustav matematiky, VUT FSI, ak. rok 2019/20, autor: Vadym Serediuk, vedouci: doc. Mgr. Pavel Rajmic, Ph.D. 