PNG-Denny

Manuál ve vývoji =)

interaktivní oprava defektů ve filmovém záznamu

© Vít Čondák 2018-2019

0. Úvod

Program PNG-Denny je určený k opravám škrábanců ve starších filmech.

Některé opravy je možné provést automaticky, jiné je možné provádět ručně (tj. klikáním myši).

Z ne zcela jasných příčin jsem v programu všude použil anglické popisy a k napsání přepínání jazyka jsem se zatím neodhodlal. =}

1. Příprava

Program záměrně nepracuje přímo s komprimovaným video souborem, protože většina video souborů používá ztrátovou kompresi a při každém zpětném ukládání upravených snímků by nevyhnutelně docházelo k jejich zkreslení kompresním algoritmem.

Program proto jako pracovní materiál používá snímky vyexportované do formátu .png.

Sám export snímků neprovádí, takže je pro export potřeba použít jiný program - nejlépe volně dostupnou utilitu FFMPEG.

Aktuální verzi je možné stáhnout na ffmpeg.org

Utilita se ovládá z příkazové řádky a příkaz k rozbalení všech snímků vypadá přibližně takto:

ffmpeg -i "jméno-video-souboru.mp4" %06d.png

Jméno video souboru se bude samozřejmě lišit podle toho, jaký soubor chcete upravit. =)

Druhý parametr udává formát, jak se budou soubory s obrázky jmenovat. "%06d" znamená, že jména budou šestimístná čísla (000000-999999), což by mělo obvykle bohatě stačit na běžný film. (Při obvyklých 25 snímcích za vteřinu a stopáži 90 minut se dostaneme na 135 000 snímků. V extrémních případech by bylo třeba jméno prodloužit na 7 číslic a parametr by tedy byl "%07d".)

Raději upozorňuji, že rozbalené snímky samozřejmě zaberou spoustu místa na disku, takže je třeba s tím počítat. Velikost každého snímku se liší v závislosti na rozlišení a jeho složitosti, ale u černobílého filmu se pravděpodobně bude pohybovat mezi 1 až 2 MB, takže pro rozbalení celého filmu je obvykle potřeba zhruba 250 GB volného místa. (A samozřejmě dalších 250 GB pro případné záložní kopie nebo pracovní verze.)

Většina filmů obsahuje i zvukovou stopu, takže je vhodné si ji také vyexportovat do samostatného souboru. Pokud budete audio také nějak upravovat (to PNG-Denny neřeší), tak je vhodné použít formát WAV:

ffmpeg -i "jméno-video-souboru.mp4" audio.wav

Jinak je možné použít i export původní audio stopy bez dekomprese. Např.

ffmpeg -i "jméno-video-souboru.mp4" -vn -acodec copy audio.aac

2. Spuštění

Program PNG-Denny je napsaný v C# a používá .NET, takže je poměrně malý a není třeba ho instalovat, ale stačí ho nakopírovat do adresáře, kde máte rozbalené snímky, a spustit ho. Program bude pracovat se všemi .png soubory, které v tom adresáři najde, a to v pořadí podle abecedy.

3. Princip práce

Pro používání programu je dobré udělat si alespoň přibližnou představu, jak uvnitř funguje, jaké jsou jeho schopnosti a jaká omezení.

Při psaní jsem vycházel z toho, že u filmu jsou obvykle po sobě následující snímky velmi podobné, takže program u většiny činností pracuje s trojicí snímků - aktuální políčko, jeho předchůdce a následovník.

Porovnáním této trojice se snaží na aktuálním políčku najít poškozená místa a opravit je pomocí částí jeho sousedů.

To funguje poměrně dobře u statických záběrů, které neobsahují příliš mnoho pohybu a kazů. V opačném případě může mít program problém rozpoznat, co je pohyblivý objekt a co chyba nebo který obrázek je ten "správný" a který poškozený.

Statické záběry je možné poměrně úspěšně opravovat automaticky, kdežto pohyblivé části obvykle vyžadují ruční práci a především kontrolu lidským okem. Většinou je poměrně snadné nějakým způsobem poškozené místo opravit, ale často je problém automaticky určit, které místo obrázku je poškozené. Zvlášť nepříjemné jsou střihy, rychle se pohybující objekty, náhlé změny osvětlení nebo lesklé předměty, které do kamery "házejí prasátka".

Program bohužel nedokáže jednoduše opravit případy, kdy je stejným způsobem poškozeno více po sobě jdoucích políček (například ožehnutý okraj) a jen omezeně je možné opravovat dlouhé svislé škrábance (následující políčka jsou obvykle poškrábaná na stejných místech, takže je pro opravu není možné použít.)

4. Navigace v programu

Levým tlačítkem myši je možné provádět ruční opravy (viz níže), kdežto pomocí pravého tlačítka je možné snímek posouvat (pokud je v aktuálním zobrazení příliš velký).

Kolečko myši umožňuje obrázek přiblížit nebo oddálit a klávesou F5 lze zapnout automatické přizpůsobení velikosti obrázku velikosti okna.

Při pohybu kurzoru po obrazovce se na dolní liště průběžně vypisují jeho souřadnice v rámci obrazovky, pozice pixelu v obrázku a jeho RGB hodnoty (případně v režimu náhledu jeho spolehlivost a podobně).

Klávesou F11 je možné vypnout nebo zapnout zobrazení lišt a zvětšit tak pracovní plochu.

Kurzorové šipky posouvají pozici v seznamu obrázků o jeden snímek. Ctrl+šipky posouvají o deset snímků, Alt a Shift délku skoku zvětšují na 100 a 1000 snímků.

Standardně je zapnutá funkce Autosafe, takže pokud jste na políčku provedli nějaké změny, tak při přesunu jinam se soubor automaticky přepíše. Pokud vám toto chování nevyhovuje, tak může funkci Autosafe vypnout a políčka ukládat ručně (tradičně CTRL+S).

5. Automatické opravy

Jakékoliv automatické výpočty je možné spustit na aktuálním snímku (F7) nebo s automatickým posunem dopředu (F8) nebo dozadu (F6).

Akce začínající slovem "Show" slouží k zobrazení náhledů různých pracovních polotovarů a nemění aktuální obrázek. Ten mění pouze akce začínající slovem "Fix".

K dispozici jsou tyto akce:

Časová náročnost a výsledek se budou velice lišit podle nastavených parametrů, takže pro snadnější nastavení jsou připraveny dva "presety":

Pokud některý z parametrů růčně změníte, přepne se preset do stavu Custom.

Jednotlivé parametry:

6. Ruční opravy

Obvykle stačí kliknout myší na poškozené místo a program se ho pokusi opravit. Program kontroluje shodu okolí a jeho velikost závisí i na velikosti štětce, takže pokud to nezabere, zkuste nastavit větší "štětec" a kliknutí zopakujte nebo klikněte na trochu jiné místo.

Kliknutím a potáhnutím myši je možné zkopírovat část snímku na jinou pozici (klonování). Funkce se řídí nastavením zdroje pro štětec, takže standardně používá jako zdroj aktuální snímek, ale pokud nastavíte u štětce jako zdroj jen předchůdce nebo jen následovníka, bude se jako zdroj klonované oblosti používat daný sousední snímek.

K vyhledávání podezřelých míst je možné použít klávesu F3. Pokud nějaké takové místo existuje, program na něj přesune kurzor myši. Pro automatické vyhledávání v celé sekvenci je možné použít klávesy F2 (směrem dozadu) a F4 (směrem dopředu).

X. Vytvoření upraveného videa

Nejprve je potřeba upravené snímky spojit do nového videosouboru bez zvuku:

ffmpeg -framerate 25 -i %06d.png -c:v libx264 -pix_fmt yuv420p -preset slower -crf 20 nove-video-bez-zvuku.mp4

Pak následuje spojení se zvukovou stopou:

ffmpeg -i nove-video-bez-zvuku.mp4 -i audio.aac -c copy nove-video-se-zvukem.mp4

Y. Aktualizace

2019-06-03 doplněno sekce navigace, parametry automatu a upraveno formátování + obrázek

2019-05-30 první úsporná verze zahrnující především přípravu

Z. Konec