Prolozte namerene body v rovine primkou tak, aby kvadraticka chyba byla minimalni
Z dane databaze obsahujici snimky tvari vytvorte pomoci PCA prostor tvari, kde jednotlive souradnice budou sestupne serazeny podle dulezitosti - vlivu na vzhled obliceju (mate 13 vstupnich obrazku, prostor tedy bude 12ti rozmerny), a urcete vektory baze, ktere jej generuji (eigenfaces - ty budou 220*170ti rozmerne). Promitnete obrazky z databaze do tohoto prostoru, ziskate tak pro kazdy oblicej vektor 12ti souradnic. Vyberte si libovolny z obrazku z databaze a zrekonstruujte jej s pouzitim postupne jednoho, dvou .... az vsech trinacti vektoru baze prostoru tvari (nezapomente pricist "prumernou tvar").
Kolik bazovych vektrou je nutne pouzit, aby si puvodni a rekonstruovany obrazek byly (subjektivne) podobne, tj. abyste poznali cloveka na obrazku?
(vstupy do zpravy kopirovat nemusite)
Body v rovine muzete zobrazit napr. plot (p (:,1), p (:,2), 'rx'); (cervene krizky)
Nenulova vlastni cisla matic MTM a MMT jsou stejna, vlastni vektory MTM lze z vlastnich vektoru MMT ziskat prenasobenim matici M.
Jelikoz s obrazky je nutno zachazet jako s vektory (a ne maticemi), pouzijte v = im(:); pro prevod obrazku na vektor a im = reshape (v, 220, 170); pro prevod zpet.
Pouzijte nasledujici funkce matlabu: eig pro vypocet vlastnich cisel, mean pro vypocet teziste, sortrows nebo sort pro razeni vl. cisel a vl. vektoru a reshape pro zmenu poctu radku a sloupcu matice.
V druhe uloze muzete pouzit jako zaklad skript faces.m, ktery obsahuje kod pro nacteni vsech obrazku tvari do jedne matice, a take kod pro serazeni vl. cisel a vl. vektoru podle velikosti.