abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 23:00 | Nová verze

    Komunita kolem Linuxu From Scratch (LFS) vydala Linux From Scratch 12.4 a Linux From Scratch 12.4 se systemd. Nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů přichází s Glibc 2.42, Binutils 2.45 a Linuxem 6.15.1. Současně bylo oznámeno vydání verze 12.4 knih Beyond Linux From Scratch (BLFS) a Beyond Linux From Scratch se systemd.

    Ladislav Hagara | Komentářů: 0
    dnes 10:55 | Pozvánky

    Organizátoři konference LinuxDays ukončili veřejné přihlašování přednášek. Teď je na vás, abyste vybrali nejlepší témata, která na letošní konferenci zaznějí. Hlasovat můžete do neděle 7. září. Poté podle výsledků hlasování organizátoři sestaví program pro letošní ročník. Konference proběhne 4. a 5. října v Praze.

    Petr Krčmář | Komentářů: 8
    dnes 02:22 | Nová verze

    Byla vydána verze 11.0.0 vizuálního programovacího jazyka Snap! (Wikipedie) inspirovaného jazykem Scratch (Wikipedie). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 0
    včera 06:00 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma. Vypíchnout lze, že v Plasmě byl implementován 22letý požadavek. Historie schránky nově umožňuje ohvězdičkovat vybrané položky a mít k ním trvalý a snadný přístup.

    Ladislav Hagara | Komentářů: 0
    30.8. 20:00 | Nová verze

    Wayfire, kompozitní správce oken běžící nad Waylandem a využívající wlroots, byl vydán ve verzi 0.10.0. Zdrojové kódy jsou k dispozici na GitHubu. Videoukázky na YouTube.

    Ladislav Hagara | Komentářů: 0
    30.8. 04:00 | Komunita

    Před necelými čtyřmi měsíci byl Steven Deobald jmenován novým výkonným ředitelem GNOME Foundation. Včera skončil, protože "nebyl pro tuto roli v tento čas ten pravý".

    Ladislav Hagara | Komentářů: 7
    29.8. 18:33 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 156 (pdf).

    Ladislav Hagara | Komentářů: 1
    29.8. 15:11 | Nová verze

    Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 25.8.1. Přehled novinek v Changelogu.

    Ladislav Hagara | Komentářů: 0
    29.8. 12:11 | IT novinky

    Včera večer měl na YouTube premiéru dokumentární film Python: The Documentary | An origin story.

    Ladislav Hagara | Komentářů: 0
    28.8. 23:33 | Nová verze

    Společnost comma.ai po třech letech od vydání verze 0.9 vydala novou verzi 0.10 open source pokročilého asistenčního systému pro řidiče openpilot (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (82%)
     (8%)
     (2%)
     (3%)
     (4%)
     (1%)
    Celkem 125 hlasů
     Komentářů: 9, poslední 28.8. 11:53
    Rozcestník

    Frekvenční spektrum videa podruhé

    12.10.2009 00:19 | Přečteno: 1338× | programování | poslední úprava: 12.10.2009 01:23

    Opět jsem si zaexperimentoval s Fourierovou transformací nad videemi. Teď byl cíl najít jednoduše čitelné vyjádření podobnosti encodovaného videa proti originálu.

    Experimentálně vyvinutá (prostě dává celkem rozumné výsledky ;-)) metoda je:

    Vem každý frame videa v daném časovém rozmezí, rozděl ho na bloky velikosti NxN (používal jsem většinou N=16), spočti power spectral density (PSD) nad blokem, zintegruj všechny PSD vektory takhle získané (v logaritmické škále, dB/Hz).

    Na to, že jsem si tuhle metodu vymyslel takříkajíc "z brucha", funguje překvapivě dobře. Používal jsem ffmpeg a dvě verze mencoderu pro encodování; novší, 2009-07-31, je označen opt_mencoder, druhý je od něj o rok starší; bez označení "mencoder" jsou videa encodovány přes ffmpeg. Testována byla na Baader Meinhof Komplex traileru a pár dalších videích.

    Grafy zobrazené níže mají v levém grafu integrované PSD vektory a vpravo jejich korelaci k prvnímu video souboru nebo framu. V pravém grafu je několik hodnot korelací - počítá se korelace od X-tého prvku vektoru k poslednímu, vzhledem k ose X. To značí, že čím vyšší hodnota X, graf ukazuje hodnotu korelace tím vyšších frekvencí. Např. při X=3 je zobrazena korelace original[3:] a encoded[3:] (v pythoní notaci), tj. od čtvrtého prvku ke konci vektoru (index vektoru jde od nuly).

    Pro ilustraci několik framů (první je zmenšený originál; případne můžu vyhrabat kompletní commandlajny jak se které video encodovalo):

    Vlajka (rychlá scéna):

    Tvář (statická scéna):

    Čím zmenšit a nenarušit frekvence?

    První oříšek byl výběr vhodné metody zmenšení originálního videa, protože encodované videa byly zmenšeny. Tady je zobrazeno porovnání PSD zmenšeného originálního framu a originálního framu (vyděleno poměrem počtu bloků originálu a počtu bloků zmenšeného framu):

    Tady mně překvapil lanczos filtr (resizováno gimp-em), kde jsem čekal, že "ořez frekvencí" se bude týkat nejvyšších frekvencí (šum), ale vypadá spíš jako generický low-pass filter. Mencoderův lanczos filtr se choval podobně. Po několika pokusech to dopadlo tak, že lanczos a nearest-neighbor ne, mezi bilinear a bicubic ve výsledku moc rozdíl nebyl.

    Výslední grafy

    PSD je počítáno na luma kanále framů. Pro "podobnost" integrovaných PSD vektorů jsem použil korelaci, která vypadá použitelně. Posun PSD grafu na ose Y má na svědomí změna světlosti kodekem (tudíž i změna amplitud). V pravém grafu korelace pro X větší 6 nemá příliš smysl (protože se počítá korelace příliš málo prvků). Soubory označeny jenom "argvNM" jsou z ffmpegu, ostatní obsahující řetězec "mencoder" jsou z mencoderu.

    Jsou vybrány typické případy (96%) s plus několik případu na zamyšlení.

    Rychlá scéna (11-12s):

    Tady korelace správně ukazuje změnu ve vysokých frekvencích, u singlepass ffmpeg VBR i CBR jsou patrné artefakty. U mencoderu (argv7) je rozdíl ve vysokých frekvencích (blur) způsoben lanczos filtrem při změně velikosti (a taky kubickou interpolací při deinterlace). "Ručně" jsme vybrali argv2 jako nejlepší, jenže pouhým okem to téměř nejde rozlišit (v případě 2-pass encodingu), náhodně jsme se dívali a porovnávali specifické framy (třeba argv[2-4] vypadají při přehrávání neodlišitelně).

    Převážne rychlé scény (7-13s):

    U mencoderu je tady vidět efekt vypnutí deinterlacu (argv7 vs argv8; možná by bylo lepší zkusit detelecine pullup filtr, v případě Baader/Meinhof to není potřeba, ale encodování musí univerzálně fungovat i pro interlacované videa).

    Překvápko s bicubic resize u mencoderu. Subjektivně na několika framech je mencoder s bicubic rezising lepší než s bilinear resizing (argv12 vs argv13), viz zachycené framy výše. Možná korelace není úplně nejvhodnejší nástroj (chtělo by to něco jako "weighted correlation", aby třeba nejvyšším frekvencím šla nastavit nižsí váha).

    Pomalé i rychlé scény (1-13s):

    Jediné překvapení tady je argv13 vs argv12: subjektivně jsou framy z bicubic-scaled argv13 lepší než argv12, nicméně korelace tvrdí něco jiného (nejspíš způsobeno odstraněním vysokofrekvenčního šumu v argv13, hodnoty 7-8 na ose X, viz levý graf), opět platí teze že by možná nebylo špatný se porozhlídnout po nečem specifictějším nežli korelace.

    Limitace metody

    Kromě zmíněných speciálních případů s korelací to funguje dobře za předpokladu, že codec má specifickou chybu; volně definováno - vždy rozostří, nebo přidá hrany/šum, jinými slovy nenastane situace kdy by energie dané frekvence v jednom framu byly nízké a naopak v jiném framu vysoké, tudíž rozdíl integrace energií v těchhle framech by měla za výsledek nulu (nebo něco blízké nule).

    Ze zkušenosti šum ve zdrojovém videu má taky "neočekávané" účinky - kodeky (nebo motion estimation atd.) mají tendenci vysokofrekvenční šum vyhladit, což subjektivně vede k lepšímu výsledku, ale na druhé straně korelace zobrazuje singlepass encodované videa "bližší" originálu, protože mají podobné vysokofrekvenční spektrum (i když hrany byly ve skutečnosti přidány).

    Závěr

    Můžete vyzkoušet zdrojáky jestli chcete. Syntax:

    video_psd_integrate.py -s NN -t MM [options] videofile1 [videofile2] ... [videofileN]
    psd_integrate.py imagefile1 [imagefile2] ... [imagefileN]
    

    U video_psd_integrate je parametr -s počáteční čas, -t jak dlouho od začátku počítat, -h nebo --help vyhodí kompletní help. Jako vedlejší účinek jsem taky zjistil, že vlákna v Pythonu jsou GIL-em brzděny úplně brutálně (sériové počítaní je rychlejší než paralelní i když máte volná jádra/procesory). Zdrojáky vyžadují numpy, matplotlib a ffmpeg.

    Je možné stáhnout grafy v SVG (ideální pro zoomování).

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.