Změřeno, ne slíbeno

Výkon

Každé číslo na této stránce pochází ze skutečných fotek na běžném notebooku (Apple M3, 16 GB) a skripty, které je vytvořily, jsou v repozitáři, takže je kdokoli může spustit znovu. Pod každým grafem je, co znamená pro tvoje tisky, a na konci slova, která stojí za čísly.

Proč je Fotollection rychlý

Žádná magie. Pár rozhodnutí udělaných před prvním řádkem kódu, každé z nich změřené.

  1. Nativní kód na každém jádře

    Práce Fotollection běží v Rustu, zkompilovaném pro tvůj procesor a rozloženém na všechna jeho jádra, s vektorovými instrukcemi (SIMD), které procesory pro pixely nabízejí.1,2,3

    23,5 / sexportovaných fotek s 16 MP

  2. Jen to, co je potřeba

    Otevření složky přečte EXIF každého souboru a jeho malý vložený náhled, nikdy celou fotku. Náhledy se ukládají do mezipaměti na disku.4

    0,12 sna otevření 1 000 fotek

  3. Nikdy víc pixelů než obrazovka

    Náhled má nejvýš 1 600 px a vzniká z kopie o 2 048 px držené v paměti. Celá fotka se čte, až když přiblížíš, a to po částech.

    17 msna překreslení náhledu

  4. Připraveno dřív, než klikneš

    Jakmile jsou hotové miniatury, připraví se na pozadí náhled každé fotky a uloží se na disk, zatímco čtvrtina paměti drží fotky kolem té, která je na obrazovce.

    27 msna otevření kterékoli fotky

  5. Nic dvakrát

    Barevný posuvník mění jen barvu, nikdy velikost. Všechny barevné posuvníky se složí do jedné tabulky 33 × 33 × 33 barev, takže deset posuvníků stojí tolik co jeden.

    2 mspro deset barevných posuvníků na náhledu

  6. Paměť v rámci limitu

    Fotollection zpracovává najednou jen tolik fotek v plné velikosti, kolik dovolí jeho paměťový limit, určený podle největší fotky v exportu.

    1,45 GBšpička paměti s 5 035 fotkami

  7. Kodéry vyladěné měřením

    Soubory pro tisk vynechávají optimalizaci tabulek, která je zmenšovala o méně než 1 % a stála třetinu času kódování.

    −33 %času kódování souborů pro tisk

  8. Grafická karta při úpravách

    Když se barevný posuvník hýbe, grafická karta kreslí z tabulky, kterou sestaví jádro. Exporty zůstávají na procesoru, takže tisk je na každém počítači stejný.

    1–2 msna krok posuvníku, dřív 26 ms

Kde se práce odehrává: Fotollection na tvém počítači proti běžnému webovému editoru
Kde se práce odehrává: Fotollection na tvém počítači proti běžnému webovému editoru

Až 20× rychlejší. Nový způsob, jak využít paměť.

v0.11.0 nově promýšlí, jak Fotollection drží tvoje fotky. Náhled každé fotky se připraví na pozadí, jakmile je hotová její miniatura, a uloží se na disk, čtvrtina paměti tvého počítače drží fotky kolem té, kterou vidíš, a fotka na obrazovce má vždy přednost. Výsledek: kterákoli fotka, blízká nebo vzdálená, JPEG nebo RAW, se otevře za 27 milisekund. Otevření RAW je až 20krát rychlejší než ve v0.9.0, JPEGu 10krát rychlejší, změřeno na stejných 422 fotkách z jedné cesty.5,6

20×rychlejší otevření fotky RAW než ve v0.9.0 (531 → 27 ms)
10×rychlejší otevření JPEGu než ve v0.9.0 (274 → 27 ms)
27 msna otevření kterékoli fotky, blízké i vzdálené (limit 100 ms)
Otevření fotky: v0.9.0 a v0.10.0 proti v0.11.0, na 422 fotkách z jedné cesty
Otevření fotky: v0.9.0 a v0.10.0 proti v0.11.0, na 422 fotkách z jedné cesty7
Odkud se bere náhled fotky: z paměti, pak z disku, pak ze souboru
Odkud se bere náhled fotky: z paměti, pak z disku, pak ze souboru

Dřív: každá fotka se dekódovala až po kliknutí

Až do v0.10.0 vznikal náhled teprve ve chvíli, kdy sis o něj řekl: soubor se načetl, fotka dekódovala (RAW vyvolal), otočila nastojato, zmenšila na 2 048 px a převedla do sRGB, pak se ořízla, obarvila, dostala datum a zakódovala pro obrazovku. U fotky s 20 MP z Lumixu GX9 to trvalo 274 až 278 ms u JPEG a 440 až 531 ms u RAW, pokaždé, když se otevřela fotka, která nebyla mezi posledními osmi. Pro jednu fotku dost rychlé; pro rychlé procházení cesty ne.

Standardní náhledy, jak je drží Lightroom

Od v0.11.0 se práce, na kterou uživatel čeká, udělá dřív, než si o ni řekne. Jakmile jsou miniatury složky hotové, Fotollection na pozadí vytvoří pro každou fotku kopii o 2 048 px, jednu fotku najednou na vlákno, a uloží ji na disk vedle miniatur jako JPEG o asi 0,66 MB (asi 280 MB pro celou cestu). Kliknutí na kteroukoli fotku, blízkou i vzdálenou, v tomto sezení i v příštím, začíná od této kopie: 27 ms pro JPEG i pro RAW. Zbývá jen vlastní práce náhledu (ořez, změna velikosti, barva, datum na fotce a kódování), stejných 27 ms jako z paměti. Náhled vytvořený z kopie na disku se od čerstvého liší v průměru o 1,35 úrovně z 255, příliš málo na to, aby to bylo vidět.8

Paměť využitá dobře, ne co nejméně

Prohlížeč fotek, který na notebooku s 16 GB drží v paměti osm fotek, notebook promrhá. Fotollection teď dává náhledům čtvrtinu paměti počítače (na Macu s 16 GB asi 190 fotek o 2 048 px, 20 vyvolaných RAW uchovaných pro jejich posuvníky a 600 MB pro zoom), počítanou v bajtech a uvolňovanou od nejstarší. Když je fotka na obrazovce, načtou se i další dvě ve směru, kterým se pohybuješ, a jedna za ní, takže šipky nikdy nečekají. Strop 2 GB pro exporty dál platí.

Fotka na obrazovce má přednost

Najednou se vyvolává jen jeden RAW, aby se dávka RAW fotek vešla do paměti. Dřív bylo pořadí ve frontě věcí náhody: připravovaný náhled, odhad velikosti exportu nebo export mohly nechat čekat fotku, na kterou jsi klikl. Teď každé vyvolání říká, kdo na něj čeká, a práce na pozadí ustoupí pokaždé, když ho potřebuje fotka na obrazovce. Stejná práce odhalila i dvě vzácná zaseknutí, která jsou teď pryč: jedno, kdy všechna vlákna čekala na vyvolání, na které už nezbylo žádné vlákno, a druhé, kdy obrazovka čekala na obrázek, o který si nikdy neřekla.

Verze JPEG p50 / p95 RAW p50 / p95 Jak
v0.9.0 274 / 286 ms 531 / 550 ms Dekódováno po kliknutí; RAW přes macOS
v0.10.0 278 / 293 ms 440 / 471 ms Dekódováno po kliknutí; RAW naším vlastním vyvoláním
v0.11.0 27 / 32 ms 27 / 30 ms Ze standardního náhledu na disku nebo z paměti

Měřeno na majitelově cestě do Prahy (396 JPEG a 26 RAW, 20 MP) na Apple M3 pomocí measure_browse: v0.9.0 sestavená z vlastního tagu, v0.10.0 na kódu těsně před touto změnou.

Rychlost: tisíc fotek mrknutím oka

Otevření složky přečte EXIF každé fotky a její malý vložený náhled, ne celý obrázek, a změněné nastavení překreslí jen náhled. Nativní Rust navíc porazí webový prohlížeč, který dělá stejnou práci: stejná rychlost exportu, rychlejší náhled a o čtvrtinu méně paměti.9

0,12 sna přečtení složky s 1 000 fotkami, osmkrát pod limitem
17 msna překreslení náhledu po změně
23,5exportovaných fotek s 16 MP za sekundu
Rychlost a paměť proti limitům stanoveným dřív, než se napsal kód
Rychlost a paměť proti limitům stanoveným dřív, než se napsal kód7
Stejná úloha ve Fotollection a ve webovém prohlížeči
Stejná úloha ve Fotollection a ve webovém prohlížeči7

Co se stane, když otevřeš složku

Složka fotek se nečte celá. Z každého souboru Fotollection přečte jeho data EXIF (datum, fotoaparát, místo) a malou miniaturu, kterou každý fotoaparát ukládá do souboru, a nic dalšího: 1 000 fotek zabere 0,12 s, proti rozpočtu 1 s stanovenému ještě před napsáním kódu. Ostřejší miniatury o 400 px pak vznikají na pozadí, na dvou vláknech, aby Fotollection zůstal svižný, a ukládají se do mezipaměti na disku, takže znovu otevřená složka je tu hned. U 5 035 fotek trval import 383 ms a vložené miniatury 236 ms.

Kam jde 17 ms náhledu

Změna nastavení překreslí náhled z kopie fotky o 2 048 px uložené v paměti, nikdy z celého souboru. Z 16,7 ms, které to trvá, zabere ořez a zmenšení Lanczosovým filtrem 9,7 ms, datum na fotce méně než 0,1 ms a kódování náhledu do JPEG pro obrazovku 7,0 ms. Tento kodér byl vyladěn měřením: s nastavením exportu (plné rozlišení barev a optimalizované tabulky) trval 16,2 ms; obrazovka je nepotřebuje, takže náhled používá poloviční rozlišení barev a obyčejné tabulky, zatímco exporty si nechávají plné barvy (4:4:4). Zkusil se i levnější filtr pro změnu velikosti a na tomto procesoru vyšel pomalejší (12,5 ms), takže Lanczos zůstal.

Nativní kód proti prohlížeči

Stejná úloha (dekódování, ořez na 2:3, datum na fotce, JPEG v kvalitě 95) běžela na stejných 95 fotkách ve Fotollection a v Chromiu s jedním workerem na jádro. Rychlost exportu vyšla stejně, 18,0 proti 17,9 fotky za sekundu, což vyvrátilo náš první odhad: prohlížeč pomalý není. Důvody pro nativní kód jsou jinde: Fotollection zapisuje soubory 4:4:4 v plném rozlišení barev, kde kodér prohlížeče barvy půlí, zachovává barevný profil každé fotky, zapisuje soubory přímo na disk a spotřeboval o čtvrtinu méně paměti (1,35 GB proti 1,78 GB). Od té doby se kodér pro tisk ještě zrychlil: 23,5 fotky za sekundu při 16 MP.

Grafická karta při úpravách, všechna jádra při exportu

Když táhneš barevným posuvníkem, grafická karta kreslí look ze stejné tabulky, kterou sestaví jádro Fotollection, a když pustíš, převezme to přesné vykreslení. Exporty zůstávají na procesoru, takže tisk vyjde na každém počítači stejně.

1–2 mskrok posuvníku na grafické kartě, proti asi 26 ms
0,13ΔE2000 mezi lookem z karty a přesným vykreslením
10,8exportovaných fotek s 26 MP za sekundu, šest najednou
Jeden krok barevného posuvníku: procesor proti grafické kartě
Jeden krok barevného posuvníku: procesor proti grafické kartě7
Rychlost exportu podle počtu fotek zpracovávaných najednou
Rychlost exportu podle počtu fotek zpracovávaných najednou7
Úpravy na grafické kartě, export na všech jádrech procesoru
Úpravy na grafické kartě, export na všech jádrech procesoru

Deset posuvníků za cenu jednoho

Každý barevný posuvník (jas, kontrast, teplota, sytost, vyblednutí, tónování stínů a světel, černobílá) se složí do jediné tabulky 33 × 33 × 33 barev, 35 937 bodů, které říkají, kam se každá barva posune. Použít ji na fotku znamená najít pro každý pixel jeho buňku v tabulce a interpolovat mezi čtyřmi jejími rohy (tetraedrická interpolace), takže deset posuvníků stojí tolik co jeden. Sestavení tabulky se všemi posuvníky nastavenými trvá asi 2,6 ms; její použití na náhled o 1 600 px méně než 2,2 ms; na export s 24 MP asi 24 ms.

Proč se tažení pořád zdálo pomalé a co změnila grafická karta

Při měření krok po kroku stál jeden pohyb posuvníku asi 26 ms a samotná barva z toho byla jen 2 ms: zbytek zabralo kódování náhledu do JPEG (7 až 11 ms) a jeho opětovné dekódování v okně (9 až 15 ms). Grafická karta odstraní obojí. Když tažení začne, holý náhled a maska toho, kde je fotka (ne datum na fotce, rámeček ani okraj), jdou do grafické karty jednou; při každém kroku za nimi putuje už jen nová tabulka a malý program ve WebGL2 ji interpoluje přesně tak jako jádro: 1 ms na krok ve WebKitu na macOS, 2 ms v Chromiu. Když posuvník pustíš, nahradí ho přesný render jádra. Obojí se porovnalo na výrazném looku se všemi posuvníky posunutými: liší se v průměru o 0,13 ΔE2000 a o 0,77 na 99. percentilu, hluboko pod 1, kterou oko pozná při srovnání vedle sebe.

Žádný přepínač není potřeba. Při prvním tažení si to Fotollection ověří sám: pokud chybí WebGL2, renderer je softwarový nebo zkušební krok trvá 8 ms či déle, zůstane po celé sezení na cestě přes procesor. Softwarový renderer v testu potřeboval 16,5 ms na krok, takže zůstat tam na procesoru je správně.

Exporty na všech jádrech

Dekódování a kódování fotky běží každé na jednom jádru, takže export je rychlý, když se zpracovává několik fotek najednou. Kolik jich to je, záleží na paměti: u fotek s 24 až 26 MP dávaly 2 najednou 4,9 fotky za sekundu, 4 dávaly 9,4, 6 dávalo 11,5 a 8 dávalo 12,5, přičemž paměť rostla z 0,49 na 1,21 GB. Fotollection volí počet podle paměťového rozpočtu 1,6 GB a velikosti největší fotky a zastaví se na 6, protože na fotkách ze skutečné cesty nebylo 8 najednou o nic rychlejší a spotřebovalo o 0,2 GB víc. Exporty grafickou kartu nikdy nepoužívají: tisk musí vyjít stejně na každém počítači a závisí na tom i testy, které exporty porovnávají bajt po bajtu.

Skutečná cesta: 422 souborů z Prahy

Testovací sady mohou výsledky přikrášlit, proto tady je jedna složka přesně tak, jak vyšla z fotoaparátu Lumix GX9 po víkendu v Praze: 396 JPEGů s 20 MP, každý asi 11 MB, a vedle nich 26 souborů RAW, celkem 4,7 GB. Při otevření se EXIF všech souborů přečte za 0,23 sekundy. Náhled se překreslí za 19 ms, RAW se vyvolá za 0,35 sekundy a deset pohlednic se překreslí za 21 ms. Dne 2026-11-03 dvě čísla na těchto velkých souborech překročila svůj limit: export běžel rychlostí 7,6 fotky za sekundu a špička paměti dosáhla 2,14 GB. Příčina byla nalezena a opravena ve v0.9.7: JPEGy se teď exportují rychlostí 10,1 za sekundu a celý běh zůstane pod 1,31 GB.10,11

0,23 sna otevření všech 422 souborů včetně EXIF
19 mspřekreslení náhledu, p95 (limit 50 ms)
0,35 sna vyvolání RAW s 20 MP (medián)
21 msna překreslení deseti pohlednic (limit 100 ms)
10,1 / sexportovaných JPEGů (limit 8 / s)
1,31 GBšpička paměti, JPEG i RAW (strop 2 GB)

Dva nesplněné rozpočty a jejich příčina

Na těchto souborech s 20 MP první běh nesplnil dva rozpočty: export běžel rychlostí 7,6 fotky za sekundu a paměť vyvrcholila na 2,14 GB, nad stropem 2 GB. Měření každé fáze jedné fotky ukázalo, kam čas šel: dekódování asi 100 ms, ořez 2 ms a kódování tisku 203 ms. Kodér pro tisk optimalizoval své tabulky ve druhém průchodu, který držel v paměti každý koeficient obrazu, asi 160 MB na fotku, šest fotek najednou asi 1,5 GB, a to pro soubory jen o 0,9 % menší. Se standardními tabulkami zapisuje soubor po pruzích: 138 ms, stejná chyba vůči vykreslenému obrazu, o pár kilobajtů víc.

Část paměti vůbec nepatřila Fotollection. Benchmark vytvářel miniatury na všech jádrech, kde Fotollection používá dvě vlákna na pozadí, a během exportu držel naživu svá vlastní měření náhledů; změřeno tak, jak Fotollection skutečně pracuje, zbývá před začátkem exportu 0,35 až 0,39 GB. Od v0.9.7 se počet fotek zpracovávaných najednou řídí i největší fotkou exportu (u velmi velkých méně), takže vrchol zůstane pod stropem při jakékoli velikosti: 10,1 fotky za sekundu a 1,31 GB pro tuto složku.

Paměť: 5 035 fotek a drží se na stejné úrovni

Fotollection drží v paměti jen pár bajtů na fotku, zapisuje miniatury do mezipaměti na disku a zpracovává najednou jen tolik obrázků v plné velikosti, kolik se vejde do jeho paměťového limitu. Paměť se proto drží na stejné úrovni, i když cesta naroste na tisíce fotek.

1,45 GBšpička paměti pro 5 035 fotek
1,35 GBšpička paměti pro 95 fotek
53×víc fotek za 0,1 GB navíc
Špička paměti, když dávka roste na 5 035 fotek
Špička paměti, když dávka roste na 5 035 fotek7

Proč paměť neroste se složkou

Fotollection drží v knihovně jen pár bajtů na fotku (13 MB pro 5 035 fotek), miniatury zapisuje do mezipaměti na disku, místo aby je držel v paměti, v paměti uchovává omezený počet náhledů a v plné velikosti zpracovává najednou jen tolik fotek, kolik se vejde do jeho rozpočtu. Mřížka na obrazovce je virtuální: existují jen dlaždice, které vidíš. Pro test bylo stejných 95 fotek nalinkováno 53krát do složky s 5 035 soubory:

95 fotek 5 035 fotek
Import a EXIF 5 ms, 7 MB 383 ms, 13 MB
Miniatury 400 px do mezipaměti na disku 47,8 fotky/s 46,4 fotky/s
Export, 6 najednou 18,0 fotky/s 15,4 fotky/s, 0 selhalo
Nejvyšší spotřeba paměti za celý běh 1,35 GB 1,45 GB

53krát víc fotek stojí o 0,1 GB víc. Dlouhý export je na fotku o něco pomalejší jen proto, že běžel přes pět minut, a procesor notebooku se při trvalé zátěži zpomalí.

Kvalita tisku: tisk vypadá jako fotka

Tisky z webového editoru často vypadají ploše: zahodí barevný profil, zmenší fotku na 2 000 px a uloží ji v kvalitě 80 s polovičními barvami. Fotollection profil zachová a exportuje v plném rozlišení ve 4:4:4.

0,19barevná chyba; oko si začne všímat u 1
4:4:4plné barevné rozlišení; webový editor ho zpolovičí
87 %jemných detailů, které webový editor při 2 000 px ztratí
Co export zachová z originálu, proti běžnému webovému editoru
Co export zachová z originálu, proti běžnému webovému editoru7

Proč tisky z webového editoru vypadají ploše

Test exportuje 20 fotek z fotoaparátu a 5 verzí v Display P3 (širší barvy novějších telefonů a Maců) skutečným exportem Fotollection, pak oba soubory načte nezávislým dekodérem, převede je přes jejich barevné profily do CIELAB a porovná pixel po pixelu s originálem. Stejným porovnáním projde i typický export z webového editoru: profil zahozený, zmenšeno na 2 000 px a pro tisk zase zvětšeno, uloženo v kvalitě 80 s polovičním rozlišením barev (4:2:0).

Medián Fotollection, sRGB Webový editor Fotollection, Display P3 Webový editor
ΔE2000 (barevná chyba, pod 1 je neviditelná) 0,19 1,39 0,31 2,15
PSNR 52,6 dB 37,9 dB 50,8 dB 37,0 dB
Zachovaná sytost 100 % 99,9 % 99,9 % 86,8 %
Zachované jemné detaily 99,8 % 13 % 100 % 18 %

Plochý vzhled vysvětlují dvě příčiny. Zmenšení na 2 000 px a nové zvětšení pro fotolab zahodí 87 % jemných detailů, díky kterým tisk působí ostře. A zahození barevného profilu přečte fotku v Display P3, jako by byla v sRGB, což jí vezme 13 % sytosti. Fotollection profil zachová (25 z 25 souborů), exportuje v plném rozlišení fotky s plnými barvami (4:4:4) v kvalitě 95 (tehdy měřeno; od v0.13.0 je výchozí 90, stále pod viditelným rozdílem) a jeho větší chyby leží jen na ostrých hranách, kde se každý JPEG nadře nejvíc. Ještě přijde: skutečné soubory HEIC z iPhonu a tisky změřené spektrofotometrem.

Fotky pro Facebook a Instagram: lehké a pořád to je ta fotka

Facebook zmenší každou fotku na 2 048 px, znovu ji zkomprimuje a barevné profily ignoruje. Export Share tuhle práci nejdřív udělá pořádně, takže po Facebooku zůstane fotka víc sama sebou než obvyklým způsobem.

99,6 %barev fotky v Display P3 zachovaných po Facebooku, proti 86 %
2 048 pxvelikost, kterou Facebook nechá být
½souboru v Original size, každý pixel zachovaný
Fotky pro Facebook: co uvidí diváci, když je Facebook znovu zkomprimuje
Fotky pro Facebook: co uvidí diváci, když je Facebook znovu zkomprimuje7

Co Facebook s fotkou udělá a co uděláme my předem

Facebook zmenší každou fotku nejvýš na 2 048 px, znovu ji zkomprimuje zhruba v kvalitě 71 s polovičním rozlišením barev a barevné profily ignoruje. Export Share tuhle práci udělá pořádně ještě před nahráním, takže Facebook už nemá co zmenšovat: fotka se přes svůj profil převede do sRGB, zmenší Lanczosovým filtrem v lineárním světle, lehce doostří a uloží v kvalitě 88. Každé nastavení bylo zvoleno měřením: silnější doostření (0,35 místo 0,2) dopadlo hůř a kvalita 84 nebo 80 ztratila víc, než ušetřila.

Medián Original size Facebook, 2 048 px Instagram, 1 080 px
Velikost souboru (JPEG z fotoaparátu o 3,08 MB) 1,42 MB 0,51 MB 0,24 MB
SSIM proti ideálnímu zmenšení (1 je totožné) 0,981 0,979 0,982
ΔE2000 0,96 1,27 1,58

I po vlastní rekompresi Facebooku zůstane výsledek blíž fotce než obvyklým postupem (SSIM 0,965 proti 0,961) a fotka v Display P3 si uchová 99,6 % barev místo 86 %, protože její profil byl převeden na skutečné barvy sRGB, a ne zahozen. Presety se zmenšením zůstávají nad ΔE 1 kvůli polovičnímu rozlišení barev, které každá platforma stejně použije; Original size zachová každý pixel zhruba v polovině velikosti souboru, pod ΔE 1.

RAW z fotoaparátu: otevři ho tak, jak je

Fotollection otevírá soubory RAW z devíti běžných fotoaparátů tak, jak jsou, bez převádění a na Windows a Linuxu i bez instalace čehokoli. Od v0.10.0 je celý obrázek vlastním vyvoláním Fotollection pro každý fotoaparát se snímačem Bayer, vytvořeným z vlastních dat fotoaparátu jako v RAW editoru, kdežto Adobe DNG Converter jen převede jeden soubor RAW na jiný.12,13,14,15

9–32 msminiatura RAW z náhledu uvnitř souboru
0,3–0,7 svlastní vyvolání celé fotky ve Fotollection
1,2–1,8 sAdobe DNG Converter na soubor, jen na převod
RAW z fotoaparátu: od souboru na obrazovku, podle fotoaparátu a proti Adobe DNG Converteru
RAW z fotoaparátu: od souboru na obrazovku, podle fotoaparátu a proti Adobe DNG Converteru7
Fotka RAW od souboru k tisku
Fotka RAW od souboru k tisku
Brána vyvolávání: fotka na obrazovce má přednost, práce na pozadí čeká
Brána vyvolávání: fotka na obrazovce má přednost, práce na pozadí čeká

Co snímač doopravdy zaznamená

Snímač fotoaparátu je mřížka milionů drobných jamek, kterým se říká fotobuňky. Dokud je závěrka otevřená, každá z nich sbírá světlo, které na ni dopadne, a mění ho na elektrický náboj; když se zavře, převodník změní každý náboj na číslo. Vztah je lineární: dvakrát víc světla dá dvakrát větší číslo. Naše oči lineární vůbec nejsou, jas posuzují poměrově, a proto soubor RAW vypadá tmavě a ploše, dokud se nevyvolá.

Tu mřížku vyčítají dva druhy snímačů:

  • CCD (charge-coupled device) posouvá náboj každé fotobuňky, řádek po řádku, k jednomu zesilovači na okraji čipu. Byl to snímač prvních digitálních fotoaparátů a mnoha raných digitálních stěn pro střední formát: čisté snímky, ale pomalé vyčítání a velká spotřeba energie.
  • CMOS dává každé fotobuňce vlastní zesilovač a vyčítá jich mnoho najednou. Je rychlejší, spotřebuje méně energie a jeho výroba je levnější, takže ho dnes má téměř každý fotoaparát a telefon. Většina snímačů CMOS vyčítá řádky jeden po druhém, a proto se rychle se pohybující objekt na fotce pořízené elektronickou závěrkou může naklonit (rolling shutter) a proto se vrstvené snímače, které vyčítají mnohem rychleji, naklánějí méně.

Čísla mají mnohem víc stupňů než JPEG. Fotoaparát ukládá 12 nebo 14 bitů na fotobuňku, 4 096 nebo 16 384 úrovní, kde JPEG drží 8 bitů, 256 úrovní. Právě tyto úrovně navíc dovolí zvednout stín nebo stáhnout jasnou oblohu bez pruhování. A žádné světlo není nula: každý snímač přidává malý posun, úroveň černé, aby se šum kolem černé neořízl. Ve vzorku z Nikonu D750 je černá 600 a nejjasnější hodnota, kterou snímač udrží, úroveň bílé, je 15 520. Úplně první věc, kterou každý vyvolávač RAW udělá, je převést tato dvě čísla na 0 a 1, pro každou pozici barevného filtru, protože některé fotoaparáty dávají každé z nich vlastní úroveň černé.

Barva pochází z filtru nad každou fotobuňkou

Fotobuňka měří jen to, kolik světla dopadne, nikdy jeho barvu. Aby snímač viděl barvy, je pokrytý maticí barevných filtrů: nad každou fotobuňkou je drobný červený, zelený nebo modrý filtr, takže každá počítá jen část spektra.

  • Bayer, kterou si v roce 1976 nechal patentovat Bryce Bayer z Kodaku, opakuje čtverec 2 × 2: jedna červená, dvě zelené, jedna modrá. Polovina fotobuněk je zelených, protože naše oči berou většinu vjemu detailu ze středu spektra, takže zelená nese většinu ostrosti. Tento vzor používá téměř každý fotoaparát, v jedné ze čtyř orientací (RGGB, BGGR, GRBG, GBRG), kterou musí soubor uvést.
  • X-Trans, vzor Fujifilmu od roku 2012, opakuje čtverec 6 × 6 s červenou, zelenou a modrou v každém řádku i každém sloupci. Jeho nepravidelné rozložení snižuje pravděpodobnost barevného moaré na jemných opakujících se detailech, takže Fujifilm může vynechat rozmazávací filtr, který má mnoho snímačů, za cenu obtížnější rekonstrukce.
  • Jiná řešení: monochromatické snímače nemají filtr vůbec, takže každá fotobuňka vidí plný detail (fotoaparáty Monochrom od Leicy); Foveon od Sigmy skládá na sebe tři vrstvy, které pohlcují barvy v různých hloubkách křemíku; mnoho telefonů seskupuje čtyři fotobuňky jedné barvy (Quad Bayer) a za šera je čte jako jednu.

Bayerův snímač s 24 MP tedy zaznamená 24 milionů čísel, každé pro jedinou barvu: dvě ze tří barev každého pixelu chybějí. Proměnit tuto mozaiku v obraz je úkol demozaikování, viz níže.

Co obsahuje soubor RAW

JPEG je hotový obrázek: fotoaparát už udělal všechna rozhodnutí. Soubor RAW drží čísla snímače z doby před těmito rozhodnutími, se vším, co je potřeba k tomu, aby se udělala později:

  • samotné vzorky, jeden na fotobuňku, a pod jakou barvou filtru každý ležel;
  • úrovně černé a bílé;
  • aktivní oblast (fotobuňky, které viděly světlo; pár řádků a sloupců na okrajích je záměrně zakrytých, aby se změřila černá) a výchozí ořez fotoaparátu;
  • vyvážení bílé, které fotoaparát zvolil při pořízení fotky;
  • barevné matice, které říkají, jak se vlastní červená, zelená a modrá tohoto snímače vztahují k barvám, které vidí lidé;
  • náhled, JPEG, který si fotoaparát udělal sám, s vlastní barvou a tónem, a k tomu data EXIF.

Každý výrobce má svůj formát, většinou postavený na TIFF a zčásti nezdokumentovaný: CR2 a CR3 (Canon), NEF (Nikon), ARW (Sony), RW2 (Panasonic), ORF (Olympus), RAF (Fujifilm). DNG je formát, který Adobe otevřeně publikuje (verze 1.7), používají ho Ricoh, Leica, Pentax a mnoho telefonů a právě podle jeho pravidel postupuje tato stránka.

Fotollection čte DNG vlastní čtečkou napsanou podle specifikace a ostatní formáty rozbaluje rawler, knihovna pod licencí LGPL zabudovaná do Fotollection. Miniatury v mřížce data snímače vůbec nepoužívají: pocházejí z náhledu uvnitř souboru, za 9 až 32 ms, a proto se složka souborů RAW otevře stejně rychle jako složka JPEG.

Demozaikování: dopočítání dvou chybějících barev

Rekonstrukci dvou chybějících barev každého pixelu z jeho sousedů se říká demozaikování a ta víc než kterýkoli jiný krok rozhoduje o tom, jak ostrá a čistá fotka z RAW bude. Každá metoda stojí před stejným dilematem: průměrovat sousedy je bezpečné v rovných plochách, ale přes hranu to smíchá dva různé povrchy, takže umění spočívá v tom poznat, kteří sousedé k sobě patří.

  • Bilineární metoda prostě zprůměruje nejbližší fotobuňky každé barvy. Je to dno, podle kterého se měří každá metoda: měkké a s barevnými lemy podél každé ostré hrany, protože červená, zelená a modrá se průměrují přes trochu odlišná místa.
  • Malvar–He–Cutler (2004) vychází z tohoto průměru a opravuje ho detailem barvy, kterou fotobuňka viděla, pomocí pevných filtrů 5 × 5. Je ostřejší a pořád velmi rychlá. Fotollection s ní vyvolával až do v0.10.0.
  • PPG (patterned pixel grouping) nejdřív rozhodne, ve kterém směru se obraz mění nejméně, a interpoluje jen v tomto směru. Používá ji rawler a do v0.10.0 ji pro většinu formátů používaly i verze Fotollection pro Windows a Linux.
  • RCD (ratio corrected demosaicing, od Luise Sanze Rodrígueze) pracuje s poměry mezi barvami místo rozdílů, což lépe drží ve světlých i tmavých oblastech, a je známá málem artefaktů na jemných detailech; nabízejí ji darktable a RawTherapee.
  • Markesteijn, podle Franka Markesteijna, je metoda určená pro X-Trans, v jednom průchodu nebo, pomaleji a čistěji, ve třech.
  • Demozaikování Fotollection od v0.10.0 přebírá od RCD způsob, jak rozhodnout o směru, pak odhadne zelenou z každé strany opravenou o vlastní barvu fotobuňky (jak to dělali Hamilton a Adams), váženou podle toho, jak moc se každá strana mění. Nejdřív jsme napsali vlastní poměrový krok RCD a na našich testovacích obrazcích dopadl hůř, takže v aplikaci je varianta, která zvítězila, pod vlastním jménem.

Když metoda odhadne špatně, projeví se to čtyřmi typickými způsoby:

  • zip (zipper): řada střídavě světlých a tmavých pixelů podél ostré hrany, kde metoda vzala sousedy z obou stran;
  • bludiště (maze): jemný červovitý vzor v rovných plochách, když dvě zelené Bayerova čtverce nečtou úplně stejně (leží na řádcích s jinými sousedy a na mnoha snímačích se liší o procento nebo dvě);
  • falešné barvy: barevné tečky nebo lemy na detailu, který je ve skutečnosti šedý, jako látka, vlasy, cihlová zeď nebo vzdálený plot;
  • moaré: barevné vlny přes velmi jemné opakující se vzory, jemnější, než dokáže barevný filtr navzorkovat.

Jak jednu hodnotíme. Naše oči snadno oklame výsledek, který vypadá ostřeji, takže každá metoda se hodnotí na obrázcích, jejichž pravda je přesně známá. Počítač nakreslí pět testovacích obrazců o 768 px: zónovou desku (kruhy, které se k okraji zjemňují až po nejjemnější detail, který udrží zelené fotobuňky), Siemensovu hvězdu se 72 paprsky, pruhy syté barvy na šedé ve třech směrech, plynulé barevné přechody a rovnou šedou se dvěma zelenými o 2 % od sebe. Každý se převede na to, co by zaznamenal Bayerův snímač, demozaikuje se a porovná s originálem. PSNR měří celkovou chybu v decibelech (víc je lépe; každých 6 dB ji půlí); falešná barva je průměrná barva, která se objeví na šedých obrazcích; chyba hran je průměrná chyba do 2 px od hrany.

Obrazec (768 px) Bilineární Malvar (naše do v0.10.0) Naše od v0.10.0
Zónová deska: PSNR, víc je lépe 13,0 dB 17,3 dB 16,5 dB
Zónová deska: falešná barva, méně je lépe 65,9 43,0 18,7
Siemensova hvězda: PSNR 21,3 dB 25,2 dB 37,9 dB
Siemensova hvězda: falešná barva 9,4 8,4 0,16
Pruhy syté barvy: chyba podél hran, méně je lépe 11,6 21,6 10,5
Plynulé přechody: PSNR 78,9 dB 77,5 dB 78,4 dB
Rovná šedá s rozdílem zelených: bludiště, méně je lépe 0,38 0,38 0
Textura s vadnými pixely: zbylé na 10 000, méně je lépe 35,8 66,5 0

Malvar je na jemném šedém detailu asi o 4 dB lepší než bilineární metoda, jak slibuje jeho článek, ale horší podél hran mezi sytými barvami, protože jeho oprava si půjčuje detail jedné barvy pro ostatní a předpokládá, že se mění společně, což červená cedule na šedé zdi nedělá. Ani jedna neodstraní bludiště, které není problémem demozaikování, ale rozdílem mezi dvěma zelenými, který je třeba vyrovnat předem. To jsou mezery, které náš řetězec od v0.10.0 zavírá: vadné pixely a nerovnováha zelených se opraví, dokud každá fotobuňka drží jen to, co změřila, směrové demozaikování zrekonstruuje barvy a malý medián na barevných rozdílech odstraní zbylou falešnou barvu. Na testovacích obrazcích vítězí všude kromě celkového PSNR zónové desky, kde je o 0,8 dB pod Malvarem u nejjemnějšího detailu, kde aliasuje každá metoda; i tam se jeho falešná barva půlí. Na devíti skutečných souborech přiblíží vyvolání každého fotoaparátu s Bayerovým snímačem k vlastnímu JPEG fotoaparátu stejně nebo víc a na 24 MP stojí asi 180 ms proti Malvarovým 40: pár desetin sekundy navíc na fotku, za tisky s čistšími detaily.

Od barev fotoaparátu k tvým

Červená, zelená a modrá fotoaparátu nejsou ty z tvé obrazovky: filtry každého snímače používají vlastní barviva a překrývají se jinak než čípky našich očí. Barevné matice v souboru převedou barvy fotoaparátu do CIE XYZ, standardního modelu lidského barevného vidění definovaného v roce 1931, a odtud do sRGB, barevného prostoru většiny obrazovek a fotolabů.

  • Vyvážení bílé přichází první: zisk na červené a na modré, aby něco bílého ve scéně vyšlo neutrálně. Fotoaparát zaznamená zisky, které zvolil, a Fotollection je použije před demozaikováním, aby barevné rozdíly, o které se výše uvedené metody opírají, zůstaly malé.
  • DNG obvykle nese dvě matice, jednu změřenou pod teplým žárovkovým světlem a jednu za denního světla. Ta správná pro tvou fotku leží mezi nimi: vyvolávač z vyvážení bílé snímku zjistí jeho světlo jako barevnou teplotu a obě smíchá. Fotollection dělá totéž pro ostatní formáty, z matic, které rawler zná pro každý model fotoaparátu.
  • To všechno se děje v lineárním světle, na vlastní stupnici snímače, před jakoukoli křivkou. Míchání, škálování a zmenšování barev v lineárním světle dává fyzikálně správné výsledky; po křivce to tmaví hrany a posouvá barvy.

Vzhled fotoaparátu. Vlastní JPEG fotoaparátu není neutrální: každý výrobce přidává svůj kontrast, své barvy a své pleťové tóny a tento vzhled je jedním z důvodů, proč si lidé vybírají značku. Od v0.10.0 se fotka RAW otevře v neutrálním podání, věrném matici snímače, se stíněním objektivu a expozicí, kterou zvolil fotoaparát; Like the camera’s JPEG je o jedno kliknutí dál v kartě RAW colour fotky RAW, pro jednu fotku nebo pro všechny RAW najednou. (Do v0.10.0 se každý RAW přizpůsoboval JPEG fotoaparátu; projekt uložený tehdy si tento vzhled ponechá.) Tato volba přizpůsobí JPEG fotoaparátu oběma způsoby, jednou křivkou a maticí nebo jednou křivkou na kanál, a ponechá ten, který je pro daný soubor blíž: na Nikonu D750 rozdíl půlí, z 2,26 na 1,16 v ΔE2000. Miniatury v mřížce si ponechávají vlastní náhled fotoaparátu, jako v Lightroomu.

Tón: od lineárních čísel k obrazu

Lineární čísla vypadají na obrazovce tmavě a mdle, protože zdvojnásobení světla, které snímač zaznamená jako dvojnásobné číslo, nám připadá jako jeden stupeň jasu. Tónová křivka promění stupnici snímače v obraz: umístí střední šedou, zvedne stíny, světla jemně zaoblí, místo aby je naráz ořízla, a dá obrazu kontrast. Obraz se pak uloží s křivkou sRGB (její „gamma“), která věnuje víc z 256 úrovní JPEG stínům, kde si naše oči kroků všimnou nejvíc.

Dvě opravy, které fotoaparát dělá ve svém JPEG, v datech RAW nejsou, a obě jsou pro tisk důležité:

  • Stínění objektivu: každý objektiv je směrem do rohů tmavší. Fotollection změří, o kolik je fotoaparát zesvětlil, z jeho vlastního náhledu, jako radiální zisk. Když se naše vyvolání DNG poprvé porovnalo s JPEG fotoaparátu, střed byl asi o 4 L* příliš světlý a rohy o 1,5 příliš tmavé; radiální zisk snížil rozdíl z ΔE 3,8 na 2,67, přičemž každá oblast fotky byla v rozmezí ±0,5 L*.
  • Zkreslení: mírný soudkovitý nebo poduškovitý tvar objektivu. Fotoaparáty Micro Four Thirds (Panasonic, Olympus) jsou navrženy tak, aby ho opravoval fotoaparát, a jejich soubory zaznamenávají jak. Na Macu tyto soubory vyvolává macOS, který opravu použije; oprava v našem vlastním vyvolání je v plánu (FR-085).

Jak Fotollection vyvolá RAW, krok za krokem

Pro plné vyvolání, to za náhledem tisku, zoomem a exportem:

  1. Rozpoznání formátu podle prvních bajtů souboru, nikdy podle názvu, takže i přejmenovaný soubor nebo RAW, který vypadá jako obyčejný TIFF, se přečte správně.
  2. Čtení čísel snímače: DNG naší vlastní čtečkou, ostatní formáty rozbalí rawler. Příliš velký nebo poškozený soubor se odmítne dřív, než se dekóduje jediný pixel, s kódem chyby.
  3. Úrovně: černá na 0 a bílá na 1, pro každou pozici barevného filtru, počítáno od rohu aktivní oblasti.
  4. Vyvážení bílé, pak demozaikování: nejdřív vadné pixely a vyvážení zelených, směrové demozaikování, medián proti falešné barvě (Markesteijn pro X-Trans přijde ve v0.15.0).
  5. Barva: matice fotoaparátu, smíchané podle světla snímku, v lineárním světle.
  6. Tón a vzhled, přizpůsobené náhledu fotoaparátu, s jeho stíněním objektivu.
  7. Od této chvíle je fotka RAW jako každá jiná: ořez, datum na fotce, rámeček, formát tisku a barevný profil, export v plném rozlišení ve 4:4:4 v kvalitě 95.

Po celou dobu platí několik pravidel. Najednou běží jen jedno vyvolání, rozložené na všechna jádra procesoru a nikdy ne na vlastním vlákně okna, takže Fotollection odpovídá, i když se vyvolává fotka s 30 MP. Exporty vždy běží na procesoru, takže tisk vyjde stejně na každém počítači; grafická karta jen zrychluje to, co vidíš při úpravách. A kód je náš vlastní, napsaný podle publikovaných specifikací a odborných článků, nezkopírovaný z jiných projektů, a pak ověřený: na syntetických obrazcích výše, na devíti souborech RAW z devíti fotoaparátů (CC0, z raw.pixls.us) a záměrným ořezáváním a poškozováním souborů, aby špatný soubor byl chybou, nikdy pádem.

Od v0.10.0: naše vlastní vyvolání pro každý fotoaparát s Bayerovým snímačem. rawler soubory jen rozbalí a zbytek je práce Fotollection. Plné vyvolání devíti vzorových souborů, medián ze 3, na stejném notebooku: naše vyvolání s čistším demozaikováním proti jednoduššímu z rawleru a proti macOS:

Fotoaparát (formát) Vlastní Fotollection rawler macOS
Panasonic GX9 (RW2, 20 MP) 280 ms 216 ms 436 ms
Panasonic S5 (RW2, 24 MP) 442 ms 301 ms 1 044 ms
Olympus E-M10 III (ORF, 16 MP) 308 ms 364 ms 1 164 ms
Sony A7 III (ARW, 24 MP) 372 ms 241 ms 488 ms
Canon R10 (CR3, 24 MP) 494 ms 360 ms 1 647 ms
Ricoh GR III (DNG, 24 MP) 523 ms 650 ms —
Nikon D750 (NEF, 24 MP) 502 ms 402 ms 412 ms
Canon 5D Mark IV (CR2, 31 MP) 691 ms 565 ms 418 ms
Fujifilm X-T3 (RAF, 26 MP, X-Trans) na řadě 524 ms 1 339 ms

To naše trvá o desetinu až čtvrtinu sekundy déle než to z rawleru, kvůli čistšímu demozaikování a přizpůsobeným barvám, a na většině fotoaparátů zůstává rychlejší než macOS; děje se jednou na fotku a posuvník pak dokončí uchovanou kopii znovu za 4 až 11 ms. Na Macu zůstávají soubory z Panasonicu a Olympusu u macOS kvůli jeho korekci objektivu, dokud naše vlastní vyvolání neopraví zkreslení. Šedá pole z S5 vycházejí neutrálněji než přes rawler (barevný nádech 1,42 proti 2,43, kde 0 je dokonale šedá). Fujifilm X-Trans přijde s Markesteijnem a po něm vyvolání na grafické kartě pro náhled, s výsledkem procesoru jako referencí.

Návrhy nejlepších snímků: ověřené proti volbě člověka

Ručně jsme roztřídili 95 skutečných fotek do 22 momentů a tam, kde byla jasně nejlepší fotka, jsme ji vybrali. Skupiny a návrhy Fotollection jsme pak ověřili proti této volbě.

6 z 6momentů s jasně nejlepší fotkou: přijatelný návrh
15 z 22nalezených momentů, nikdy dva zaměněné
17 msna analýzu fotky, 28 ms s obličeji
Návrhy nejlepších snímků, hodnocené proti fotkám roztříděným ručně
Návrhy nejlepších snímků, hodnocené proti fotkám roztříděným ručně7

Jak vznikají návrhy a jak se hodnotí

Nejdřív se najdou momenty. Fotky se seřadí podle času pořízení, na zlomky sekundy, a nový moment začíná, když je mezera delší než 2 sekundy nebo čtyřnásobek obvyklé mezery, když se změní fotoaparát nebo objektiv, nebo když se místo posune o víc než 30 m. Každá fotka navíc dostane malý vizuální podpis, rozložení světlých a tmavých ploch a směs barev, a snímek se k momentu připojí jen tehdy, když pořád vypadá jako snímky před ním, s tolerancí pro krok stranou nebo zoom, který vysvětlí ohnisková vzdálenost.

Pak se v rámci momentu každá fotka změří na zmenšené kopii: ostrost hlavního motivu, roztřesení, expozice (přepálená světla, slité stíny, jas), šum a tam, kde jsou obličeje, zda jsou oči otevřené a obličeje otočené k fotoaparátu. Každé měřítko se porovnává jen s ostatními snímky téhož momentu a má svou váhu (ostrost motivu 35 %, otevřené oči 20 %, roztřesení 15 %, expozice 15 %, přepálená světla 10 %, zbytek méně), s nejmenším krokem, aby nikdy nerozhodl rozdíl příliš malý na to, aby byl na tisku vidět. Návrh přichází i s důvodem, nic se nemaže a všechno běží na tvém počítači, 17 ms na fotku, 28 ms s obličeji.

Aby bylo hodnocení poctivé, 95 skutečných fotek bylo ručně roztříděno do 22 momentů, u 6 momentů s jasně nejlepším snímkem i s fotkou, kterou si nechat. Každé zlepšení se hodnotilo podle toho:

Krok Nalezené momenty (z 22) Chybná sloučení Přijatelné volby
Jen otisk obrazu 3 0 2 ze 2
Plus rozložení a barva 13 0 3 ze 4
Plus zoom z ohniskové vzdálenosti 15 0 5 ze 6
Plus spravedlivá ostrost a skryté obličeje 15 0 6 ze 6

Dva různé momenty se nikdy nespojí do jedné skupiny; dvě skupiny navíc jsou dvojice, které byly ručně označeny jako nejasné. Momenty, které se zatím nenajdou, jsou ty, kde se hodně změní póza nebo kompozice, třeba jídlo vyfocené znovu z druhé strany.

Slova, která stojí za čísly

Žargon fotek a tisku, vysvětlený tak, jak bychom ho vysvětlili kamarádovi.

Co je ΔE (Delta E)?16

ΔE měří, jak daleko od sebe dvě barvy lidskému oku připadají, počítané v barevném prostoru vytvořeném tak, aby odpovídal tomu, jak vidíme (CIELAB, se vzorcem z roku 2000). 0 znamená shodné. Kolem 1 je nejmenší rozdíl, který cvičené oko pozná při porovnání vedle sebe; 2 až 3 vidí většina lidí; nad 5 vypadají barvy odlišně. Export Fotollection pro tisk má průměr 0,19.

Co je SSIM?17

SSIM, index strukturní podobnosti, porovnává tvary a textury dvou obrázků místo jednotlivých pixelů, což je blíž tomu, jak si všímáme rozmazání nebo kostičkovité komprese. 1 znamená shodné. Nad zhruba 0,98 většina lidí ty dva obrázky bez přiblížení nerozezná.

Kolik barev pojme JPEG?6,18

JPEG ukládá 8 bitů pro každou z červené, zelené a modré: po 256 úrovních, asi 16,7 milionu barev. Z toho tisknou i fotolaby. Soubory RAW z fotoaparátu mají 12 až 14 bitů a novější iPhony umí ukládat 10bitový HEIC, což pomáhá při úpravách; pro hotový tisk neukáže dobře udělaný 8bitový JPEG mezi tóny žádné schody.

JPG, nebo JPEG? A mám použít PNG?

JPG a JPEG jsou stejný formát: staré Windows dovolovaly jen třípísmenné přípony. PNG je bezeztrátový, takže se nic nezahodí, ale fotka uložená jako PNG je často třikrát až pětkrát větší a většina kiosků a fotolabů čeká JPEG. JPEG v kvalitě 90 nebo vyšší s plným barevným rozlišením (4:4:4), jak ho Fotollection exportuje pro tisk, je na papíře od originálu k nerozeznání.

Co znamenají 4:4:4 a 4:2:0?

Naše oči vidí detaily hlavně v jasu, méně v barvě, takže JPEG může ukládat barvu v nižším rozlišení. 4:4:4 zachová plné barevné rozlišení; 4:2:0 zachová jeho čtvrtinu, což zmenší soubory, ale změkčí barevné hrany, třeba červený text nebo modré nebe za listím. Tisky si zaslouží 4:4:4; sociální sítě stejně všechno znovu zkomprimují na 4:2:0.

sRGB, Display P3, Adobe RGB a barevné profily19,20,21

Barevný profil říká softwaru, co znamenají čísla v souboru. sRGB je klasický rozsah barev používaný na webu. Display P3, který používají iPhony a novější fotoaparáty, obsáhne asi o 25 % víc barev, hlavně červených a zelených. Když fotka v P3 ztratí profil, její čísla se čtou jako sRGB a vypadá vybledle: to je ta ztráta 13 % sytosti, kterou jsme naměřili. Adobe RGB, které některé fotoaparáty nabízejí pro tisk, je také širší než sRGB, hlavně v zelených a azurových. Fotollection pro tisk zachová jakýkoli profil, který fotka má, a pro sociální sítě ji správně převede do sRGB.

Jaké DPI tisk potřebuje?

DPI udává, kolik pixelů připadá na každý palec papíru. Při 300 DPI vypadá tisk ostře i zblízka; 150 až 200 DPI stačí na vzdálenost natažené paže. Tisk 10 × 15 cm při 300 DPI potřebuje 1 800 × 1 200 pixelů, takže stačí jakákoli fotka z telefonu nebo fotoaparátu; rada k velikosti v aplikaci ti řekne, jak velká každá fotka může být.

Proč fotky na Facebooku vypadají hůř?

Facebook zmenší každou fotku nejvýš na 2 048 px, znovu ji zkomprimuje v nižší kvalitě s polovičním barevným rozlišením a zahodí barevné profily. Fotka, která přijde moc velká, se zmenšuje dvakrát, jednou tebou a jednou Facebookem. Když ji pošleš rovnou ve 2 048 px, v sRGB a lehce doostřenou, Facebook ji zkomprimuje jen jednou a barvy už jsou správně.

Spusť měření sám

Všechno se dá zopakovat na tvých vlastních fotkách. Skripty nikdy žádnou fotku nenahrají ani nezkopírují; uchovávají se jen čísla. Celé tabulky se všemi běhy jsou v RESULT.md.

bench/run.sh ~/Pictures/some-folder 3
uv run bench/quality/audit.py ~/Pictures/some-folder /tmp/out
uv run bench/quality/share_audit.py ~/Pictures/some-folder /tmp/share

Přečíst RESULT.md na GitHubu Zpět na domovskou stránku

  1. 1. SIMD (single instruction, multiple data) umožňuje procesoru pracovat s mnoha hodnotami najednou: jedna instrukce působí na několik čísel uložených vedle sebe v širokém vektorovém registru, třeba na červenou, zelenou a modrou mnoha pixelů. Procesory Intel a AMD to nabízejí jako SSE a AVX; Apple silicon a další procesory Arm jako NEON. Intel, AMD a Arm jsou ochranné známky svých vlastníků.
  2. 2. Jednotky: px je pixel, jeden bod obrázku; MP (megapixel) je milion pixelů, takže fotka s 20 MP má asi 5 472 × 3 648 px; ms je milisekunda, tisícina sekundy; MB a GB jsou megabajty a gigabajty; RAM (paměť s náhodným přístupem) je pracovní paměť počítače.
  3. 3. Rust a logo Rustu jsou ochranné známky Rust Foundation. Jádro Fotollection je napsané v Rustu a běží přímo na tvém počítači.
  4. 4. EXIF (Exchangeable Image File Format) je standard, který spravují japonské JEITA a CIPA, pro informace, které fotoaparát zapisuje do každé fotky: fotoaparát a objektiv, datum a čas, expozici, často polohu GPS a malý vložený náhled.
  5. 5. Soubor RAW obsahuje to, co zaznamenal snímač fotoaparátu, ještě než z toho fotoaparát udělal obrázek, takže o barvě, jasu a detailech se dá rozhodnout později, podobně jako když se vyvolává negativ. Každý výrobce má svůj formát (CR3 pro Canon, NEF pro Nikon, ARW pro Sony, RW2 pro Panasonic a další); DNG (Digital Negative) je otevřený formát RAW, který vydala společnost Adobe.
  6. 6. JPEG je obrazový formát skupiny Joint Photographic Experts Group, standardizovaný jako ISO/IEC 10918-1 a ITU-T T.81.
  7. 7. Všechny grafy: čísla jsou orientační, změřená na běžném notebooku (Apple M3, 16 GB); ta tvoje závisí na počítači, který používáš.
  8. 8. Adobe, Lightroom a Lightroom Classic jsou ochranné známky společnosti Adobe Inc. ve Spojených státech a dalších zemích. Fotollection není se společností Adobe spojen ani jí podporován; drží se kláves a rozvržení, které lidé používající Lightroom už znají. Logo Lightroomu pochází z Wikimedia Commons, kde je jako textové logo volným dílem.
  9. 9. Okno aplikace je postavené na Tauri a vykresluje ho webové zobrazení samotného systému: WebKit (WKWebView) na macOS, Microsoft Edge WebView2 na Windows a WebKitGTK, port WebKitu pro GTK, na Linuxu. Tauri je projekt Tauri Programme v rámci Commons Conservancy; WebKit je ochranná známka Apple Inc.; GTK je projekt GNOME Foundation; Microsoft Edge a WebView2 jsou ochranné známky Microsoft Corporation. Srovnání s prohlížečem spustilo stejnou úlohu v headless Chromiu 156, open-source projektu, na kterém stojí Google Chrome, s jedním Web Workerem na každé jádro procesoru.
  10. 10. Pražská složka je autorova vlastní a není zveřejněná (© @hoangphi01, všechna práva vyhrazena). Mediány ze 3 běhů bench/trip.sh a measure_folder na jejích JPEGech, na Apple M3 s 16 GB, s otevřenými dalšími aplikacemi, dne 2026-11-04, s exportem z v0.9.7; pro srovnání je spusť na vlastní složce.
  11. 11. p50 a p95 jsou percentily: p50, medián, je čas, pod kterým zůstala polovina běhů; p95 je čas, pod kterým zůstalo 95 běhů ze 100, takže ukazuje pomalé případy, které průměr skryje.
  12. 12. Adobe DNG Converter se pro tuto stránku nespouštěl. Údaj je odhad třetí strany (1 000 souborů CR3 za 20–30 minut na moderním hardwaru, stroj neuveden) z článku na blogu convertintomp4.com o hromadném převodu RAW do DNG. Adobe je registrovaná ochranná známka Adobe Inc.
  13. 13. CMOS a CCD jsou dva druhy obrazového snímače, mřížky buněk citlivých na světlo, které mění světlo na elektrický náboj. Téměř každý dnešní fotoaparát a telefon používá CMOS (complementary metal-oxide-semiconductor); CCD (charge-coupled device) bylo běžné ve starších fotoaparátech.
  14. 14. PSNR (peak signal-to-noise ratio, špičkový poměr signálu k šumu) porovná dva obrázky pixel po pixelu a udá jejich rozdíl v decibelech: čím víc, tím jsou si bližší. Nad zhruba 40 dB je rozdíl těžko vidět.
  15. 15. TIFF (Tagged Image File Format) je flexibilní obrazový formát, který dnes spravuje Adobe; mnoho formátů RAW, mezi nimi DNG, je postaveno na jeho struktuře.
  16. 16. ΔE2000 (CIEDE2000) je vzorec barevného rozdílu Mezinárodní komise pro osvětlení (CIE), standardizovaný jako ISO/CIE 11664-6; barevný prostor CIELAB, ve kterém pracuje, je ISO/CIE 11664-4.
  17. 17. SSIM představili Zhou Wang, Alan C. Bovik, Hamid R. Sheikh a Eero P. Simoncelli v článku Image quality assessment: from error visibility to structural similarity, IEEE Transactions on Image Processing, 13(4), 2004.
  18. 18. HEIF (High Efficiency Image File Format) je obrazový formát normy ISO/IEC 23008-12; HEIC je jeho varianta komprimovaná pomocí HEVC (H.265), ve které iPhony ve výchozím stavu ukládají fotky. Fotka HEIC má zhruba poloviční velikost než JPEG podobné kvality.
  19. 19. sRGB vytvořily HP a Microsoft v roce 1996 a standardizováno bylo jako IEC 61966-2-1.
  20. 20. Display P3 je barevný prostor definovaný společností Apple Inc., založený na barevném prostoru DCI-P3 filmového průmyslu (SMPTE).
  21. 21. Adobe RGB (1998) je barevný prostor specifikovaný společností Adobe Inc.; Adobe je registrovaná ochranná známka Adobe Inc.

Fotoslužby v dm a Rossmannu zajišťuje CEWE, ochranná známka CEWE Stiftung & Co. KGaA. Formáty tisku byly ověřeny podle ceníku dm v říjnu 2026; obchody je mohou změnit.

Pražské fotky na snímcích obrazovky (tramvaje, ulice, Vltava) pořídil @hoangphi01 fotoaparátem Lumix GX9 v listopadu 2026: © @hoangphi01, všechna práva vyhrazena. Nevztahuje se na ně licence aplikace a nesmí se dál používat. Ostatní ukázkové fotky jsou volným dílem (CC0) na Wikimedia Commons, od autorů Dktue (7 fotek), Pierre Blaché z Paříže, Francie (2) a Kate Branch (1). Kočku na snímcích košíku k tisku a nejlepšího snímku také vyfotil @hoangphi01 na GX9, všechna práva vyhrazena; měkčí, roztřesené a tmavší kopie vedle ní vznikly z té jedné fotky, aby bylo vidět, jak se nejlepší snímek vybírá. Každý soubor, jeho stránka a kontrolní součet.

Měření RAW používají devět vzorků s volnou licencí (CC0) z raw.pixls.us, jeden na formát; scripts/fetch-raw-samples.py je stáhne a ověří.

Formáty RAW zmíněné na tomto webu patří výrobcům fotoaparátů, kteří je definují: RW2 (Panasonic Holdings Corporation), CR2 a CR3 (Canon Inc.), NEF (Nikon Corporation), ARW (Sony Group Corporation), RAF (FUJIFILM Corporation) a ORF (OM Digital Solutions Corporation, dříve Olympus). DNG je otevřená specifikace, kterou vydala Adobe Inc. Fotollection je čte čtečkou zabudovanou do Fotollection a na macOS nejprve přes kodeky systému (na Windows je Raw Image Extension od Microsoftu, pokud je nainstalované, poslední záložní možností); žádná z těchto společností ho nevyrobila ani nepodporuje.

Názvy a loga fotoaparátů na snímcích obrazovky a v rámečku s údaji v aplikaci jsou ochranné známky svých vlastníků, použité jen k tomu, aby bylo vidět, jaký fotoaparát fotku pořídil: Apple (Apple Inc.), Canon (Canon Inc.), Fujifilm (FUJIFILM Corporation), Hasselblad (Victor Hasselblad AB), Leica (Leica Camera AG), Lumix (Panasonic Holdings Corporation), Nikon (Nikon Corporation), Noritsu (Noritsu Koki Co., Ltd.), Phase One (Phase One A/S), Ricoh (Ricoh Company, Ltd.), Samsung (Samsung Electronics Co., Ltd.) a Sony (Sony Group Corporation).

Apple a macOS jsou ochranné známky Apple Inc.; Windows společnosti Microsoft Corporation; Linux je registrovaná ochranná známka Linuse Torvaldse v USA a dalších zemích; Ubuntu společnosti Canonical Ltd.; Debian organizace Software in the Public Interest, Inc.; Fedora, Red Hat, RHEL a CentOS společnosti Red Hat, Inc.; openSUSE společnosti SUSE LLC; Pop!_OS společnosti System76, Inc.; Rocky Linux organizace Rocky Enterprise Software Foundation; AlmaLinux organizace AlmaLinux OS Foundation; ChromeOS společnosti Google LLC; NVIDIA společnosti NVIDIA Corporation; názvy ostatních linuxových distribucí patří jejich projektům; Facebook a Instagram společnosti Meta Platforms, Inc.; GitHub společnosti GitHub, Inc.; Google Analytics společnosti Google LLC; Lightroom společnosti Adobe Inc.; IrfanView Irfana Škiljana; VietQR společnosti NAPAS; Wikimedia Commons nadace Wikimedia Foundation. Značky Apple, Windows a Linux (Tux, kterého poprvé nakreslil Larry Ewing) pocházejí ze Simple Icons (CC0) a jen ukazují, o jakém systému sloupec nebo krok je.

Fotollection je nezávislý open-source projekt. Není přidružen k žádné z těchto společností, sponzorován ani podporován žádnou z nich a každá další ochranná známka patří svému vlastníkovi.

Název a logo Fotollection označují oficiální aplikaci od @hoangphi01. Oficiální stažení jsou jen z fotollection.org a z vydání projektu na GitHubu. Licence GPL-3.0 dovoluje komukoli sdílet nebo prodávat kopie, upravené, nebo ne, pokud zachová tuto licenci a nabídne zdrojový kód; upravená nebo přeprodávaná kopie nesmí používat název ani logo Fotollection tak, aby to vypadalo jako oficiální aplikace.

Sdílíš nebo prodáváš Fotollection, nebo na něm stavíš? Dej prosím nejdřív vědět autorovi tím, že otevřeš issue na GitHubu (github.com/hoangphi01/fotollection/issues). Aplikace je zdarma a vzniká ve volném čase; krátká zpráva je férový způsob, jak poděkovat.

Cituješ, recenzuješ nebo ukazuješ aplikaci, nebo používáš tyto snímky obrazovky? Uveď prosím Fotollection a odkaz na fotollection.org.