homeportfoliosproductsarticlesworkshopsbiographycontact
 
 
 

DNG - az igazság másik fele

 

Amikor a DNG formátum napvilágot látott, a FotoTipp egyből beállt a támogatói közé. Úgy éreztük, hogy az a nyomás, amit az OpenRAW munkacsoport és támogatói kifejtenek a fényképezőgépgyártókra hasznosnak bizonyul minden digitális fotográfus számára. Jelenleg sem gondolom gyökeresen másképp, azonban az időközben történteknek köszönhetően a kérdéskörrel kapcsolatos véleményem elég sokat finomodott.

Az egész akkor kezdődött, amikor megvásároltam a Canon 5D-met, és RAW konverterre lett volna szükségem. A DPP-t nem szeretem, viszont az Adobe DNG Converter már bétában támogatta az 5D-t, így arra gondoltam, hogy DNG-be átkonvertálom a képeket, és majd azt a RawShooter essentials (RSE) segítségével feldolgozom. Ekkor jött a pofon, hogy nem hajlandó az RSE betölteni a DNG fájlokat. Bosszúsan vakargattam a fejem, hogy mi lehet a baj, elvégre ezért lenne a DNG, de akkor még nem vettem a fáradtságot, hogy utánamenjek a dolognak. Aztán a hosszú téli esték valamelyikén eszembe jutott, hogy érdemes lenne a végére járni. Elővettem hát a DNG specifikációt (1.1.0.0 verzió, 2005. február), és végigrágtam magam mind az 50, rendkívül száraz olvasmánynak számító oldalán. A tisztánlátáshoz szükség volt még Dave Coffin DCRAW nevű RAW konverterére is, amely rengeteg kameratípus mellett a DNG formátumot is támogatja, és mivel open source, ezért lehetőségem volt a forráskód alapján megérteni a dolgokat. (A teljes, színkezelést is támogató lefordított változat és a forrás letölthető itt.) A vállalkozó kedvű Olvasónak ajánlom átnézni ezt a forrást, egyrészt mert érdekes dolgokat tudhat meg belőle a konverziós algoritmusokról, másrészt pedig, hogy így nem szabad programot írni - ha bármelyik fejlesztőm ilyen minőségben és dokumentáltsággal dolgozna, páros lábbal rúgnám ki a csapatból. Na, de vissza a témához. Mivel a DNG tulajdonképpen TIFF-EP, ezért jól jön a vizsgálódáshoz a libtiff, és a hozzá járó segédprogramok közül a tiffdump is.

Ebben az írásban az eközben szerzett tapasztalataimat szeretném megosztani az Olvasóval. Ha valakinek nincs affinitása a fájlformátumok belsejének vizsgálatásoz, akkor nyugodtan ugorja át ezeket a részeket, a lényeg a konkrét bitek vadászata nélkül is érthető marad.

 

 

A RAW konverzió lépései és a kutya elásásának helye

Miért van az, hogy a DCRAW át tudja konvertálni az 5D fájlokból készült DNG fájlokat, míg az RSE, ami szintén DNG kompatibilis, nem? A válaszra akkor találhatunk rá, ha megnézzük milyen lépésekből is áll a RAW konverziós folyamat - merthogy ezen lépések valamelyikén kell elbuknia az RSE-nek.

A négy fő lépés sorrendben a következő:

  • RAW fájl betöltés és dekódolás

  • Bayer-mozaik feloldása és interpoláció

  • Tonalitás és színtér konverzió

  • Eredmény mentése

A utolsó lépés teljesen irreleváns jelen téma kapcsán - mivel szerencsétlen konverter, ha egyszer már megcsinálta a konverziót, bizonyára el tudja menteni a fájlt.

Az első lépés, nevezetesen a fájl betöltése és a vonatkozó RAW formátum dekódolása az, ahol a DNG igazi ereje lakozik. Tanulságos a DCRAW forrásának olvasgatása, mert a kód jelentős része a kölünböző RAW fájlok értelmezésével és betöltésével foglalkozik. Ez az a lépés, amiről az OpenRAW célja szól: olyan formátum kialakítása, amely nyílt, dokumentált, és 50 év múlva is betölthetők az állományok. A betöltés során az aktuális pixelek mellett olyan paraméterek is beolvasásra kerülnek, amelyek a későbbi lépések paraméteréül szolgálnak - mint például a fehéregyensúly.

De akkor miért nem tudta megnyitni az RSE az 5D-vel készült DNG fájlt?

A helyzet az, hogy a betöltés és dekódolás még csak megy neki, merthogy szabványos a formátum. A kutya tehát a középső két lépésben van eltemetve valahol. A mozaik feldolgozását és az interpolációt végző algoritmus a RAW konverter tulajdona. Sőt, épp ez az, amiben a tudomány és technika fejlődésével javulást várunk az újabb konverterektől. Marad a tonalitás és színtér konverzió. Konvertere válogatja, hogy ezeket egyben vagy két külön lépésben hajta-e végre, de érdemes megnézni, hogy mi is történik itt. Alapértelmezés szerint a kamerából kikerülő kép lineáris. Ahhoz, hogy ebből a megszokott, a későbbiekben feldolgozható kép legyen, egy korrekciós görbét kell ráhúzni. Ez lehet egy egyszerű gamma-görbe (általában 0.45-ös értékkel), vagy bármilyen ettől eltérő, egyedi görbe. Az alábbi képek közül a bal oldali a lineáris, a jobb pedig a korrigált változatot mutatja.

A színtér konverzió feladata pedig az, hogy a fényképezőgép érzékelőjének színeit valamely ismert színtérbeli értékeknek megfeleltesse. (Aki nincs tisztában a színkezelés alapfogalmaival, javaslom olvassa el ezt a cikket.) A fenti két lépés elvégzéséhez szükség van a tonalitás konverziós görbére (vagy egyszerűen csak egy gamma értékre), illetve a fényképező érzékelőjének képességeit leíró adatokra. Mindkettőt általában a kamera profil tartalmazza.

Két dolog kell tehát ahhoz, hogy egy RAW konverter támogasson egy adott fényképezőgép-típust:

  • RAW fájl formátum dekóder

  • Színprofil

A DNG formátum ad megoldást a fájlok dekódolására - lévén a formátum szabványos. A profilokkal kissé komplikáltabb a helyzet.

A színprofilok kérdése

Amit nyugodt szívvel kijelenthetünk, az az, hogy mindenképp szükség van a profilra. Két helyről veheti a konverter: magából a RAW állományból, illetve a saját (vagy az operációs rendszer) profiltárolójából. Ha a RAW állományból veszi, akkor a fényképezőgép gyártójának profiljához van kötve - mi viszont pont azért fényképezünk RAW-ban, hogy az ilyen típusú kötöttségektől megszabaduljuk. A saját profiltároló előnye, hogy a gyáriaknál jobb minőségű profilokkal lehet dolgozni. Sőt mi több, ezen a téren is éles verseny alakult ki a koverter gyártók között. Olyannira piac ez, hogy vannak (például Magne Nielsen, aki a Pixmantex ColorEngine-hez is készítette a profilokat), akiknek ez a fő bevételi forrása.

A specifikációból kiderül, hogy a DNG fájlokban lehetőség van színkonverziós mátrixok elhelyezésére is, ami a szükséges konverziós információt tárolja. Ezt vagy a fényképezőgép, vagy a DNG konverter írhatja bele. Ahogy azt már említettem, ekkor a gép (vagy a DNG konverter) gyártójához vagyunk kötve. Az alábbi (tiffdump segítségével készített, a DNG tag-ek esetében kézzel kiegészített) listában az Adobe DNG Converter által produkált konverziós mátrixot láthatunk (kettőt, két különböző megvilágításhoz).

1D2_0442_6456.DNG:
Magic: 0x4949 <little-endian> Version: 0x2a
Directory 0: offset 8 (0x8) next 0 (0)
SubFileType (254) LONG (4) 1<1>
ImageWidth (256) LONG (4) 1<256>
ImageLength (257) LONG (4) 1<171>
BitsPerSample (258) SHORT (3) 3<8 8 8>
Compression (259) SHORT (3) 1<1>
Photometric (262) SHORT (3) 1<2>
Make (271) ASCII (2) 6<Canon\0>
Model (272) ASCII (2) 21<Canon EOS-1D Mark II\0>
StripOffsets (273) LONG (4) 1<37950>
Orientation (274) SHORT (3) 1<1>
SamplesPerPixel (277) SHORT (3) 1<3>
RowsPerStrip (278) LONG (4) 1<171>
StripByteCounts (279) LONG (4) 1<131328>
PlanarConfig (284) SHORT (3) 1<1>
DateTime (306) ASCII (2) 20<2004:10:23 02:32:32\0>
Artist (315) ASCII (2) 15<Laszlo Pusztai\0>
SubIFD (330) LONG (4) 2<17006 37316>
XMPMetadata (700) BYTE (1) 6943<0x3c 0x3f 0x78 0x70 0x61 0x63 0x6b 0x65 0x74 0x20 0x62 0x65 0x67 0x69 0x6e 0x3d 0x27 0xef 0xbb 0xbf 0x27 0x20 0x69 0x64 ...>
34665 (0x8769) LONG (4) 1<37580>
37393 (0x9211) LONG (4) 1<7097>
DNGVersion (50706) BYTE (1) 4<00 00 0x1 0x1>
DNGBackwardVersion (50707) BYTE (1) 4<00 00 0x1 0x1>
UniqueCameraModel (50708) ASCII (2) 21<Canon EOS-1D Mark II\0>
ColorMatrix1 (50721) SRATIONAL (10) 9<0.718 -0.1623 -0.0246 -0.6794 1.4095 0.2977 -0.0978 0.1328 0.8537>
ColorMatrix2 (50722) SRATIONAL (10) 9<0.6264 -0.0582 -0.0724 -0.8312 1.5948 0.2504 -0.1744 0.1919 0.8664>
CameraCalibration1 (50723) SRATIONAL (10) 9<1.0159 0 0 0 1 0 0 0 0.968>
CameraCalibration2 (50724) SRATIONAL (10) 9<1.0159 0 0 0 1 0 0 0 0.968>
AnalogBalance (50727) RATIONAL (5) 3<1 1 1>
AsShotNeutral (50728) RATIONAL (5) 3<0.457143 1 0.977099>
BaselineExposure (50730) SRATIONAL (10) 1<0.35>
BaselineNoise (50731) RATIONAL (5) 1<1>
BaselineSharpness (50732) RATIONAL (5) 1<1>
LinearResponseLimit (50734) RATIONAL (5) 1<1>
CameraSerialNumber (50735) ASCII (2) 7<213481\0>
LensInfo (50736) RATIONAL (5) 4<70 200 Nan (0/0) Nan (0/0)>
ShadowScale (50739) RATIONAL (5) 1<1>
DNGPrivateData (50740) BYTE (1) 9006<0x41 0x64 0x6f 0x62 0x65 00 0x4d 0x61 0x6b 0x4e 00 00 0x23 0x20 0x49 0x49 00 00 0x2 0xbc 0x1c 00 0x1 00 ...>
CalibrationIlluminant1 (50778) SHORT (3) 1<17>
CalibrationIlluminant2 (50779) SHORT (3) 1<21>
RAWDataUniqueID (50781) BYTE (1) 16<0x47 00 0x6 0xb8 0xcc 0x88 0xb8 0xa4 0xd 0x19 0x6f 0x9e 0x74 0xa7 0x27 0x6e>
OriginalRAWFileName (50827) BYTE (1) 18<0x31 0x44 0x32 0x5f 0x30 0x34 0x34 0x32 0x5f 0x36 0x34 0x35 0x36 0x2e 0x43 0x52 0x32 00>

A DCRAW a DNG-ben lévő konverziós mátrixot tudta használni az 5D képének konvertálásához. (Egyébként a DCRAW kódba rengeteg fényképezőhöz vannak beégetett konverziós mátrixok, melyeket az Adobe készített eredetileg.) Az RSE pedig mivel minden esetben a saját profiljait használja, és az 5D-hez nincs profilja, ezért tagadta meg a konverziót.

Konklúzió

Két dologra van szüksége egy RAW konverternek ahhoz, hogy egy adott fényképezőgép-típust támogasson: RAW fájl formátum dekóderre és színprofilra. Egy valamire való konverter nem elégedhet meg azzal, hogy a profilt a RAW fájlokból veszi - ezzel pont annak a kontrollnak egy részét adná fel, amiért a fotós RAW fájlt használ és nem JPEG-et. Éppen ezért a konverter gyártójának mindkét aspektusra oda kell figyelnie, amikor úgy dönt, hogy egy fényképezőgép-típust támogat: RAW fájl dekókert ÉS színprofilt is szállítania kell. Ebből a DNG formátum az egyiket, de csak az egyiket, megoldja. Viszont ha a konverter gyártója a későbbiekben úgy dönt, hogy megszünteti egy adott gép támogatását, akkor DNG ide vagy oda, ott fogunk állni, hogy nem tudjuk kedvenc képeinket átkonvertálni.

Az a véleményem, hogy a DNG egy szükséges lépés affelé a cél felé, amit az OpenRAW kitűzött, de nem elégséges annak eléréséhez. Hiba lenne csodaszerként tekinteni rá - inkább pontosan ismerni kell mire jó, és mire nem, hogy ez alajpán dönthessük el azt, milyen helyet kap a saját digitális sötétkamránkban.

Úgy vélem, jelen pillanatban nincs szükségem arra, hogy DNG formátumba konvertáljam a képeimet, sőt a korábban átkonvertáltak törlésével is pár száz gigabájtot felszabadítottam. Ha majd a jövőben a kedvenc konverter gyártóim mindegyike úgy dönt, hogy dobja valamelyik régi fényképezőm RAW fájljainak dekódolási támogatását, akkor majd átkonvertálom a képeket DNG-re. Persze csak akkor, ha továbbra is lesz a géphez színprofil. Ha nem, akkor bajban leszek.

All materials copyright © 2002-2012 Laszlo Pusztai. All rights reserved.