TIFF fájlokkal dolgozni jó. Gyorsan írható/olvasható formátum (ha nincs tömörítve!), cserébe pazarlóan bánik a tárhellyel. Ezért ebben archiválni butaság, a szintén veszteségmentes PNG tömörebb. Még tömörebb, ha a monochrome képeket RGB helyett szürkeárnyalatosként mentjük el. Ez egy-egy képnél nem gond, de ha sok TIFF-ről van szó már érdemes elgondolkodni egy kötegelt megoldásról. Jelen posztban TIFF képek grayscale PNG-be, valamint RGB PNG-k grayscale PNG-be történő tömeges konvertálásról lesz szó nyílt forráskódú programokkal – nem csak linuxereknek és nem csak analógosoknak.
Szükség lesz a digiKam képkatalogizálóra és az ImageMagick programcsomagra.
Méret a lényeg
Aki nagy felbontású kamerával fotóz az óhatatlanul szembesül tárhely problémával. Mármint hogy gyorsan fogy. A Nikon D800 legjobb minőséget adó 14bites veszteségmentesen tömörített RAW fájlja 38-45 MB körül van. Középformátumú filmmel még durvább a helyzet, röpködnek a 100 megabájtok. Egy nem is olyan nagy felbontású 2400dpi-s monochrome 6×6-os kocka bőven felette van – TIFF-ben. PNG-ben viszont könnyen lemehetünk 100 alá, 15-30% tárhelyet spórolhatunk. Példaként lássuk az alábbi felvételt:


A fenti kép 16 bites 2400 dpi, 7070×7136 pixel azaz 50,5 megapixel – egy tipikus 6×6-os negatívról szkennelt képkocka. (Szegélyeket rajta szoktam hagyni, hogy több terem legyen estleges forgatáskor.) A kép jelentős részét unalmas égbolt uralja, ezért még a TIFF deflate is viszonylag hatékonyan tudja tárolni. GIMP-ben megnyitva 470MB RAM kell neki. Lássuk a fájlméreteket:
Formátum | Fájlméret | Veszteség |
TIFF, tömörítetlen 16bit grayscale | 101,3 MB | 28,17% |
TIFF, deflate 16bit grayscale | 92,6 MB | 17,551% |
PNG, 16bit grayscale 9-es tömörítés | 78,8 MB | – |
Egy roll-on 12 felvétel fér el, ha ügyes vagyok 13. Már egy 100 tekercsből álló archívumnál is súlyos gigabájtokról van szó!
Persze mondhatod, hogy a 8 bites JPEG sokkal tömörebb. Igen, de a szürkének csak 256 árnyalatát írja le a 16 bit 65536-val szemben, ráadásul veszteséges tömörítéssel. Nem azért fotózok rollfilmre, hogy veszítsek a tonalitásból vagy butítsam képeim minőségét a DSLR szintje alá. 😉
A probléma
Jó, akkor mentsünk grayscale PNG-be. GIMP-ben ez nem gond, grayscale-re állítjuk és export PNG. Viszont a legtöbb tömeges feldolgozásra képes szerkesztő program, pl. a darktable, RawTherapee (de emlékeim szerint a Lightroom is) vagy akár a digiKam beépített szerkesztője csak is kizárólag RGB (azaz színes) PNG-t képes exportálni. A példaként felhozott felvétel viszont RGB módban 149,6MB lenne. Igen, közel duplája a szürkeárnyalatosnak!




RGB módban vörös (Red), zöld (Green), kék (Blue) csatornákra bontva kerül tárolása a kép, holott egy szürkeárnyalatos felvételen semmi szükség színeket leíró információkra. Kizárólag egy dolog a fontos: adott képpont mennyire világos – ezt pedig elég egyetlen egy csatornán eltárolni. Ez lenne a grayscale, azaz a szürkeárnyalatos “színmód” lényege.
Kicsit szakadjunk el a filmtől és nézzünk egy digitális forrású példát is, mert azért abból is lehet izgalmas monochrome képeket készíteni. Nikon D800 vágatlan teljes kockája, darktable-ben kidolgozva:




Sok finom részletet tartalmaz, ISO400-as zajcsillapítás nélkül, kevés a homogén felület – ezért nehezebben tömöríthető. 7378×4924 pixel, azaz 36,33 megapixel. Lássuk 8 illetve 16 biten mekkorát bukunk RGB módban:
Formátum | Fájlméret | Veszteség |
PNG, 8 bit RGB 9-es tömörítés | 36,7 MB | 36,23% |
PNG, 8 bit grayscale 9-es tömörítés | 23,4 MB | – |
PNG, 16 bit RGB 9-es tömörítés | 84,4 MB | 30,65% |
PNG, 16 bit grayscale 9-es tömörítés | 62,6 MB | – |
Az eredeti RAW fájl 44,1 MB – de ne felejtsük el, hogy az “csak” 14 bites.
Apró megjegyzés a 8 bit JPEG vs. 16 bit PNG-hez: a böngészőben látható 8 bites JPEG sem részleteiben, sem tonalitásában messze nem adja vissza azt amit az AdobeRGB színterű 16 bites monitoromon látok a szintén 16 bites PNG- megnyitva.!
Egy egyszerű parancssori megoldás
A legtriviálisabb “favágó” módszer a képek GIMP-ben egyesével történő hogymegnyitása/konvertálása/exportálása lenne. Azért ez elég macera.
Az ImageMagick csomag viszont tartalmaz egy ügyes kis programot, a convert-et. Grafikus felülete nincs, parancssorból indítható és paraméterezhető. Az ImageMagick-et ha nem is ismered, tudtodon kívül bizonyára már találkoztál vele: nagyon sok webszerver a háttérben ezt használja képek átalakítására.
Így néz ki a convert-tel egy RGB kép szürkeárnyalatosra konvertálása, azaz hogy csináljunk 3 színcsatornából egyet:
convert -colorspace GRAY rgb_peldakep.png gray_peldakep.png
Tehát egy RGB állományból kreáltunk egy másik grayscale képet. Mi van, ha egy könyvtár összes képét akarjuk átkonvertálni? Egy egyszerű for ciklus* segít a bajon, akár így ahogy van futtathatjuk is bash terminálban:
for img in $(find . -iname '*.png'); do echo -n "Converting $img"; convert -colorspace GRAY $img $img && echo ' [Done]'; done
*forrás: askubuntu.com fórum
Tömeges grayscale konvertálás grafikus felületen digiKam-mel
A fenti módszer szép és jó, de ha használunk egy olyan minden igényt kielégítő képkatalogizáló szoftvert, mint a digiKam, akkor annak a felületét dőreség elhagyni. A digiKam egy rendkívül robusztus rendszer, mindenkinek csak ajánlani tudom – félelmetes mi mindenre képes. Appimage-ként is letölthető, futtatható GNU/Linux-on, Mac-en de még Windowson is. Nyílt forráskódú, tehát ingyenes. Magyarul tud. Itt szerezheted be: digikam.org
Rengeteg szolgáltatása közül az egyik leghasznosabb a kötegelt parancssor kezelés, amivel több könyvtár tartalmán is végigszaladhatunk – vagy akár a teljes gyűjteményen. A gond, hogy önmagában ő is csak RGB kimenetet tud. De! Képes felhasználói szkripteket futtatni és külső programokat meghívni. Ezt most ki is használjuk: bedrótozzuk az ImageMagick-ból a convert-et. Kezdjük!
Jelöljük ki a konvertálni kívánt fájlokat és az “Eszközök” menüben a “Kötegelt sorkezelő” pontot kiválasztva, vagy csak szimplán a billentyűzet “B” gombját megnyomva már is létrehoztunk a kijelölésből egy listát, ami már csak is a mi parancsainkat várja. Ha más mappákból is szeretnénk hozzáadni képeket, akkor bátran zárjuk be – a lista megmarad – és válaszunk ki még képeket, azután nyomjuk meg a “CTRL+B”-t. Megint előjön a sorkezelő, az újonnan kiválasztott képekkel bővülve.




Az sorkezelő alap eszközeiből egyetlen parancsra lesz szükségünk, a legutolsóra: “User shell script” – lásd a képernyőkép alján (1a). Bökjünk rá kétszer, erre felveszi a hozzáadott eszközök listára (1b). Itt is kattintsunk rá és a jobb oldali bárbeszéd panelen (2) pötyögjük be szépen:
convert -colorspace GRAY $INPUT $OUTPUT
Lusták természetesen innen is felvehetik vágólapra. Mint látható, nem kell megadni fájlneveket ezt majd a sorkezelő megteszi helyettünk ahogy halad végig a képeken. Fontos, hogy “Output file type” az “Same as input” legyen, amint a képernyőmentésen is látható. A bal alsó panelen a “Viselkedés” fül alatt mindenképpen válaszuk ki az “Automatikus felülírás” opciót (3), így nem maradnak meg az eredeti helypazarló RGB fájljaink. Ha nagyon sok képet konvertálunk bekapcsolhatjuk a “Munka minden processzor magon”-t és mehetünk ellőni még egy teki filmet.
Már csak egy dolgunk van: kattintsunk bal fent a “Futtatás” gombra (4) és mondjunk végső búcsút az RGB képeinknek.
A sorkezelő legelső “Sorok” menüpontjában a felépített munkafolyamatot (ami ugye jelen esetben csak egyetlen parancs) elmenthetjük, a későbbiekben jobb lent a Munkafolyamat fülön bármikor újra előhívhatjuk.
Legközelebb már csak annyi lesz a dolgunk, hogy listára vesszük a képeket, kiválasztjuk az elmentett munkafolyamatot és bökünk a futtatás gombra. Bonyolultsága a ceruzahegyezéssel vetekszik.
Természetesen több utasítást és végigpörgethetünk – azért sorkezelő 😉 lásd TIFF-ből grayscale PNG:




A fenti képernyőmentésen például a szkennelt nyers RAW TIFF-ek szürkeárnyalatos PNG-be történő konvertálását szemlélteti. Invertálja a negatív képet, elforgatja 180°-kal, ír belőle egy PNG-t amit átkonvertál grayscal-re. Rengeteg időt spórolok vele, most hazaérve a Dolomitokból 4 teki előhívása / szkennelése után különösen hasznosnak bizonyult.
Sok másra is használható még a sorkezelő, pl. átméretezésre, JPEG konvertálásra, vízjelezésre, credit note rögzítésére, optimalizálásra, élesítésre és még hosszan sorolhatnám. Ha nem ismered a digiKam-et tegyél vele egy próbát, ez csak egy volt a rengeteg hasznos funkciója közül!
Jó éjt és felszabadult tárhelyet kívánok! 🙂
Up:
A darktable PNG exportja szerintem egy LUA szkripttel meghekkelhető, amivel kapásból grayscale lenne a kimenet. Ezen még dolgozom.