AFE

Program pro zpracování fotografií ve formátu RAW


StaženíPoužití

Program MRAW zpracovává soubory fotografií ve formátu Canon CR2, Canon CRW, Nikon NEF a Adobe DNG. Je schopen dekódovat obraz ze souboru, aplikovat případné temné snímky, bias nebo flatfieldy a uložit výsledek ve formátu CR2 nebo DNG. Dále je implementována konverze do formátu RGB s možností uložení výsledku v nekomprimovaném formátu TIFF se 16 bity na kanál nebo v komprimovaném JPEG.

Při vývoji programu nebyly využity žádné existující kódy či knihovny, pouze specifikace příslušných formátů a průzkum skutečných souborů z digitálních zrcadlovek značek Canon a Nikon. Program proto může některá data interpretovat nebo zapisovat odlišně, než bývá u jiných programů obvyklé. To se týká i převodu do RGB formátu, který využívá vlastní algoritmus interpolace. Zaměřil jsem se na minimalizaci možných artefaktů, algoritmus však není příliš rychlý a neprodukuje "zářivé, kontrastní a ostré" snímky, jak bývá u jiných programů zvykem. Přesto je možné jej použít i pro převod běžných, denních snímků do formátu TIFF nebo JPEG. Pokud však nejsou správně exponovány, je zpravidla nutné následně doladit vyvážení barev apod.

Program se spouští z příkazového řádku, jedním příkazem lze zpracovat více souborů. Pokud je zadáno více jmen vstupních souborů bez dalších operací, jsou data ze souborů zprůměrována a uložena opět ve formátu CR2 nebo DNG. Pokud je zadáno zpracování souborů ( temný snímek, bias, flatfield, převod do RGB ), je zpracován a uložen každý soubor samostatně.

Výstupní soubory ve formátu CR2 jsou kompatibilní se standardem, při průměrování většího množství snímků však mají větší počet bitů na pixel, aby se zbytečně neztrácela přesnost. Takové výstupy odmítá číst plugin CameraRaw ve Photoshopu, vyžaduje přesnou bitovou hloubku pro daný typ fotoaparátu. Proto je možné volbou v příkazovém řádku výslednou bitovou hloubku omezit. Ostatní operace se soubory zachovávají původní počet bitů originálu ( i když je např. kombinován s temným snímkem s vyšší bitovou hloubkou ). Výstupy ve formátu DNG jsou vždy konvertovány na 16 bitů/kanál a lze je číst programem CameraRaw bez problémů.

Originální programy, dodávané s fotoaparáty Canon ( např. Digital Photo Professional ) odmítají soubory, generované programem MRAW, zpracovat, protože v nich nenajdou nedokumentované "tajné" datové struktury, zaznamenané fotoaparátem. Většina ostatních programů používá algoritmy programu "dcraw", který výstupní soubory programu MRAW čte bez problémů. Chyby a zjednodušení v programu "dcraw" byly při vývoji kódu MRAW vzaty v úvahu.

Kompatibilita formátu DNG

Program čte komprimované i nekomprimované DNG soubory verzí 1.1 a vyšší ( Adobe DNG konvertor 3.2 a vyšší ). Teoreticky by mohl číst i nekomprimované DNG soubory verze 1.0, ale zpracování by nemělo stejnou kvalitu, jako u vyšších verzí ( chybí maskované okraje obrazu ). Komprimované soubory DNG 1.0 mají odchylku od standardu v algoritmu komprese a program s nimi není kompatibilní.

Program pracuje pouze s daty z RGB senzorů s Bayerovou maskou 2x2. Jiná obrazová data nebude interpretovat správně. DNG soubor musí být vytvořen se zachováním původního CFA formátu ( tedy nikoliv tzv. lineární DNG ). Nebylo testováno čtení DNG s vloženým původním RAW souborem, ale patrně bude fungovat.

Kvalita zpracování závisí na informacích, obsažených v DNG souboru. Bez problémů je použití souborů, vytvořených Adobe DNG konvertorem z formátů CRW a CR2, kde je zachována prakticky veškerá informace z původních RAW souborů. Horší je situace u některých souborů, převedených z formátu NEF ( z testovaných zejména z Nikonu D90 ), kde se převodem část informací ztrácí.

Program zapisuje nekomprimované DNG soubory verze 1.2, zpětně kompatibilní s verzí 1.1. Bez komprese je i vložený náhled. Soubory jsou tedy poměrně veliké, lze je však číst téměř libovolným programem, který DNG formát používá.

Kompatibilita formátu NEF

Formát, využívaný zrcadlovkami Nikon, neobsahuje některá data, využívaná programem MRAW ( a obsažená v souborech CRW a CR2 ). Také obrazová data ze senzoru nejsou zaznamenána zcela bezztrátově. Program je schopen se soubory pracovat, kvalita výsledků však bude patrně v průměru nižší, než u souborů ze zrcadlovek Canon.

Upozornění :

Program je stále ve vývoji. Byl sice důkladně testován, ale v některých algoritmech mohou být neodhalené chyby. Je poskytován v dobré víře, že bude uživatelům užitečný, avšak bez jakýchkoliv záruk. Autor nenese odpovědnost za případnou materiální nebo psychickou újmu, způsobenou používáním programu.

Licence :

MRAW je volně šiřitelný program. Můžete jej zdarma používat, šířit, modifikovat nebo využívat jeho části ve svých programech v souladu s podmínkami GNU General Public License 3.

Historie :

7.1.2014
verze 1.1.8 s upravenou analýzou histogramu při převodu do RGB pro potlačení vlivu okrajů snímku ( elektroluminiscence apod. )

7.3.2013

verze 1.1.7 s malou úpravou vlastního algoritmu aplikace flatfieldu.

5.3.2013

verze 1.1.6 s doladěnými algoritmy po předchozích úpravách.

4.3.2013

verze 1.1.5 s další úpravou normalizace úrovní při aplikaci flatfieldu, řešící problémy s přeexponovanými snímky.

3.3.2013

verze 1.1.4 s upraveným algoritmem normalizace úrovní při aplikaci flatfieldu.

21.1.2011

verze 1.1.3 s malou změnou určení úrovní jednotlivých kanálů při převodu do RGB u částečně saturovaných pixelů.

30.10.2010

verze 1.1.2 s upraveným algoritmem určení úrovně černé ve vstupních souborech, kde program není schopen správně identifikovat maskované okraje senzoru ( zejména jde o temné snímky ve formátu CR2 ).

25.10.2010

verze 1.1.1 s upraveným algoritmem detekce 10bitových a 12bitových CRW souborů řeší problémy s některými specifickými temnými snímky z Canonu EOS 300D. Ostatní algoritmy zůstaly beze změn.

29.7.2010

první "stabilní" verze 1.1.0 rozšiřuje množinu vstupních formátů, umožňuje aplikaci biasu a normalizuje úrovně při aplikaci flatfieldu. Pořadí operací s více vstupními soubory bylo změněno pro snížení nároků na operační paměť. Převod do RGB formátu byl upraven i pro zpracování monochromatického obrazu při fotografování přes úzkopásmové filtry. Opraveno několik drobných chyb z předchozích "beta" verzí.

15.6.2010

verze 1.0.beta11 s vylepšenou detekcí binárních dat, zakódovaných v obraze a odpovídajícími úpravami aplikace temných snímků a flatfieldů. Proti předchozím verzím lépe interpretuje data z EOS 450D, v nichž jsou rušivé binární sekvence na začátku i na konci obrazových dat

24.5.2010

verze 1.0.beta10 s upraveným algoritmem normalizace temných snimků. Úprava řeší technické problémy při výpočtech u některých snímků, metoda a výsledky jsou stejné, jako v předchozí verzi.

17.5.2010

ve verzi 1.0.beta9 ( build 05/17/10 ) upraveny algoritmy, které mohly způsobit chyby při výpočtech pod systémem MS Windows

10.5.2010

verze 1.0.beta9. Další zpřesnění algoritmu normalizace temných snímků a omezení interpolace při jejich aplikaci. Aplikace temných snímků vyžaduje delší čas a ponechává ve snímku více šumu, výrazně se však snižuje riziko vzniku artefaktů

30.4.2010

verze 1.0.beta8. Podstatná úprava algoritmu aplikace temných snímků a drobné úpravy ostatních algoritmů. Verze lépe řeší problémy s normalizací temných snímků. Doplněna podpora NEF souborů z Nikonu D700

24.2.2010

verze 1.0.beta7. Úprava algoritmů aplikace temných snímků a flatfieldů, přesnější řešení problémů s některými snímky z EOS 40D a EOS 50D

10.1.2010

verze 1.0.beta6. Úprava algoritmu aplikace temných snímků, řešící některé problémy s maskovanými částmi temných snímků z EOS 40D

28.11.2009

verze 1.0.beta5. Doladění algoritmů po předchozích úpravách podle testovacích souborů, zejména detekce hotpixelů v temných snímcích

27.11.2009

verze 1.0.beta4. Úprava algoritmů z důvodu problémů s maskovanými částmi flatfieldů u EOS 40D a EOS 50D. Další úpravy vyvážení barev při různých volbách.

26.11.2009

verze 1.0.beta3. Rozšíření možností vyvážení barev, oprava drobných chyb, další optimalizace algoritmů podle testovacích souborů.

23.11.2009

verze 1.0.beta2. Maximální počet souborů, které je možné načíst současně, byl zvýšen na 512. Další úprava vyvážení barev částečně saturovaných částí obrazu.

22.11.2009

verze 1.0.beta1, podporující nekomprimované NEF soubory ze zrcadlovek Nikon D200 a D300. Dále byla mírně upravena konverze do RGB formátu z hlediska vyvážení barev v okolí saturace senzoru.

20.11.2009

verze 1.0.beta0 s podporou zrcadlovek Nikon ( testovány soubory z D60, D80 a D90 ve formátech NEF i DNG ). Řada algoritmů byla upravena podle zkušeností s testovacími soubory.

17.11.2009

zajištěna kompatibilita výstupních DNG souborů se vstupem programu SubRaw

16.11.2009

verze s plnohodnotným čtením i zápisem DNG souborů

5.11.2009

upravena správa paměti podle návrhu Martina Myslivce, experimentálně doplněno čtení některých DNG souborů

3.11.2009

doplněno čtení CRW souborů z EOS 300D

31.10.2009

opraveno načítání RAW souborů z EOS 40D

29.10.2009

zveřejněna první testovací verze, vyvinutá na souborech z EOS 20D a EOS 50D

Stažení :

K dispozici jsou následující soubory, obsahující aktuální verzi programu :

Vzhledem k odlišným vlastnostem posledních verzí ponechávám možnost stažení předchozích testovacích verzí programu :

Pro případné zájemce mám ještě verzi pro stanice s procesory PA-RISC a operačním systémem HP-UX, nepředpokládám však, že by ji někdo potřeboval.

Použití :

mraw files [-b files] [-d files] [-f files] [volby zpracování] [volby výstupu]

files

jedno nebo více jmen souborů ke zpracování

-b files

jedno nebo více jmen souborů s biasem. Data ze souborů jsou zprůměrována, na vstupní soubory, temné snimky i flatfieldy je aplikován výsledný bias

-d files

jedno nebo více jmen souborů s temnými snímky. Snímky jsou zprůměrovány, na vstupní soubory je aplikován výsledný temný snímek

-f files

jedno nebo více jmen souborů s flatfieldy. Snímky jsou před aplikací zprůměrovány. Při aplikaci flatfieldu je využívána pouze jasová složka, fotografovaná plocha tedy nemusí být bílá. Měla by však mít ve všech místech stejou barvu kvůli nerovnoměrné spektrální citlivosti senzoru.

Volby zpracování :

-c level

Úroveň kontrastu (pro RGB výstup). Standardně program kontrast snímku nemění (hodnota 1).

-e

Extrahování vložených JPEG náhledů do samostatných souborů. V RAW souborech bývají vloženy dva náhledy, jeden ve větší velikosti (u EOS 50D i v plné velikosti), druhý malý "thumbnail".

-g level

Gamma korekce (pro RGB výstup, standardně 2.22), parametr -g bez hodnoty nastavuje korekci 1 (lineární). Funkce pracuje trochu odlišně od běžných editorů a snaží se méně zdůrazňovat šum kolem úrovně černé. Přesto nedoporučuji nastavovat příliš vysoké hodnoty, protože vysoká strmost křivky v nízkých úrovních zesílí nejen šum, ale třeba i zbytky po elektroluminiscenci (darkframe nikdy není dokonalý). Gammu je vhodnější zvyšovat až po základním zpracování obrazu nějakým editorem. Hodnoty zhruba do 4 nebo 5 jsou však poměrně "bezpečné" a aspoň hned vidíme, co jsme vyfotografovali

-h

RGB výstup poloviční velikosti, bez interpolace barev. V podstatě softwarový binning 2x2. Rychlé, bez artefaktů a většinou postačující.

-i

Pouze výpis základních informací o vstupních souborech, bez zpracování

-l type

Způsob práce s úrovní barev pro RGB výstup (0, 1, 2, nebo 3, standardně 1). Parametr -l bez hodnoty nastaví typ 0. Číslo může být dvojmístné, pak první číslice určuje míru oříznutí histogramu shora i zdola. Význam jednotlivých hodnot je následující :

0 - zpracování beze změny úrovní ze souboru. Vzhledem k nerovnoměrné spektrální citlivosti senzoru je výsledný obraz zpravidla do zelena, někdy je však výhodnější doladit barvy dodatečně, protože žádné předem dané "správné" vyvážení u astrofotografií neexistuje
1 - vyvážení bílé podle nastavení fotoaparátu, vhodné pro zpracování běžných denních snímků
2 - vyvážení podle volby automatiky při fotografování (jako by byla zvolena Auto WB, pouze pro CR2 formát, jinak funguje jako -l1)
3 - vyvážení vlastním algoritmem podle úrovní barev, zpravidla žádné "krásné" barvy neposkytne, ale zachová maximum z průběhu signálu v jednotlivých kanálech.

Pokud je použita dvouciferná volba, pak první číslice má následující význam :
0 (nebo jednociferná volba) - optimální rozsah úrovní podle automatiky programu
1 - bez oříznutí rozsahu (zachová barvy i v částečně saturovaných pixelech)
2 - silnější oříznutí rozsahu, vyšší kontrast za cenu ztráty části barevné informace.

-n value

Úroveň šumu, použitá pouze při aplikaci temného snímku (celé číslo, standardně 1). Nejedná se o redukci šumu, ale o relativní stanovení úrovně, jaká se má ignorovat nebo eliminovat při zákmitech do záporných hodnot po odečtení darkframe apod. Pro většinu situací nedoporučuji s touto hodnotou hýbat.

-p value

Maximální počet bitů na pixel v RAW výstupu. Jak je uvedeno výše, CameraRaw odmítá pracovat se snímky s odlišnou bitovou hloubkou, než má převodník příslušného fotoaparátu. Při průměrování třeba dvaceti 12bitových snímků program zapíše výsledek do 16bitového souboru, aby neplýtval přesností. Volbou -p 12 program donutíme k zápisu 12bitového souboru, který je možné zpracovat v CameraRaw. V praxi tato volba není příliš využívána, protože průměrujeme temné snímky a flatfieldy, které pak čteme opět tímto programem a nezpracováváme je v CameraRaw.

-r

Automatická detekce okrajů snímku místo použití souřadnic masky z fotoaparátu (pro RGB výstup). Tímto lze získat několik pixelů obrazu navíc, protože neprůhledná maska senzoru bývá užší, než fotoaparát zapisuje do RAW souboru. Okraje však u tmavých snímků nemusí být detekovány správně, jednotlivé snímky mohou mít různou velikost a mohou vznikat chyby v interpolaci barev na okraji. Při následném skládání snímků se však těch několik pixelů někdy hodí.

-v

Výpisy na terminál, více parametrů -v vyvolá výpis více podrobností, které pravděpodobně nikomu k ničemu nebudou, pokud se nevyzná ve formátech souborů a nechce spolupracovat na ladění a vývoji programu. Bez tohoto parametru program nepíše nic.

Volby výstupu :

-j[c] [name]

Výstup ve formátu JPEG. "c" je úroveň komprese od 1 do 5 (standardně 2). Úroveň 1 je skoro zbytečná, protože se snaží zachovat více barevné informace, než je v samotném RAW souboru. Při úrovni 2 program používá podobnou kompresi, jako fotoaparáty Canon při nastavené nejvyšší kvalitě JPEGu.

-m [name]

Monochromatický výstup TIFF. Jde vlastně o kopii RAW souboru bez interpolace i s maskovanými okraji apod. Zachovává i původní bitovou hloubku, přestože formát TIFFu je 16bitový. Obraz je tedy dost tmavý, využívá jen malou část rozsahu. Těžko se hodí k něčemu jinému, než studiu toho, co různé fotoaparáty do RAWu zaznamenávají.

-o[t] [name]

Výstup v RAW formátu (standardní). Slouží k zadání jména výstupního souboru, RAW výstup program provede i tehdy, když žádné výstupní parametry nejsou zvoleny. Standardně program zapisuje RAW ve formátu CR2, pokud původní soubor byl v tomto formátu. V ostatních případech je výstup ve formátu DNG. Tuto automatickou volbu je možné změnit číslem "t" za volbou -o : -o1 je výstup ve formátu DNG, -o2 ve formátu CR2.

-t [name]

Výstup v 16bitovém RGB formátu TIFF bez komprese, kompatibilním se všemi prohlížeči a editory, které jsem zkoušel.

Parametry v příkazovém řádku mohou být sdružovány za jedním znakem "-". Příkaz  mraw test.CR2 -v -v -b -t test.tif  je tedy ekvivalentní příkazu  mraw test.CR2 -vvbt test.tif. Číselné parametry mohou být psány bez mezery jako součást volby nebo za mezerou. Příkaz k převodu do RGB formátu s kontrastem zvýšeným na úroveň 1.5 a hodnotou gamma 3.0 lze tedy napsat ve formě  mraw test.CR2 -c 1.5 -g 3 -t test.tif  nebo  mraw test.CR2 -c1.5g3t test.tif . Textové parametry ( jména souborů ) musí být uvedeny samostatně a odděleny mezerou.

Jména výstupních souborů mohou být uvedena v příkazovém řádku nebo generována automaticky. Program použije jméno příslušného vstupního souboru ( při průměrování více souborů jméno prvního ) a případně mu změní příponu podle typu výstupu ( .CR2, .dng, .tif, .jpg ). Pokud soubor s daným jménem existuje, program připojí ke jménu pořadové číslo  _001,  _002 atd.

Pokud je v příkazovém řádku zadáno celé jméno výstupního souboru včetně přípony, program jej použije i v případě, že je starší soubor stejného jména přepsán. To lze využít k rychlému vyzkoušení několika variant bez zbytečného zaplnění disku. Pokud není jméno úplné ( bez přípony ), program starší soubory nepřepisuje, přidává k názvu souboru pořadové číslo a příslušnou příponu.

Například příkaz  mraw test.CR2 -t abc  vytvoří výstupní soubor  abc.tif. Stejný příkaz, zadaný podruhé vytvoří soubor  abc_001.tif. Ovšem příkaz  mraw test.CR2 -t abc.tif  původní soubor  abc.tif  bez varování přepíše.

Popisovaná syntaxe příkazů možná na první pohled vypadá komplikovaně, umožňuje však rychle volit nejrůznější možnosti. Obecně mé programy fungují trochu jako pistole bez pojistky. S jejich pomocí se dá dosáhnout výsledku bez zbytečného zdržování, ale manipulace s nimi vyžaduje trochu cviku a opatrnosti, abychom se nestřelili do nohy.

Několik mrawoučných příkladů

Příkaz

mraw test.CR2 -t

převede soubor  test.CR2  na RGB nekomprimovaný soubor  test.tif  se 48 bity na pixel a s korekcí gamma 2.22.

Máme-li 10 souborů s názvy  test01.CR2  ..  test10.CR2 , pak příkaz

mraw test*.CR2 -t

převede všechny tyto soubory na RGB soubory  test01.tif  ..  test10.tif.

Pokud nezadáme žádnou operaci se soubory ( v předchozím příkladu převod do RGB ), pak příkaz

mraw test*.CR2 -o test

data ze souborů  test01.CR2  ..  test10.CR2  zprůměruje a uloží do souboru  test.CR2.

Chceme-li výstup převést do formátu DNG, pak příkaz

mraw test*.CR2 -o1 test

provede stejnou operaci a výsledek uloží do souboru  test.dng.

Máme-li k výše uvedeným souborům ještě temné snimky v souborech  dark01.CR2  ..  dark10.CR2  a flatfieldy v souborech  flat01.CR2  ..  flat10.CR2, pak příkaz

mraw test*.CR2 -d dark*.CR2 -f flat*.CR2

zprůměruje temné snímky i flatfieldy, postupně je aplikuje na všechny soubory  test01.CR2  ..  test10.CR2  a výsledky uloží ve formátu CR2 do souborů  test01_001.CR2  ..  test10_001.CR2. Chceme-li pro zpracování použít bias, jehož vzorky máme v souborech  bias01.CR2  ..  bias10.CR2 , použijeme příkaz

mraw test*.CR2 -b bias*.CR2 -d dark*.CR2 -f flat*.CR2

Bias je pak aplikován na vstupní soubory, temné snímky i flatfieldy před jejich aplikací. Příkaz

mraw test*.CR2 -b bias*.CR2 -d dark*.CR2 -f flat*.CR2 -g4.5t

provede stejné operace, ovšem výsledky převede do RGB formátu s korekcí gamma = 4.5 a uloží v souborech  test01.tif  ..  test10.tif. Udělá tedy vše, co by se se soubory v RAW formátu udělat mělo a připraví TIFF soubory pro skládání expozic a další úpravy.



AFE Zpět na hlavní stránku fotografických experimentů


M.P. 2009 - 2010