Panoramatické fotky já mám rád

V dnešním článku si dovolím nastínit postup, jakým vytvořit dokonalou panoramatickou fotografii pomocí open sourcového nástroje GIMP. Problematika tvorby panoramatického obrázku mě zaujala natolik, že jsem nakonec vytvořil plug in pro GIMP, který tvorbu těchto obrázků posunuje do zcela nové dimenze.

Začněme pěkně od podlahy, během léta jsem si udělal dvě série fotek, ze kterých by měl jít poskládat panoramatický obrázek. Když se mi po nějaké době naskytla relativně volná neděle, pohroužil jsem se do problému, jak takový obrázek vytvořit. Protože už nějakou dobu vyznávám víru v open source software, padla volba na nástroj k tomuto účelu použitelný přirozeně na GIMP. Pokud máte nějaký jiný nástroj na úpravu fotografií, jako třeba Photoshop nebo Zoner, pak možná takovou funkci máte přímo ve svém nástroji a pak možná není tento článek tak úplně pro vás. Přesto můžete vytrvat, třeba se tu něco zajímavého přeci jenom dočtete.

Nejdříve ze všeho mě zajímalo, jestli neexistuje nějaká funkce na tvorbu panoramat přímo v GIMPu, případně jestli k danému účelu neexistuje nějaký plugin nebo skript. A skutečně něco takového existuje, jmenuje se to Pango a odkaz vám sem ani dávat nebudu. Funkce tohoto nástroje mě nijak zvlášť nenadchla, Pango v podstatě jenom přeskládá obrázky vedle sebe s překrytím, které mu zadáte, a nesrovnalosti na přechodu jednoho obrázku v druhý vyřeší nasazením filtru. Opravdu nic moc.

Takže jsem pátral dál a nalezl návod, jak takový obrázek vytvořit manuálně. To už bylo o něco lepší, postup řeší to, jak upravit barvy jednotlivých obrázků tak, aby dobře ladily dohromady, jak je ručně umístit aby se správně překrývaly, a jak je pootáčet případně trochu zvětšit/zmenšit, aby na sebe pasovaly ještě lépe. Jenže ani to mi nestačilo.

Ono totiž pokud fotíte sérii obrázků kolem sebe na běžný fotoaparát, který má s největší pravděpodobností rovný čip, pak se ty obrázky prostě překrývat nemohou a žádné zvětšování tomu nepomůže. My totiž místo toho, abychom ty obrázky měly jakoby promítnuté na jednotlivé roviny, potřebujeme, aby byly všechny promítnuté na jeden společný válec. Pokud by tomu tak bylo, pak do sebe budou pasovat úplně přesně.

No a tak místo zvětšování jsem zkoušel obrázky trochu zakřivit, aby víc odpovídaly tomu promítnutí na válec. K zakřivení obrázku je dostupný plugin hned v základní instalaci, jmenuje se Filters > Distort > Curve Bend... Touto funkcí se dá obrázek trochu pokřivit, takže pak skutečně jednotlivé obrázky do sebe zapadají trochu lépe, ale pořád to není ono. Ono totiž nestačí jen ho pokřivit v té ypsilonové - vertikální dimenzi. Ono je nutné ho trošku přihnout i v xové = horizontální dimenzi, a na to už jsem žádnou vhodnou funkci v GIMPu nenašel. Trochu by možná potřebné transformaci odpovídalo Filters > Map > Map Objects... a namapovat to na cylinder (válec) ale tahle funkce má 2 nedostatky - jednak ten válec danou fotkou obalí celý, takže abychom dostali potřebný výsledek, museli bychom canvas (plátno) obrázku na každou stranu nastavit, aby výsledek byl jen něco jako etiketa na pivní lahvi, a za druhé tato funkce používá k transformování obrázku asi OpenGL, což ve výsledku vede ke značné degradaci dat.

Čili, proč chodit ke kováříčkovi, když můžeme jít rovnou ke kováři. A tak jsem si řekl, že nejsnazší asi bude, když si naprogramuji vlastní plugin, který provede transformaci přesnou a dokonalou. Nejdříve jsem zkoumal, zda na to nebude stačit jen nějaký GIMPovský skript, ale seznal jsem, že ne. Programování pluginu pro GIMP bylo pro mě něco zcela nového, ale vzhledem k tomu, že už jsem v životě stihl napsat něco s použitím knihoven GTK+, nebyl to zase až takový problém. Samotný funkční plugin jsem měl hotový během hodinky. Nad čím jsem pak strávil víc času byla optimalizace transformační procedury jak na čas, tak na kvalitu výstupu. I když to zkraje vypadalo beznadějně, nakonec si myslím, že výsledek není až zase tak špatný.

Nástroj na správné pokřivení obrázků naleznete zde. Je tam i stručný návod ve wiki, jak ho instalovat a použít. Jenom shrnu, že pro linuxáky je nejjednodušší stáhnout zdroják z svn-ka a napsat v konzoli:
./configure
make
sudo make install
A je hotovo, plugin je pak dostupný z menu Filters > Distort > Adjust for Panorama. Pro windowsáky teď nevím a ani se mi to nechce moc řešit. Doufám, že časem to nějaký dobrovolník zkompiluje a přispěje hotovými binárkami, které pak na Sourceforge vyvěsím.

No a tak jsem se ještě k vlastní tvorbě panoramatu ani nedostal a už je to dlouhý, že to určitě nikdo přečíst celé nedokáže. Tak se asi radši rozloučím těmi svými dvěma ukázkami, a pokud byste někdo měl o podrobnější návod zájem, napište mi do diskuze a já se k problému ještě vrátím.

Hlasujte ve finále ankety Blogera roku

Autor: Pavel Krejčíř | čtvrtek 15.11.2012 8:30 | karma článku: 13,84 | přečteno: 1025x
  • Další články autora

Pavel Krejčíř

3D z hlubin dávnověku

2.2.2015 v 8:30 | Karma: 7,69