Mérések, nem ígéretek

Teljesítmény

Ezen az oldalon minden szám valódi fotókból származik, egy átlagos laptopon (Apple M3, 16 GB), az ezeket előállító szkriptek pedig a tárolóban vannak, így bárki újra lefuttathatja őket. Minden diagram alatt ott áll, mit jelent a nyomataidra nézve, a végén pedig a számok mögötti fogalmak.

Miért gyors a Fotollection

Semmi varázslat. Néhány döntés, amely még az első kódsor előtt megszületett, és mindegyik mérve.

  1. Natív kód minden magon

    A Fotollection munkája Rustban fut, a processzorodra fordítva és minden magjára elosztva, a processzorok pixelekhez kínált vektorutasításaival (SIMD).1,2,3

    23,5 / sexportált fotó 16 MP-nél

  2. Csak ami kell

    Egy mappa megnyitása minden fájlnak csak az EXIF-jét és a kis beágyazott bélyegképét olvassa be, sosem a teljes fotót. A bélyegképek egy lemezes gyorsítótárba kerülnek.4

    0,12 s1000 fotó megnyitása

  3. Sosem több pixel, mint a képernyő

    Egy előnézet legfeljebb 1600 px, egy memóriában tartott 2048 px-es másolatból készül. A teljes fotót csak nagyításkor olvassa be, részenként.

    17 msegy előnézet újrarajzolása

  4. Kész, mielőtt kattintasz

    Amint a bélyegképek elkészültek, minden fotó előnézete elkészül a háttérben és a lemezre kerül, a memória negyede pedig a képernyőn lévő fotó körüli fotókat tartja.

    27 msbármelyik fotó megnyitása

  5. Semmi sem készül kétszer

    Egy színcsúszka csak a színt változtatja, a méretet sosem. Minden színcsúszka egyetlen 33 × 33 × 33 színből álló táblába olvad össze, így tíz csúszka annyiba kerül, mint egy.

    2 mstíz színcsúszka egy előnézeten

  6. Memória a kereten belül

    A Fotollection egyszerre csak annyi teljes méretű fotón dolgozik, amennyit a memóriakerete megenged; ezt az exportálás legnagyobb fotója határozza meg.

    1,45 GBmemóriacsúcs 5035 fotóval

  7. Méréssel hangolt kódolók

    A nyomtatási fájlok kihagynak egy táblaoptimalizálást, amely 1 %-nál kevesebbel tette kisebbé őket, és a kódolási idő harmadába került.

    −33 %kódolási idő a nyomtatási fájloknál

  8. Szerkesztés közben a videokártya

    Amíg egy színcsúszka mozog, a videokártya a mag által felépített táblából rajzol. Az exportálás a processzoron marad, így egy nyomat minden gépen ugyanaz.

    1–2 mscsúszkalépésenként, 26 ms helyett

Hol történik a munka: a Fotollection a gépeden, egy tipikus webes szerkesztővel szemben
Hol történik a munka: a Fotollection a gépeden, egy tipikus webes szerkesztővel szemben

Akár 20× gyorsabb. A memória új használata.

A v0.11.0 újragondolja, hogyan tartja a Fotollection a fotóidat. Minden fotó előnézete elkészül a háttérben, amint a bélyegképe kész, és a lemezre kerül, a géped memóriájának negyede a látott fotó körüli fotókat tartja, a képernyőn lévő fotó pedig mindig elsőként jön. Az eredmény: bármelyik fotó, közeli vagy távoli, JPEG vagy RAW, 27 ezredmásodperc alatt nyílik meg. Egy RAW megnyitása akár 20-szor gyorsabb, mint a v0.9.0-ban, egy JPEG-é 10-szer, ugyanazon az egy út során készült 422 fotón mérve.5,6

20×gyorsabban nyílik meg egy RAW fotó, mint a v0.9.0-ban (531 → 27 ms)
10×gyorsabban nyílik meg egy JPEG, mint a v0.9.0-ban (274 → 27 ms)
27 msbármelyik fotó megnyitása, közeli vagy távoli (keret: 100 ms)
Egy fotó megnyitása: a v0.9.0 és a v0.10.0 a v0.11.0-val szemben, egy út 422 fotóján
Egy fotó megnyitása: a v0.9.0 és a v0.10.0 a v0.11.0-val szemben, egy út 422 fotóján7
Honnan jön egy fotó előnézete: memória, aztán lemez, aztán a fájl
Honnan jön egy fotó előnézete: memória, aztán lemez, aztán a fájl

Előtte: minden fotót a kattintáskor dekódolt

A v0.10.0-ig az előnézet akkor készült el, amikor kérted: a fájl beolvasása, a fotó dekódolása (a RAW kidolgozása), felállítása, 2048 px-esre méretezése és sRGB-be alakítása, majd a vágás, a színezés, a bélyegzés és a képernyőre kódolás. Egy Lumix GX9 20 MP-es fotóján ez JPEG-nél 274–278 ms, RAW-nál 440–531 ms volt, valahányszor olyan fotót nyitottál meg, amely nem volt az utolsó nyolc között. Egy fotóhoz elég gyors; egy út átfutásához nem.

Standard előnézetek, ahogy a Lightroom tartja őket

A v0.11.0 óta a munka, amelyre a felhasználó vár, elkészül, mielőtt kérné. Amint egy mappa bélyegképei megvannak, a Fotollection a háttérben elkészíti minden fotó 2048 px-es másolatát, szálanként egyszerre egy fotót, és a lemezen, a bélyegképek mellett tartja, kb. 0,66 MB-os JPEG-ként (az egész útra kb. 280 MB). Egy kattintás bármelyik fotóra, közelire vagy távolira, ebben a munkamenetben vagy a következőben, ebből a másolatból indul: 27 ms JPEG-nél és RAW-nál egyaránt. Ami marad, az az előnézet saját munkája (vágás, átméretezés, szín, dátumbélyeg és kódolás), ugyanaz a 27 ms, mint a memóriából. A lemezes másolatból készült előnézet átlagosan 1,35 szinttel tér el (255-ből) egy frissen készülttől, ami túl kevés ahhoz, hogy látszódjon.8

Jól használt memória, nem a lehető legkevesebb

Egy fotónézegető, amely egy 16 GB-os laptopon nyolc fotót tart a memóriában, pazarolja a laptopot. A Fotollection most a gép memóriájának negyedét adja az előnézetnek (egy 16 GB-os Macen kb. 190 fotót 2048 px-en, 20 RAW-kidolgozást a csúszkáik kedvéért, és 600 MB-ot a nagyításhoz), bájtban számolva, és a legrégebbit szabadítja fel először. Amikor egy fotó a képernyőn van, a mozgásod irányában a következő kettő és a mögötte lévő egy is betöltődik, így a nyílbillentyűk sosem várnak. A 2 GB-os plafon az exportálásra továbbra is érvényes.

A képernyőn lévő fotó az első

Egyszerre csak egy RAW kidolgozása fut, hogy egy köteg RAW-fotó beférjen a memóriába. Korábban a sor rendje a szerencsén múlt: egy épp készülő előnézet, az export méretbecslése vagy egy exportálás megvárakoztathatta a fotót, amelyre kattintottál. Most minden kidolgozás megmondja, ki vár rá, és a háttérmunka félreáll, valahányszor a képernyőn lévő fotónak szüksége van egyre. Ugyanez a munka két ritka elakadást is felszínre hozott, amelyek mára megszűntek: az egyikben minden szál egy olyan kidolgozásra várt, amelynek már nem maradt szála a futáshoz, a másikban a képernyő egy olyan képre várt, amelyet sosem kért.

Verzió JPEG p50 / p95 RAW p50 / p95 Hogyan
v0.9.0 274 / 286 ms 531 / 550 ms Kattintáskor dekódolva; a RAW a macOS-en át
v0.10.0 278 / 293 ms 440 / 471 ms Kattintáskor dekódolva; a RAW a saját kidolgozásunkkal
v0.11.0 27 / 32 ms 27 / 30 ms A lemezen lévő standard előnézetből vagy a memóriából

Mérve a tulajdonos prágai útján (396 JPEG és 26 RAW, 20 MP) egy Apple M3-on a measure_browse segítségével: a v0.9.0 a saját címkéjéből építve, a v0.10.0 a kódján közvetlenül e változtatás előtt.

Sebesség: ezer fotó egy szempillantás alatt

Egy mappa megnyitása minden fotónak csak az EXIF-jét és a kis beágyazott bélyegképét olvassa be, nem a teljes képet, egy módosított beállítás pedig csak az előnézetet rajzolja újra. A natív Rust egy ugyanezt végző webböngészőt is megelőz: ugyanaz az exportálási sebesség, gyorsabb előnézet és negyedével kevesebb memória.9

0,12 segy 1000 fotós mappa beolvasása, nyolcszor a kereten belül
17 msaz előnézet újrarajzolása egy módosítás után
23,5exportált 16 MP-es fotó másodpercenként
Sebesség és memória, a kód megírása előtt kitűzött keretekhez mérve
Sebesség és memória, a kód megírása előtt kitűzött keretekhez mérve7
Ugyanaz a feladat a Fotollectionben és egy webböngészőben
Ugyanaz a feladat a Fotollectionben és egy webböngészőben7

Mi történik, amikor megnyitsz egy mappát

Egy fotómappát a Fotollection nem olvas be egészben. Minden fájlnál az EXIF-adatait (dátum, gép, hely) és azt a kis bélyegképet olvassa be, amelyet minden fényképezőgép a fájlba ment, mást nem: 1000 fotó 0,12 s, szemben azzal az 1 s-os kerettel, amelyet a kód megírása előtt szabtunk meg. Ezután a háttérben élesebb, 400 px-es bélyegképek készülnek, két szálon, hogy a Fotollection gyors maradjon, és egy lemezes gyorsítótárba kerülnek, így egy újra megnyitott mappa azonnal ott van. 5035 fotónál az importálás 383 ms-ig, a beágyazott bélyegképek 236 ms-ig tartottak.

Hová megy egy előnézet 17 ms-a

Egy beállítás módosítása az előnézetet a fotó memóriában tartott 2048 px-es másolatából rajzolja újra, sosem a teljes fájlból. Az ehhez szükséges 16,7 ms-ból a vágás és a Lanczos-szűrős átméretezés 9,7 ms, a dátumbélyeg 0,1 ms alatt, az előnézet JPEG-be kódolása a képernyőhöz pedig 7,0 ms. Ezt a kódolót méréssel hangoltuk: az export beállításaival (teljes színfelbontás és optimalizált táblák) 16,2 ms-ig tartott; a képernyőnek ezekre nincs szüksége, ezért az előnézet felezett színt és sima táblákat használ, az exportok viszont teljes színnel (4:4:4) készülnek. Kipróbáltunk egy olcsóbb átméretező szűrőt is, de ezen a processzoron lassabbnak bizonyult (12,5 ms), így maradt a Lanczos.

Natív kód egy böngészővel szemben

Ugyanazt a feladatot (dekódolás, 2:3-ra vágás, dátumbélyeg, JPEG 95-ös minőséggel) ugyanazon a 95 fotón futtattuk le a Fotollectionben és Chromiumban, magonként egy workerrel. Az exportálás sebessége ugyanannyi lett, 18,0 a 17,9 fotóval szemben másodpercenként, ami megcáfolta az első feltevésünket: a böngésző nem lassú. A natív kód melletti érvek máshol vannak: a Fotollection teljes színfelbontású 4:4:4-es fájlokat ír, ahol a böngésző kódolója felezi a színt, megtartja minden fotó színprofilját, a fájlokat közvetlenül a lemezre írja, és negyedével kevesebb memóriát használt (1,35 GB az 1,78 GB-tal szemben). Azóta a nyomtatási kódoló még gyorsabb lett: 16 MP-en másodpercenként 23,5 fotó.

Szerkesztéskor a videokártya, exportáláskor minden mag

Amíg egy színcsúszkát húzol, a videokártya ugyanabból a táblából rajzolja a lookot, amelyet a Fotollection magja épít, és amikor elengeded, a pontos renderelés veszi át a helyét. Az exportálás a processzoron marad, így egy nyomat minden gépen ugyanúgy jön ki.

1–2 msegy csúszkalépés a videokártyán, kb. 26 ms helyett
0,13ΔE2000 a kártya lookja és a pontos renderelés között
10,8exportált 26 MP-es fotó másodpercenként, hat egyszerre
Egy színcsúszka egy lépése: a processzor a videokártyával szemben
Egy színcsúszka egy lépése: a processzor a videokártyával szemben7
Exportálási sebesség az egyszerre feldolgozott fotók szerint
Exportálási sebesség az egyszerre feldolgozott fotók szerint7
Szerkesztés a videokártyán, exportálás minden processzormagon
Szerkesztés a videokártyán, exportálás minden processzormagon

Tíz csúszka egynek az áráért

Minden színcsúszka (fényerő, kontraszt, melegség, telítettség, fakítás, színezett árnyékok és csúcsfények, fekete-fehér) egyetlen 33 × 33 × 33 színből álló táblába sűrűsödik: 35 937 pontba, amelyek megmondják, hová kerül az egyes szín. Ha ezt egy fotóra alkalmazzuk, minden pixelnek megkeressük a celláját a táblában, és a cella négy sarka között interpolálunk (tetraéderes interpoláció), így tíz csúszka annyiba kerül, mint egy. A tábla felépítése minden csúszkával beállítva kb. 2,6 ms; alkalmazása egy 1600 px-es előnézetre 2,2 ms-nál kevesebb, egy 24 MP-es exportra kb. 24 ms.

Miért tűnt még lassúnak a húzás, és mit változtatott a videokártya

Lépésenként mérve egy csúszkamozdulat kb. 26 ms-ba került, és ebből maga a szín csak 2 ms volt: a többi az előnézet JPEG-be kódolása (7–11 ms) és az ablakban való újbóli dekódolása (9–15 ms). A videokártya mindkettőt megszünteti. Amikor egy húzás elkezdődik, a sima előnézet és egy maszk arról, hol van a fotó (nem a dátumbélyeg, a keret vagy a szegély), egyszer kerül át a videokártyára; minden lépésnél csak az új tábla követi, és egy kis WebGL2-program interpolálja, pontosan úgy, ahogy a mag: lépésenként 1 ms a macOS WebKitjében, 2 ms Chromiumban. Amikor elengeded, a mag pontos renderje lép a helyére. A kettőt egy erős lookon hasonlítottuk össze, minden csúszkát elmozdítva: átlagosan 0,13-mal térnek el ΔE2000-ben, a 99. percentilisen 0,77-tel, messze az 1 alatt, amelyet a szem egymás mellett még észrevesz.

Semmilyen kapcsolóra nincs szükség. Az első húzáskor a Fotollection maga ellenőrzi: ha nincs WebGL2, ha szoftveres a renderelő, vagy ha egy próbalépés 8 ms-ig vagy tovább tart, a munkamenet végéig a processzor útján marad. Egy szoftveres renderelő a tesztben lépésenként 16,5 ms-ot igényelt, így ott helyes a processzornál maradni.

Exportálás minden magon

Egy fotó dekódolása és kódolása egy-egy magon fut, így az exportálás akkor gyors, ha egyszerre több fotón dolgozik. Hogy hányon, az a memórián múlik: 24–26 MP-es fotókon 2 egyszerre másodpercenként 4,9 fotót adott, 4 9,4-et, 6 11,5-öt, 8 pedig 12,5-öt, miközben a memória 0,49-ről 1,21 GB-ra nőtt. A Fotollection a számot egy 1,6 GB-os memóriakeretből és a legnagyobb fotó méretéből választja, és 6-nál megáll, mert egy valódi út fotóin 8 egyszerre nem volt gyorsabb, és 0,2 GB-tal több memóriát használt. Az exportálás sosem használja a videokártyát: egy nyomatnak minden gépen ugyanolyannak kell lennie, és az exportokat bájtról bájtra összevető tesztek erre épülnek.

Egy valódi út: 422 fájl Prágából

A tesztkészletek szépíthetnek, ezért íme egy mappa pontosan úgy, ahogy egy prágai hétvége után lekerült egy Lumix GX9-ről: 396 darab 20 MP-es JPEG, egyenként kb. 11 MB, mellettük 26 RAW fájl, összesen 4,7 GB. Megnyitáskor 0,23 másodperc alatt beolvasódik minden fájl EXIF-je. Az előnézet 19 ms alatt rajzolódik újra, egy RAW 0,35 másodperc alatt dolgozódik ki, tíz képeslap pedig 21 ms alatt rajzolódik újra. 2026. november 3-án ezeken a nagy fájlokon két szám nem fért bele a keretébe: az exportálás másodpercenként 7,6 fotót készített, a memóriacsúcs pedig 2,14 GB volt. Az ok kiderült, és a v0.9.7 javította: a JPEG-ek exportálása most másodpercenként 10,1, és a teljes futás 1,31 GB alatt marad.10,11

0,23 smind a 422 fájl megnyitása, EXIF-fel együtt
19 msaz előnézet újrarajzolása, p95 (keret: 50 ms)
0,35 segy 20 MP-es RAW kidolgozása (medián)
21 mstíz képeslap újrarajzolása (keret: 100 ms)
10,1 / sexportált JPEG (keret: 8 / s)
1,31 GBmemóriacsúcs, JPEG és RAW (felső határ: 2 GB)

Két elszalasztott keret, és amit találtunk

Ezeken a 20 MP-es fájlokon az első futás két keretet nem teljesített: az exportálás másodpercenként 7,6 fotóval ment, a memória csúcsa pedig 2,14 GB volt, a 2 GB-os plafon felett. Egy fotó minden szakaszának időmérése megmutatta, hová megy az idő: a dekódolás kb. 100 ms, a vágás 2 ms, a nyomat kódolása 203 ms. A nyomtatási kódoló egy második menetben optimalizálta a tábláit, amihez a kép minden együtthatóját a memóriában tartotta, fotónként kb. 160 MB-ot, hat fotónál egyszerre kb. 1,5 GB-ot, mindössze 0,9 %-kal kisebb fájlokért. A standard táblákkal sávokban írja a fájlt: 138 ms, ugyanaz a hiba a renderelt képhez képest, néhány kilobájttal több.

A memória egy része egyáltalán nem a Fotollectioné volt. A benchmark minden magon készítette a bélyegképeit, ahol a Fotollection két háttérszálat használ, és a saját előnézeti méréseit az exportálás alatt is életben tartotta; úgy mérve, ahogy a Fotollection dolgozik, 0,35–0,39 GB marad, mielőtt egy exportálás elindul. A v0.9.7 óta az egyszerre feldolgozott fotók száma az export legnagyobb fotójához is igazodik (nagyon nagyoknál kevesebb), így a csúcs bármilyen méretnél a plafon alatt marad: ennél a mappánál másodpercenként 10,1 fotó és 1,31 GB.

Memória: 5035 fotó, és egyenletes marad

A Fotollection fotónként csak néhány bájtot tart a memóriában, a bélyegképeket lemezes gyorsítótárba írja, és egyszerre csak annyi teljes méretű képen dolgozik, amennyi a memóriakeretébe belefér. Így a memória egyenletes marad, ahogy egy út több ezer fotóra nő.

1,45 GBmemóriacsúcs 5035 fotónál
1,35 GBmemóriacsúcs 95 fotónál
53×több fotó 0,1 GB-tal több memóriáért
A memóriacsúcs, ahogy a köteg 5035 fotóra nő
A memóriacsúcs, ahogy a köteg 5035 fotóra nő7

Miért nem nő a memória a mappával

A Fotollection fotónként néhány bájtot tart a könyvtárában (5035 fotóra 13 MB), a bélyegképeket nem a memóriában tartja, hanem egy lemezes gyorsítótárba írja, korlátozott számú előnézetet tart a memóriában, és egyszerre csak annyi teljes méretű fotón dolgozik, amennyi belefér a keretébe. A képernyőn lévő rács virtuális: csak a látható csempék léteznek. A teszthez ugyanazt a 95 fotót 53-szor linkeltük be egy 5035 fájlos mappába:

95 fotó 5035 fotó
Importálás és EXIF 5 ms, 7 MB 383 ms, 13 MB
400 px-es bélyegképek a lemezes gyorsítótárba 47,8 fotó/s 46,4 fotó/s
Exportálás, 6 egyszerre 18,0 fotó/s 15,4 fotó/s, 0 sikertelen
A teljes futás csúcsmemóriája 1,35 GB 1,45 GB

53-szor több fotó 0,1 GB-tal több memóriába került. A hosszú exportálás fotónként csak azért kicsit lassabb, mert több mint öt percig futott, és egy laptop processzora tartós terhelés alatt lelassul.

Nyomtatási minőség: a nyomat olyan, mint a fotó

A webes szerkesztővel készült nyomatok gyakran fakónak tűnnek: a szerkesztő elhagyja a színprofilt, 2000 px-re kicsinyíti a fotót, és 80-as minőséggel, felezett színnel menti. A Fotollection megtartja a profilt, és teljes felbontásban, 4:4:4-ben exportál.

0,19színhiba; a szem 1-nél kezdi észrevenni
4:4:4teljes színfelbontás; egy webes szerkesztő megfelezi
87 %a finom részletekből, amelyeket egy webes szerkesztő 2000 px-e elveszít
Mit tart meg az exportálás az eredetiből, egy tipikus webes szerkesztőhöz képest
Mit tart meg az exportálás az eredetiből, egy tipikus webes szerkesztőhöz képest7

Miért tűnnek laposnak a webes szerkesztőből készült nyomatok

A teszt 20 fényképezőgépes fotót és 5 Display P3-as változatot (a friss telefonok és Macek szélesebb színterét) exportál a Fotollection valódi exportján keresztül, majd mindkét fájlt egy független dekóderrel olvassa be, a színprofiljukon át CIELAB-ba alakítja, és pixelről pixelre összeveti az eredetivel. Egy tipikus webes szerkesztő exportja ugyanezen az összevetésen megy át: a profil elhagyva, 2000 px-re kicsinyítve, majd a nyomtatáshoz visszanagyítva, 80-as minőséggel és felezett színnel (4:2:0) mentve.

Medián Fotollection, sRGB Webes szerkesztő Fotollection, Display P3 Webes szerkesztő
ΔE2000 (színhiba, 1 alatt láthatatlan) 0,19 1,39 0,31 2,15
PSNR 52,6 dB 37,9 dB 50,8 dB 37,0 dB
Megmaradt telítettség 100 % 99,9 % 99,9 % 86,8 %
Megmaradt finom részletek 99,8 % 13 % 100 % 18 %

Két ok magyarázza a lapos hatást. A 2000 px-re kicsinyítés és a labornak való visszanagyítás eldobja a finom részletek 87 %-át, amelyektől egy nyomat élesnek látszik. A színprofil elhagyása pedig egy Display P3-as fotót úgy olvas be, mintha sRGB volna, ami elveszi a telítettsége 13 %-át. A Fotollection megtartja a profilt (25 fájlból 25-nél), a fotó teljes felbontásán, teljes színnel (4:4:4) exportál 95-ös minőséggel (akkor így mértük; a v0.13.0 óta alapból 90, ami még mindig a látható különbség alatt van), és a nagyobb hibái csak az éles széleken vannak, ahol minden JPEG a legkeményebben dolgozik. Még hátravan: valódi iPhone HEIC-fájlok, és spektrofotométerrel mért nyomatok.

Fotók Facebookra és Instagramra: könnyűek, és mégis a fotó

A Facebook minden fotót 2048 px-re kicsinyít, újratömöríti, és figyelmen kívül hagyja a színprofilokat. A Share exportálás ezt a munkát előbb rendesen elvégzi, így a Facebook után a fotó közelebb marad önmagához, mint a szokásos módon.

99,6 %egy Display P3 fotó színeiből megmarad a Facebook után, 86 % helyett
2048 pxa méret, amelyhez a Facebook nem nyúl
½akkora fájl, mint az Original size, minden pixel megtartva
Fotók Facebookra: amit a nézők látnak, miután a Facebook újratömörítette őket
Fotók Facebookra: amit a nézők látnak, miután a Facebook újratömörítette őket7

Mit tesz a Facebook egy fotóval, és mit teszünk mi előbb

A Facebook minden fotót legfeljebb 2048 px-re kicsinyít, kb. 71-es minőséggel és felezett színnel tömöríti újra, és figyelmen kívül hagyja a színprofilokat. A Share export ezt a munkát a feltöltés előtt rendesen elvégzi, így a Facebooknak nem marad mit kicsinyítenie: a fotó a profilján át sRGB-be kerül, lineáris fényben Lanczos-szűrővel méreteződik át, enyhén élesedik, és 88-as minőséggel mentődik. Minden beállítást mérés alapján választottunk: az erősebb élesítés (0,2 helyett 0,35) rosszabb pontszámot kapott, a 84-es vagy 80-as minőség pedig többet veszített, mint amennyit megtakarított.

Medián Eredeti méret Facebook, 2048 px Instagram, 1080 px
Fájlméret (3,08 MB-os fényképezőgépes JPEG-ek) 1,42 MB 0,51 MB 0,24 MB
SSIM az ideális átméretezéshez képest (1 az azonos) 0,981 0,979 0,982
ΔE2000 0,96 1,27 1,58

A Facebook saját újratömörítése után az eredmény közelebb marad a fotóhoz, mint a szokásos úton (SSIM 0,965 a 0,961-gyel szemben), és egy Display P3-as fotó a színe 99,6 %-át tartja meg 86 % helyett, mert a profilját valódi sRGB-színekké alakítottuk, nem dobtuk el. Az átméretezett presetek a felezett szín miatt maradnak ΔE 1 felett, amelyet egyébként is minden platform alkalmaz; az Original size minden pixelt megtart nagyjából fele akkora fájlban, ΔE 1 alatt.

Fényképezőgépes RAW: nyisd meg úgy, ahogy van

A Fotollection kilenc elterjedt fényképezőgép RAW fájljait nyitja meg úgy, ahogy vannak, konvertálás nélkül, Windowson és Linuxon pedig telepítés nélkül is. A v0.10.0 óta a teljes kép a saját kidolgozása minden Bayer-érzékelős gépnél, a gép saját adataiból készítve, ahogy egy RAW-szerkesztőben, míg az Adobe DNG Converter csak egyik RAW fájlt alakítja át egy másikká.12,13,14,15

9–32 msegy RAW bélyegképe, a fájlba ágyazott előnézetből
0,3–0,7 sa teljes fotó a Fotollection saját kidolgozásával
1,2–1,8 saz Adobe DNG Converter fájlonként, csak a konvertálásra
Fényképezőgépes RAW: a fájltól a képernyőig, gépenként és az Adobe DNG Converterrel szemben
Fényképezőgépes RAW: a fájltól a képernyőig, gépenként és az Adobe DNG Converterrel szemben7
Egy RAW fotó, a fájltól a nyomatig
Egy RAW fotó, a fájltól a nyomatig
A kidolgozási kapu: a képernyőn lévő fotó az első, a háttérmunka vár
A kidolgozási kapu: a képernyőn lévő fotó az első, a háttérmunka vár

Mit rögzít valójában egy érzékelő

A fényképezőgép érzékelője apró kutak, úgynevezett fotodiódák (photosite-ok) millióiból álló rács. Amíg a zár nyitva van, mindegyik összegyűjti a rá eső fényt, és elektromos töltéssé alakítja; amikor bezárul, egy átalakító minden töltésből egy számot csinál. Az összefüggés lineáris: kétszer annyi fény kétszer akkora számot ad. A szemünk egyáltalán nem lineáris, a fényerőt arányokban ítéli meg, ezért néz ki egy RAW fájl sötétnek és laposnak, amíg ki nem dolgozzák.

Kétféle érzékelő olvassa ki ezt a rácsot:

  • A CCD (charge-coupled device, töltéscsatolt eszköz) minden fotodióda töltését soronként a chip szélén lévő egyetlen erősítőhöz tolja. Ez volt az első digitális gépek és sok korai középformátumú hátfal érzékelője: tiszta képek, de lassú kiolvasás és nagy energiaigény.
  • A CMOS minden fotodiódának saját erősítőt ad, és egyszerre sokat olvas ki közülük. Gyorsabb, kevesebb energiát fogyaszt és olcsóbb gyártani, így ma szinte minden fényképezőgépben és telefonban ez van. A legtöbb CMOS-érzékelő egymás után olvassa ki a sorait, ezért dőlhet meg egy gyorsan mozgó téma az elektronikus zárral készült fotón (ez a rolling shutter), és ezért dőlnek kevésbé a sokkal gyorsabban kiolvasó, rétegzett (stacked) érzékelők.

A számoknak sokkal több lépcsőjük van, mint egy JPEG-nek. Egy fényképezőgép fotodiódánként 12 vagy 14 bitet tárol, 4096 vagy 16 384 szintet, ahol egy JPEG 8 bitet, 256 szintet tart meg. Ezek a plusz szintek teszik lehetővé, hogy sávosodás nélkül emelj meg egy árnyékot vagy húzz vissza egy világos eget. És a fény hiánya sem nulla: minden érzékelő hozzáad egy kis eltolást, a feketeszintet, hogy a fekete körüli zaj ne vágódjon le. A Nikon D750 mintájában a fekete 600, a legnagyobb érték pedig, amelyet az érzékelő tárolni tud, a fehérszint, 15 520. Bármely RAW-kidolgozó legelső dolga, hogy ezt a két számot 0-ra és 1-re hozza, a színszűrő minden pozíciójára külön, mert egyes gépek mindegyiknek saját feketeszintet adnak.

A szín az egyes fotodiódák fölötti szűrőből jön

Egy fotodióda csak azt méri, mennyi fény érkezik, a színét soha. Hogy színt lásson, az érzékelőt egy színszűrő-tömb fedi: minden fotodióda fölött egy apró piros, zöld vagy kék szűrő, így mindegyik csak a színkép egy részét számolja.

  • A Bayer-minta, amelyet Bryce Bayer szabadalmaztatott a Kodaknál 1976-ban, egy 2 × 2-es négyzetet ismétel: egy piros, két zöld, egy kék. A fotodiódák fele azért zöld, mert a szemünk a részletek érzékelésének nagy részét a színkép közepéből veszi, így a zöld hordozza az élesség nagy részét. Szinte minden fényképezőgép ezt a mintát használja, négy irány egyikében (RGGB, BGGR, GRBG, GBRG), amelyet a fájlnak meg kell adnia.
  • Az X-Trans, a Fujifilm 2012 óta használt mintája, egy 6 × 6-os négyzetet ismétel, minden sorban és minden oszlopban pirossal, zölddel és kékkel. Szabálytalan elrendezése miatt a finom, ismétlődő részleteken kevésbé valószínű a színes moaré, így a Fujifilm elhagyhatja azt a lágyító szűrőt, amelyet sok érzékelő hordoz, egy nehezebb rekonstrukció árán.
  • Más megoldások: a monokróm érzékelőkön egyáltalán nincs szűrő, így minden fotodióda a teljes részletet látja (a Leica Monochrom gépei); a Sigma Foveonja három réteget rak egymásra, amelyek a szilícium különböző mélységeiben nyelik el a színeket; sok telefon négy azonos színű fotodiódát csoportosít (Quad Bayer), és gyenge fényben egyként olvassa ki őket.

Egy 24 MP-es Bayer-érzékelő tehát 24 millió számot rögzít, mindegyiket egyetlen színre: minden pixel három színéből kettő hiányzik. Ebből a mozaikból képet csinálni a demozaikolás dolga, lásd lent.

Mit tartalmaz egy RAW fájl

A JPEG kész kép: a gép már minden döntést meghozott. A RAW fájl az érzékelő számait e döntések előttről őrzi meg, mindazzal együtt, ami ahhoz kell, hogy később meghozzuk őket:

  • magukat a mintákat, fotodiódánként egyet, és hogy melyik színszűrő alatt ült mindegyik;
  • a fekete- és a fehérszintet;
  • az aktív területet (azokat a fotodiódákat, amelyek fényt kaptak; a szélein néhány sor és oszlop szándékosan le van takarva, hogy a feketét mérjék) és a gép alapértelmezett vágását;
  • a fehéregyensúlyt, amelyet a gép a fotó készítésekor választott;
  • a színmátrixokat, amelyek megmondják, hogyan viszonyul ennek az érzékelőnek a saját pirosa, zöldje és kékje az ember által látott színekhez;
  • egy előnézetet, egy JPEG-et, amelyet maga a gép készített a saját színével és tónusával, plusz az EXIF-adatokat.

Minden gyártónak saját formátuma van, többnyire TIFF-alapú és részben dokumentálatlan: CR2 és CR3 (Canon), NEF (Nikon), ARW (Sony), RW2 (Panasonic), ORF (Olympus), RAF (Fujifilm). A DNG az a formátum, amelyet az Adobe nyilvánosan közzétesz (1.7-es verzió), és amelyet a Ricoh, a Leica, a Pentax és sok telefon használ; ennek a szabályait követi ez az oldal.

A Fotollection a DNG-t a saját, a specifikációból megírt olvasójával olvassa, a többi formátumot pedig a rawler bontja ki, egy LGPL-es könyvtár, amely a Fotollectionbe van építve. A rács bélyegképei egyáltalán nem nyúlnak az érzékelő adataihoz: a fájlban lévő előnézetből jönnek, 9–32 ms alatt, ezért nyílik meg egy RAW-mappa olyan gyorsan, mint egy JPEG-mappa.

Demozaikolás: a két hiányzó szín kiszámítása

Minden pixel két hiányzó színének újraépítését a szomszédaiból demozaikolásnak hívják, és minden más lépésnél jobban eldönti, mennyire éles és tiszta egy RAW-fotó. Minden módszer ugyanazzal a dilemmával néz szembe: a szomszédok átlagolása sík területeken biztonságos, de egy élen át két különböző felületet kever össze, így a művészet abban rejlik, hogy tudjuk, mely szomszédok tartoznak össze.

  • A bilineáris módszer egyszerűen átlagolja az egyes színek legközelebbi fotodiódáit. Ez az alap, amelyhez minden módszert mérnek: lágy, és minden éles él mentén színes szegélyeket hagy, mert a pirosat, a zöldet és a kéket kissé eltérő helyeken átlagolja.
  • A Malvar–He–Cutler (2004) ebből az átlagból indul, és rögzített 5 × 5-ös szűrőkkel korrigálja annak a színnek a részleteivel, amelyet a fotodióda látott. Élesebb, és még mindig nagyon gyors. A Fotollection a v0.10.0-ig ezzel dolgozott ki.
  • A PPG (patterned pixel grouping) először eldönti, melyik irányban változik a legkevésbé a kép, és csak abban az irányban interpolál. A rawler ezt használja, és a v0.10.0-ig a legtöbb formátumnál a Fotollection Windowsos és Linuxos változata is.
  • Az RCD (ratio corrected demosaicing, Luis Sanz Rodrígueztől) a színek közötti arányokkal dolgozik, nem a különbségekkel, ami világos és sötét területeken egyaránt jobban tart, és arról ismert, hogy finom részleteken kevés hibát hagy; a darktable és a RawTherapee is kínálja.
  • A Markesteijn, Frank Markesteijn után, az X-Transra készült módszer, egy menetben vagy, lassabban és tisztábban, háromban.
  • A Fotollection demozaikolása a v0.10.0 óta az RCD-től veszi az irány eldöntésének módját, majd a zöldet mindkét oldalról becsüli meg, az adott pont saját színével korrigálva (ahogy Hamilton és Adams tették), aszerint súlyozva, mennyire változik az egyes oldal. Először az RCD saját arány-lépését írtuk meg, és az rosszabbul teljesített a tesztábráinkon, így a nyertes változat az, amelyik kiadásra került, a saját nevén.

Ha egy módszer rosszul tippel, az négy jellegzetes módon látszik:

  • cipzár: váltakozó világos és sötét pixelek sora egy éles él mentén, ahol a módszer mindkét oldalról vett szomszédokat;
  • labirintus: finom, féregszerű minta sík területeken, amikor egy Bayer-négyzet két zöldje nem egészen ugyanazt olvassa (eltérő szomszédú sorokban ülnek, és sok érzékelőn egy-két százalékkal eltérnek);
  • álszín: színes pöttyök vagy szegélyek valójában szürke részleteken, például szöveten, hajon, téglafalon vagy egy távoli kerítésen;
  • moaré: színes hullámok nagyon finom, ismétlődő mintákon, amelyek finomabbak annál, amit a színszűrő mintavételezni tud.

Hogyan ítélünk meg egyet. A szemünket könnyen becsapja egy élesebbnek tűnő eredmény, ezért minden módszert olyan képeken pontozunk, amelyeknek pontosan ismert a valósága. Egy számítógép öt tesztábrát rajzol 768 px-en: egy zónalemezt (a széle felé finomodó gyűrűk, egészen a legfinomabb részletig, amelyet a zöld fotodiódák meg tudnak tartani), egy 72 küllős Siemens-csillagot, telített színsávokat szürkén három irányban, sima színátmeneteket, és egy sík szürkét, amelyben a két zöld 2 %-kal eltér. Mindegyiket átalakítjuk arra, amit egy Bayer-érzékelő rögzítene, demozaikoljuk, és összevetjük az eredetivel. A PSNR decibelben méri a teljes hibát (a több a jobb; minden 6 dB felezi); az álszín a szürke ábrákon megjelenő átlagos szín; az élhiba az él 2 px-es körzetén belüli átlagos hiba.

Ábra (768 px) Bilineáris Malvar (a miénk a v0.10.0-ig) A miénk a v0.10.0 óta
Zónalemez: PSNR, a több a jobb 13,0 dB 17,3 dB 16,5 dB
Zónalemez: álszín, a kevesebb a jobb 65,9 43,0 18,7
Siemens-csillag: PSNR 21,3 dB 25,2 dB 37,9 dB
Siemens-csillag: álszín 9,4 8,4 0,16
Telített színsávok: hiba az élek mentén, a kevesebb a jobb 11,6 21,6 10,5
Sima átmenetek: PSNR 78,9 dB 77,5 dB 78,4 dB
Sík szürke zöld eltéréssel: labirintus, a kevesebb a jobb 0,38 0,38 0
Textúra beragadt pixelekkel: ennyi marad 10 000-enként, a kevesebb a jobb 35,8 66,5 0

A Malvar kb. 4 dB-lel jobb a bilineárisnál a finom szürke részleteken, ahogy a cikke ígéri, de rosszabb az erős színek közötti éleken, mert a korrekciója az egyik szín részleteit kölcsönzi a többinek, és feltételezi, hogy együtt változnak, amit egy szürke falon lévő piros tábla nem tesz. Egyik sem tünteti el a labirintust, amely nem demozaikolási probléma, hanem a két zöld közötti különbség, amelyet előtte kell kiegyenlíteni. Ezeket a hiányokat zárja be a láncunk a v0.10.0 óta: a beragadt pixeleket és a zöld egyensúlyhiányát akkor javítjuk, amikor még minden pont csak azt tartalmazza, amit mért, az irányfüggő demozaikolás újraépíti a színeket, és egy kis medián a színkülönbségeken eltünteti a maradék álszínt. A tesztábrákon mindenhol nyer, kivéve a zónalemez teljes PSNR-jét, amely a legfinomabb részletek közelében 0,8 dB-lel alacsonyabb a Malvarénál, ahol minden módszer aliasol; az álszíne még ott is a felére esik. A kilenc valódi fájlon minden Bayer-gép kidolgozását ugyanolyan közel vagy közelebb hozza a gép saját JPEG-jéhez, és 24 MP-en kb. 180 ms-ba kerül, szemben a Malvar 40 ms-ával: fotónként néhány tized másodperccel több, tisztább részletű nyomatokért.

A gép színeitől a tieidig

A gép pirosa, zöldje és kékje nem azonos a képernyőd színeivel: minden érzékelő szűrői saját festékeket használnak, és másképp fedik át egymást, mint a szemünk csapjai. A fájlban lévő színmátrixok a gép színeit CIE XYZ-be alakítják, az emberi színlátás 1931-ben meghatározott szabványos modelljébe, onnan pedig sRGB-be, a legtöbb képernyő és a fotólaborok színterébe.

  • Először a fehéregyensúly jön: egy erősítés a piroson és a kéken, hogy ami a jelenetben fehér, semlegesnek tűnjön. A gép rögzíti az általa választott erősítéseket, és a Fotollection ezeket a demozaikolás előtt alkalmazza, így a fenti módszerek által használt színkülönbségek kicsik maradnak.
  • Egy DNG általában két mátrixot hordoz, az egyiket meleg izzólámpafényben, a másikat nappali fényben mérték. A fotódhoz illő a kettő között van: a kidolgozó a fehéregyensúlyból színhőmérsékletként kiszámítja a felvétel fényét, és összekeveri a kettőt. A Fotollection ugyanezt teszi a többi formátumnál, azokból a mátrixokból, amelyeket a rawler minden gépmodellhez ismer.
  • Mindez lineáris fényben történik, az érzékelő saját skáláján, bármilyen görbe előtt. A színek keverése, skálázása és átméretezése lineáris fényben ad fizikailag helyes eredményt; ha a görbe után történik, az élek sötétebbek lesznek, a színek pedig elcsúsznak.

A gép saját lookja. Egy gép saját JPEG-je nem semleges: minden gyártó hozzáadja a saját kontrasztját, színeit és bőrtónusait, és ez a look része annak, amiért az emberek egy márkát választanak. A v0.10.0 óta egy RAW-fotó semleges megjelenítéssel nyílik meg, hűen az érzékelő mátrixához, az objektív vignettálásával és a gép által választott expozícióval; a Like the camera’s JPEG egy kattintásra van egy RAW-fotó RAW colour kártyáján, egy fotóra vagy egyszerre minden RAW-ra. (A v0.10.0-ig minden RAW-ot a gép JPEG-jéhez igazítottunk; az akkor mentett projekt megtartja ezt a lookot.) Ez a választás kétféleképpen igazít a gép JPEG-jéhez, egy görbével és egy mátrixszal vagy csatornánként egy görbével, és azt tartja meg, amelyik közelebb jut az adott fájlnál: a Nikon D750-en felezi a különbséget, ΔE2000-ben 2,26-ról 1,16-ra. A rács bélyegképei a gép saját előnézetét tartják meg, ahogy a Lightroomban.

Tónus: lineáris számokból kép

A lineáris számok sötétnek és fakónak tűnnek a képernyőn, mert a fény megduplázása, amelyet az érzékelő kétszer akkora számként rögzít, nekünk csak egy fokozatnyi világosodásnak látszik. Egy tónusgörbe alakítja az érzékelő skáláját képpé: elhelyezi a középszürkét, megemeli az árnyékokat, a csúcsfényeket lágyan lekerekíti ahelyett, hogy egyszerre levágná őket, és megadja a kép kontrasztját. A képet ezután az sRGB-görbével (a „gammájával”) tároljuk, amely egy JPEG 256 szintjéből többet szán az árnyékokra, ahol a szemünk a lépcsőket a legjobban észreveszi.

Két korrekció, amelyet a gép a JPEG-jében elvégez, nincs benne a RAW-adatokban, és mindkettő számít a nyomatoknál:

  • Vignettálás: minden objektív sötétebb a sarkok felé. A Fotollection a gép saját előnézetéből méri meg, mennyire világosította ki őket a gép, sugárirányú erősítésként. Amikor a DNG-kidolgozásunkat először vetettük össze a gép JPEG-jével, a közép kb. 4 L*-gal volt túl világos, a sarkok pedig 1,5-del túl sötétek; a sugárirányú erősítés a különbséget ΔE 3,8-ról 2,67-re vitte, a fotó minden részét ±0,5 L*-on belül tartva.
  • Torzítás: az objektív enyhe hordó- vagy párnaformája. A Micro Four Thirds gépeket (Panasonic, Olympus) úgy tervezték, hogy a gép korrigálja, és a fájljaik rögzítik, hogyan. Macen ezeket a fájlokat a macOS dolgozza ki, amely alkalmazza a korrekciót; a saját kidolgozásunkban való korrigálása tervben van (FR-085).

Hogyan dolgoz ki a Fotollection egy RAW-ot, lépésről lépésre

Teljes kidolgozásnál, amely a nyomtatási előnézet, a nagyítás és az exportálás mögött áll:

  1. Felismerés: a formátumot a fájl első bájtjaiból ismeri fel, sosem a nevéből, így egy átnevezett fájl vagy egy sima TIFF-nek látszó RAW is helyesen olvasódik be.
  2. Beolvasás: az érzékelő számai, a DNG a saját olvasónkkal, a többi formátum a rawler kibontásával. A túl nagy vagy sérült fájlt elutasítja, mielőtt egyetlen pixelt dekódolna, egy hibakóddal.
  3. Szintek: a fekete 0-ra, a fehér 1-re, a színszűrő minden pozíciójára, az aktív terület sarkától számolva.
  4. Fehéregyensúly, majd demozaikolás: először a beragadt pixelek és a zöld egyensúlya, aztán az irányfüggő demozaikolás, végül az álszín-medián (az X-Trans Markesteijnje a v0.15.0-ban jön).
  5. Szín: a gép mátrixai, a felvétel fényéhez keverve, lineáris fényben.
  6. Tónus és look, a gép előnézetéhez igazítva, a vignettálásával együtt.
  7. Innentől egy RAW-fotó olyan, mint bármely másik: vágás, dátumbélyeg, keret, nyomtatási méret és színprofil, teljes felbontásban, 4:4:4-ben, 95-ös minőséggel exportálva.

Néhány szabály végig érvényes. Egyszerre csak egy kidolgozás fut, minden processzormagra szétosztva, és sosem az ablak saját szálán, így a Fotollection akkor is válaszol, amikor egy 30 MP-es fotó kidolgozása zajlik. Az exportálás mindig a processzoron fut, így egy nyomat minden gépen ugyanolyan lesz; a videokártya csak azt gyorsítja, amit szerkesztés közben látsz. És a kód a sajátunk, a közzétett specifikációkból és cikkekből írva, nem más projektekből másolva, majd ellenőrizve: a fenti szintetikus ábrákon, kilenc gép kilenc RAW fájlján (CC0, a raw.pixls.us oldalról), és fájlok szándékos megcsonkításával és elrontásával, hogy egy rossz fájlból hiba legyen, sosem összeomlás.

A v0.10.0 óta: saját kidolgozás minden Bayer-gépre. A rawler csak kibontja a fájlokat, a többi a Fotollectioné. A kilenc mintafájl teljes kidolgozása, 3 futás mediánja, ugyanazon a laptopon: a mi kidolgozásunk a tisztább demozaikolásával, szemben a rawler egyszerűbb megoldásával és a macOS-ével:

Gép (formátum) A Fotollection sajátja rawler macOS
Panasonic GX9 (RW2, 20 MP) 280 ms 216 ms 436 ms
Panasonic S5 (RW2, 24 MP) 442 ms 301 ms 1044 ms
Olympus E-M10 III (ORF, 16 MP) 308 ms 364 ms 1164 ms
Sony A7 III (ARW, 24 MP) 372 ms 241 ms 488 ms
Canon R10 (CR3, 24 MP) 494 ms 360 ms 1647 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) következik 524 ms 1339 ms

A miénk egy tized–negyed másodperccel tovább tart a rawlerénél a tisztább demozaikolás és az igazított szín miatt, és a legtöbb gépen gyorsabb marad a macOS-nél; fotónként egyszer történik meg, utána egy csúszka 4–11 ms alatt dolgozza újra a megtartott másolatot. Macen a Panasonic és az Olympus fájljai a macOS-nél maradnak az objektívkorrekció miatt, amíg a saját kidolgozásunk nem korrigálja a torzítást. Az S5 szürke foltjai semlegesebbek lesznek, mint a rawleren át (1,42-es színeltolódás a 2,43-mal szemben, ahol a 0 a tökéletes szürke). A Fujifilm X-Trans a Markesteijnnel következik, utána pedig az előnézet kidolgozása a videokártyán, a processzor eredményével mint referenciával.

A legjobb kép ajánlásai: egy ember választásához mérve

95 valódi fotót kézzel 22 pillanatba soroltunk, és ahol volt egyértelmű legjobb, kiválasztottuk. Ezután a Fotollection csoportjait és ajánlásait ehhez a választáshoz mértük.

6-ból 6egyértelmű legjobbal bíró pillanat: elfogadható ajánlás
22-ből 15megtalált pillanat, kettőt sosem keverve össze
17 msegy fotó elemzése, arcokkal 28 ms
A legjobb kép ajánlásai, kézzel válogatott fotókhoz mérve
A legjobb kép ajánlásai, kézzel válogatott fotókhoz mérve7

Hogyan születnek a javaslatok, és hogyan pontozzuk őket

Először a Fotollection megkeresi a pillanatokat. A fotók a készítésük ideje szerint, a másodperc törtrészéig sorba kerülnek, és új pillanat kezdődik, ha a szünet hosszabb 2 másodpercnél vagy a szokásos szünet négyszeresénél, ha a gép vagy az objektív változik, vagy ha a helyszín több mint 30 m-rel odébb kerül. Minden fotó kap egy kis vizuális ujjlenyomatot is, a világos és sötét részek elrendezését és a színek keverékét, és egy kép csak akkor kerül a pillanatba, ha még mindig hasonlít az előtte lévőkre, megengedve egy oldalra lépést vagy egy zoomot, amelyet a gyújtótávolság megmagyaráz.

Ezután egy pillanaton belül minden fotót egy kicsinyített másolaton mér meg: a téma élességét, a bemozdulást, az expozíciót (beégett csúcsfények, bebukott árnyékok, fényerő), a zajt, és ahol arcok vannak, azt, hogy nyitva van-e a szem, és a gép felé fordulnak-e az arcok. Minden mértéket csak ugyanannak a pillanatnak a többi képével vet össze, és súlyoz (a téma élessége 35 %, a nyitott szem 20 %, a bemozdulás 15 %, az expozíció 15 %, a beégett csúcsfények 10 %, a többi kevesebb), egy legkisebb lépéssel, hogy egy nyomtatásban nem látható különbség soha ne döntsön. A javaslat az indoklásával együtt érkezik, semmi sem törlődik, és minden a gépeden fut, fotónként 17 ms alatt, arcokkal 28 ms alatt.

Hogy őszinte maradjon, 95 valódi fotót kézzel válogattunk szét 22 pillanatba, és annál a 6 pillanatnál, amelynek egyértelmű legjobbja volt, kijelöltük a megtartandó fotót. Minden fejlesztést ehhez mértünk:

Lépés Megtalált pillanatok (22-ből) Hibás összevonások Elfogadható választások
Csak a kép ujjlenyomata 3 0 2-ből 2
Plusz elrendezés és szín 13 0 4-ből 3
Plusz zoom a gyújtótávolságból 15 0 6-ból 5
Plusz igazságos élesség és rejtett arcok 15 0 6-ból 6

Két különböző pillanat soha nem kerül egy csoportba; a két plusz csoport olyan pár, amelyet kézzel bizonytalannak jelöltünk. A még kihagyott pillanatok azok, ahol a póz vagy a képkivágás sokat változik, például ha egy ételt a másik oldalról is lefényképeznek.

A számok mögötti fogalmak

Fotós és nyomdai szakszavak, úgy elmagyarázva, ahogy egy barátnak magyaráznánk.

Mi az a ΔE (Delta E)?16

A ΔE azt méri, mennyire különbözőnek látszik két szín az emberi szem számára, egy olyan színtérben számolva, amely a látásunkhoz igazodik (CIELAB, a 2000-es képlettel). A 0 azonosat jelent. Kb. 1 a legkisebb különbség, amelyet egy gyakorlott szem egymás mellett észrevesz; 2–3 a legtöbb ember számára látható; 5 fölött a színek eltérőnek tűnnek. A Fotollection nyomtatási exportja átlagosan 0,19.

Mi az az SSIM?17

Az SSIM, a strukturális hasonlósági index, két kép formáit és textúráit veti össze egyes pixelek helyett, ami közelebb áll ahhoz, ahogy az elmosódást vagy a kockás tömörítést észrevesszük. Az 1 azonosat jelent. Kb. 0,98 fölött a legtöbb ember nagyítás nélkül nem tudja megkülönböztetni a kettőt.

Hány színt tud tárolni egy JPEG?6,18

Egy JPEG a vörös, a zöld és a kék mindegyikére 8 bitet tárol: egyenként 256 szintet, összesen kb. 16,7 millió színt. A fotólaborok is ebből nyomtatnak. A fényképezőgépes RAW fájlok 12–14 bitet tárolnak, az újabb iPhone-ok pedig 10 bites HEIC-et is menthetnek, ami szerkesztéskor segít; egy kész nyomathoz egy jól elkészített 8 bites JPEG nem mutat lépcsőket a tónusok között.

JPG vagy JPEG? És használjak PNG-t?

A JPG és a JPEG ugyanaz a formátum: a régi Windows csak hárombetűs kiterjesztéseket engedett. A PNG veszteségmentes, így soha semmi nem vész el, de egy PNG-ként mentett fotó gyakran három-ötször nagyobb, és a legtöbb kioszk és labor JPEG-et vár. Egy legalább 90-es minőségű, teljes színfelbontású (4:4:4) JPEG, amilyet a Fotollection nyomtatáshoz exportál, papíron megkülönböztethetetlen az eredetitől.

Mit jelent a 4:4:4 és a 4:2:0?

A szemünk a részleteket főleg a fényerőben látja, kevésbé a színben, ezért a JPEG kisebb felbontásban tárolhatja a színt. A 4:4:4 megtartja a teljes színfelbontást; a 4:2:0 a negyedét tartja meg, amitől a fájlok kisebbek, de a színes élek, például egy piros szöveg vagy a levelek mögötti kék ég, elmosódnak. A nyomat 4:4:4-et érdemel; a közösségi média úgyis mindent 4:2:0-ra tömörít újra.

sRGB, Display P3, Adobe RGB és színprofilok19,20,21

A színprofil megmondja a szoftvernek, mit jelentenek a fájlban lévő számok. Az sRGB a weben használt klasszikus színtartomány. A Display P3, amelyet az iPhone-ok és az újabb fényképezőgépek használnak, kb. 25 %-kal több színt ér el, főleg a vörösökben és a zöldekben. Ha egy P3 fotó elveszíti a profilját, a számait sRGB-ként olvassák, és fakónak tűnik: ez az a 13 %-os telítettségvesztés, amelyet mértünk. Az Adobe RGB, amelyet egyes gépek nyomdai munkához kínálnak, szintén szélesebb az sRGB-nél, főleg a zöldekben és a ciánokban. A Fotollection nyomtatáshoz megtartja a fotó profilját, bármi legyen is, közösségi médiához pedig rendesen sRGB-re alakít.

Hány DPI kell egy nyomathoz?

A DPI azt adja meg, hány pixel jut a papír egy hüvelykére. 300 DPI-nél egy nyomat közelről is élesnek tűnik; 150–200 DPI karnyújtásnyiról elég. Egy 10 × 15 cm-es nyomathoz 300 DPI-nél 1800 × 1200 pixel kell, így bármely telefonos vagy gépes fotó elég; az alkalmazás méretjavaslata megmondja, mekkorára nagyítható egy-egy fotó.

Miért néznek ki rosszabbul a fotók a Facebookon?

A Facebook minden fotót legfeljebb 2048 px-re méretez át, gyengébb minőséggel és felezett színfelbontással tömöríti újra, és elhagyja a színprofilokat. Egy túl nagyként érkező fotót kétszer méreteznek át, egyszer te, egyszer a Facebook. Ha eleve 2048 px-en, sRGB-ben és enyhén élesítve küldöd, a Facebook csak egyszer tömöríti újra, és a színek már eleve jók.

Futtasd le magad a méréseket

Minden megismételhető a saját fotóidon. A szkriptek sosem töltenek fel és nem másolnak fotót; csak számok maradnak meg. A teljes táblázatok, minden futással, a RESULT.md fájlban vannak.

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

A RESULT.md a GitHubon Vissza a kezdőlapra

  1. 1. A SIMD (single instruction, multiple data) lehetővé teszi, hogy a processzor sok értéken dolgozzon egyszerre: egyetlen utasítás több, egy széles vektorregiszterben egymás mellett tárolt számra hat, például sok pixel vörös, zöld és kék összetevőjére. Az Intel és az AMD processzoraiban SSE és AVX néven, az Apple siliconban és más Arm processzorokban NEON néven érhető el. Az Intel, az AMD és az Arm tulajdonosaik védjegyei.
  2. 2. Mértékegységek: a px a pixel, egy kép egyetlen pontja; az MP (megapixel) egymillió pixel, így egy 20 MP-es fotó kb. 5472 × 3648 px; az ms a milliszekundum, a másodperc ezredrésze; az MB és a GB megabájt és gigabájt; a RAM (random-access memory) a számítógép munkamemóriája.
  3. 3. A Rust és a Rust logó a Rust Foundation védjegyei. A Fotollection magja Rustban íródott, és közvetlenül a gépeden fut.
  4. 4. Az EXIF (Exchangeable Image File Format) a japán JEITA és CIPA által gondozott szabvány arra az információra, amelyet a fényképezőgép minden fotóba beír: a gép és az objektív, a dátum és az idő, az expozíció, gyakran a GPS-pozíció és egy kis beágyazott bélyegkép.
  5. 5. A RAW fájl azt tárolja, amit a gép érzékelője rögzített, mielőtt a gép képpé alakította volna, így a szín, a fényerő és a részletek később is eldönthetők, ahogy egy negatívot előhívnak. Minden gyártónak saját formátuma van (CR3 a Canonnál, NEF a Nikonnál, ARW a Sonynál, RW2 a Panasonicnál és így tovább); a DNG (Digital Negative) az Adobe által közzétett nyílt RAW-formátum.
  6. 6. A JPEG a Joint Photographic Experts Group képformátuma, ISO/IEC 10918-1 és ITU-T T.81 néven szabványosítva.
  7. 7. Minden diagram: a számok tájékoztató jellegűek, egy átlagos laptopon (Apple M3, 16 GB) mérve; a tieid attól függnek, milyen gépet használsz.
  8. 8. Az Adobe, a Lightroom és a Lightroom Classic az Adobe Inc. védjegyei az Egyesült Államokban és más országokban. A Fotollection nem áll kapcsolatban az Adobe-bal, és az Adobe nem támogatja; azokat a billentyűket és elrendezést követi, amelyeket a Lightroom felhasználói már ismernek. A Lightroom logója a Wikimedia Commonsról származik, ahol szöveges logóként közkincs.
  9. 9. Az alkalmazás ablaka Taurival készül, és a rendszer saját webnézete rajzolja: macOS-en a WebKit (WKWebView), Windowson a Microsoft Edge WebView2, Linuxon a WebKitGTK, a WebKit GTK-portja. A Tauri a Commons Conservancyn belüli Tauri Programme projektje; a WebKit az Apple Inc. védjegye; a GTK a GNOME Foundation projektje; a Microsoft Edge és a WebView2 a Microsoft Corporation védjegyei. A böngészős összevetés ugyanezt a feladatot headless Chromium 156-ban futtatta, amely a Google Chrome mögötti nyílt forráskódú projekt, processzormagonként egy Web Workerrel.
  10. 10. A prágai mappa a szerző sajátja, és nincs közzétéve (© @hoangphi01, minden jog fenntartva). A bench/trip.sh és a JPEG-jein futtatott measure_folder 3-3 futásának mediánjai, Apple M3-on 16 GB-tal, más nyitott alkalmazások mellett, 2026. november 4-én, a v0.9.7 exportálásával; az összevetéshez futtasd őket egy saját mappán.
  11. 11. A p50 és a p95 percentilisek: a p50, a medián, az az idő, amely alatt a futások fele maradt; a p95 az az idő, amely alatt 100 futásból 95 maradt, így azokat a lassú eseteket mutatja, amelyeket egy átlag elrejt.
  12. 12. Az Adobe DNG Convertert ehhez az oldalhoz nem futtattuk. A szám külső becslés (1000 CR3 fájl 20–30 perc alatt modern hardveren, a gép megnevezése nélkül), a convertintomp4.com RAW–DNG kötegelt konvertálásról szóló blogbejegyzéséből. Az Adobe az Adobe Inc. bejegyzett védjegye.
  13. 13. A CMOS és a CCD a képérzékelők két fajtája: fényérzékeny cellák rácsa, amely a fényt elektromos töltéssé alakítja. Ma szinte minden fényképezőgép és telefon CMOS-t (complementary metal-oxide-semiconductor) használ; a CCD (charge-coupled device) a korábbi gépekben volt elterjedt.
  14. 14. A PSNR (peak signal-to-noise ratio, csúcsjel–zaj viszony) két képet pixelről pixelre vet össze, és a különbségüket decibelben adja meg: minél nagyobb, annál közelebbiek. Kb. 40 dB fölött a különbség alig látható.
  15. 15. A TIFF (Tagged Image File Format) rugalmas képformátum, amelyet ma az Adobe gondoz; sok RAW-formátum, köztük a DNG, az ő szerkezetére épül.
  16. 16. A ΔE2000 (CIEDE2000) a Nemzetközi Világítástechnikai Bizottság (CIE) színkülönbség-képlete, ISO/CIE 11664-6 néven szabványosítva; a CIELAB színtér, amelyben számol, az ISO/CIE 11664-4.
  17. 17. Az SSIM-et Zhou Wang, Alan C. Bovik, Hamid R. Sheikh és Eero P. Simoncelli vezette be az Image quality assessment: from error visibility to structural similarity című cikkben, IEEE Transactions on Image Processing, 13(4), 2004.
  18. 18. A HEIF (High Efficiency Image File Format) az ISO/IEC 23008-12 képformátuma; a HEIC ennek HEVC-vel (H.265) tömörített változata, amelyben az iPhone-ok alapból mentik a fotókat. Egy HEIC fotó nagyjából fele akkora, mint egy hasonló minőségű JPEG.
  19. 19. Az sRGB-t a HP és a Microsoft hozta létre 1996-ban, és IEC 61966-2-1 néven szabványosították.
  20. 20. A Display P3 az Apple Inc. által meghatározott színtér, amely a filmipar (SMPTE) DCI-P3 színterén alapul.
  21. 21. Az Adobe RGB (1998) az Adobe Inc. által specifikált színtér; az Adobe az Adobe Inc. bejegyzett védjegye.

A dm és a Rossmann fotószolgáltatásait a CEWE üzemelteti, amely a CEWE Stiftung & Co. KGaA védjegye. A nyomatméreteket a dm árlistájával vetettük össze 2026 októberében; a boltok változtathatnak rajtuk.

A képernyőképeken látható prágai fotókat (a villamosokat, az utcákat, a Moldvát) @hoangphi01 készítette Lumix GX9-cel 2026 novemberében: © @hoangphi01, minden jog fenntartva. Nem tartoznak az alkalmazás licence alá, és nem használhatók fel újra. A többi bemutatófotó közkincs (CC0) a Wikimedia Commonson, szerzőik Dktue (7 fotó), Pierre Blaché Párizsból (2) és Kate Branch (1). A nyomtatási kosaras és a legjobb képes képernyőképeken látható macskát szintén @hoangphi01 fotózta a GX9-cel, minden jog fenntartva; a mellette látható lágyabb, bemozdult és sötétebb másolatok ebből az egy fotóból készültek, hogy megmutassák, hogyan választódik ki a legjobb kép. Minden fájl, az oldala és az ellenőrzőösszege.

A RAW-mérések kilenc közkincs (CC0) mintát használnak a raw.pixls.us oldalról, formátumonként egyet; a scripts/fetch-raw-samples.py letölti és ellenőrzi őket.

Az ezen az oldalon említett RAW-formátumok az őket meghatározó gyártókéi: RW2 (Panasonic Holdings Corporation), CR2 és CR3 (Canon Inc.), NEF (Nikon Corporation), ARW (Sony Group Corporation), RAF (FUJIFILM Corporation) és ORF (OM Digital Solutions Corporation, korábban Olympus). A DNG az Adobe Inc. által közzétett nyílt specifikáció. A Fotollection a beépített olvasójával olvassa őket, macOS-en pedig elsősorban a rendszer kodekjeivel (Windowson a Microsoft Raw Image Extension, ha telepítve van, utolsó tartalék); egyik cég sem készítette vagy támogatja.

A képernyőképeken és az alkalmazás adatkeretében látható fényképezőgép-nevek és -logók tulajdonosaik védjegyei, és csak azt mutatják, melyik gép készítette a fotót: 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.) és Sony (Sony Group Corporation).

Az Apple és a macOS az Apple Inc. védjegyei; a Windows a Microsoft Corporationé; a Linux Linus Torvalds bejegyzett védjegye az Egyesült Államokban és más országokban; az Ubuntu a Canonical Ltd.-é; a Debian a Software in the Public Interest, Inc.-é; a Fedora, a Red Hat, a RHEL és a CentOS a Red Hat, Inc.-é; az openSUSE a SUSE LLC-é; a Pop!_OS a System76, Inc.-é; a Rocky Linux a Rocky Enterprise Software Foundationé; az AlmaLinux az AlmaLinux OS Foundationé; a ChromeOS a Google LLC-é; az NVIDIA az NVIDIA Corporationé; a többi Linux-disztribúció neve a projektjeiké; a Facebook és az Instagram a Meta Platforms, Inc.-é; a GitHub a GitHub, Inc.-é; a Google Analytics a Google LLC-é; a Lightroom az Adobe Inc.-é; az IrfanView Irfan Škiljané; a VietQR a NAPAS-é; a Wikimedia Commons a Wikimedia Foundationé. Az Apple, a Windows és a Linux (Tux, első rajzolója Larry Ewing) jelei a Simple Iconsból (CC0) származnak, és csak azt mutatják, melyik rendszerről szól egy oszlop vagy egy lépés.

A Fotollection független, nyílt forráskódú projekt. Nem áll kapcsolatban ezekkel a cégekkel, nem szponzorálják és nem támogatják, és minden más védjegy a tulajdonosáé.

A Fotollection név és logó a hivatalos alkalmazást jelöli, amelyet @hoangphi01 készít. Hivatalos letöltések csak a fotollection.org oldalról és a projekt GitHub-kiadásaiból származnak. A GPL-3.0 licenc bárkinek megengedi, hogy másolatokat osszon meg vagy adjon el, módosítva vagy anélkül, amíg megtartja ezt a licencet és elérhetővé teszi a forráskódot; egy módosított vagy továbbértékesített másolat nem használhatja a Fotollection nevet vagy logót úgy, hogy azt sugallja, ez a hivatalos alkalmazás.

Megosztanád vagy eladnád a Fotollectiont, vagy ráépítenél? Kérlek, előbb szólj a szerzőnek egy GitHub-issue megnyitásával (github.com/hoangphi01/fotollection/issues). Az alkalmazás ingyenes, és szabadidőben készül; egy rövid üzenet a tisztességes köszönet.

Idézed, értékeled vagy bemutatod az alkalmazást, vagy felhasználod ezeket a képernyőképeket? Kérlek, tüntesd fel a Fotollectiont, és hivatkozz a fotollection.org oldalra.