2012-01-10

Syväterävyyden lisääminen kuvia pinoamalla

Makrokuvaamisessahan suurimpia ongelmia on se että syväterävyys ei tahdo riittää vaikka kuinka himmentäisi objektiiviaan. Lisäksi liikaa himmentäessä (f11 tienoilla, pikselin koosta riippuen) alkaa diffraktio syömään kuvan terävyyttä. Asianlaitaa voi parantaa pinoamalla kuvia ja valitsemalla kustakin valotuksesta vain terävät osat valmiiseen kuvaan.

Vasen: lens breathing, oikealla Huginin avulla kohdistettu kuvapino ilman kyseistä efektiä.

Kuvausjärjestelyt olivat seuraavanlaiset: D200 nokallaan 50mm f1.8D Nikkori, objektiivin aukko oli f8 ja tarkennusta liikutettiin käsin kahdesta jalasta neljään jalkaan asti (n. 60cm -> 120cm). Kuvia otettiin 15kpl ja ne kohdistettiin Huginilla. Kohdistusmetodi oli sama kuin tähtitaivaskuvienkin tapauksessa. Tarkennuksen muuttuessa muuttuu objektiivin tehollinen polttovälikin, joten kuvien sijainnin (ypr) lisäksi optimoitiin myös kuvakentän koko (v). Muutaman käsin asetetun kohdistuspisteen jälkeen kuvat kohdistuivatkin hyvin (maksimivirhe oli noin kaksi pikseliä).

Enfuse

Enfuse voi tehdä kuvien sekoitusmaskin paitsi kuvan valotuksen ja värikylläisyyden perusteella, myös kuvan paikalliskontrastin perusteella. Sitä varten Enfusessa on komentorivioptiot --Contrast-weight ja --Entropy-weight. Nämä yhdessä --Hard-mask -parametrin kanssa mahdollistavat syväterävyyspinoamisen.

Ilman --hard-mask -komentoa kuviin jää pehmeä 'loiste' kun epäterävät pikselit pääsevät vaikuttamaan pinoon (koko kuva vasemmalla, 100% croppi oikealla):
enfuse_contrast_sans_hardmask enfuse_contrast_sans_hardmask__crop

Ja entropian mukaan pinotut kuvat tuottivat melkolailla samanlaisen tuloksen, kontrastin ollessa vielä vähäisempi:
enfuse_entropy_sans_hardmask enfuse_entropy_sans_hardmask__crop

Otettaessa --hard-mask mukaan tilanne kuitenkin paranee:
enfuse_contrast_with_hardmask_contrast_window_default enfuse_contrast_with_hardmask_contrast_window_default__crop

..ja vielä entropian mukaan pinotut kuvat --hard-maskin kanssa, tosin terävyys jää melko vähäiseksi:
enfuse_entropy_with_hardmask enfuse_entropy_with_hardmask__crop

Entropiapainotukselle on on vielä monia asetuksia joita en kokeillut, niistä lisää Enfusen käyttöohjeessa.

Käyttämällä kontrastipainotusta, terävää pikselimaskia (--hard-mask siis) ja suurentamalla --contrast-window-size -parametrin arvoa nuo kohteita ympäröivät halot vähenivät vielä, mutteivat kadonneet kokonaan. Allaolevassa kuvassa --contrast-window -size sai arvon 25:
enfuse_contrast_with_hardmask_contrast_window_25px enfuse_contrast_with_hardmask_contrast_window_25px__crop

Tällä kuvapinolla parhaan tuloksen Enfusella sai siis komentorivillä --Weight-contrast=1 --Weight-Exposure=0 --Weight-saturation=0 --Hard-mask --Contrast-window-size=25. Valotuksen haarukoinnin jos haluaa yhdistää syväterävyyspinoamiseen niin kuvat joutuu kahdesti ajamaan Enfusen läpi: paikalliskontrastille ja valotukselle erikseen. Tufuse osaa tehdä molemmat pinoamiset yhdellä kertaa.

ImageJ

ImageJ:hen on olemassa kaksikin pluginia syväterävyyden kasvattamiseen: Extended Depth of Field ja Stack Focuser. Koitin molempia, tulokset olivat molemmilla plugineilla melkolailla samat.

Extended Depth of Field itse asiassa tarjoaa kaksi käyttöliittymää: helpon ja ekspertti-moodin. Käytin helpommpaa vaihtoehtoa missä on säädettävänä vain yksi liukusäädin joka parantaa tulosta ja samalla hidastaen pinoamisprosessia. En täysikokoisilla kuvilla pystynyt käyttämään hitaimpia asetuksia muistin vähyyden vuoksi. Alla siis tulos keskiasetuksilla, jotka nekin rouskuttivat kuvia noin viiden minuutin ajan, yhtä hidas oli myös Stack Focuser.

imagej_extended_depth_of_field_middle_settings imagej_extended_depth_of_field_middle_settings__crop

Kuvien kontrasti on oikein hyvä - haloilua on jonkin verran, mutta tasaisilla pinnoilla näkyy jotain rakennetta jota ei alkuperäisissa kuvissa ollut olemassakaan. Ei hyvä.

CombineZP

CombineZP on nimenomaan tähän tarkoitukseen tehty softa joten odotin sen jäljen olevan paljon parempaa mitä muiden. Odotin oikein.

Ensin pelkkä stack:
combinezp_stack combinezp_stack__crop

Kontrasti on hyvä, jotain röpelöä näkyy esimerkiksi karttapallon reunassa. Sitten testiin soft stack:
combinezp_soft_stack combinezp_soft_stack__crop

Kontrasti edelleen erittäin hyvä, tosin joitain tummia haloja näkyy kohteiden reunojen ympärillä. Sitten testattiin pyramoid max contrast:
combinezp_pyramoid_max_contrast combinezp__pyramoid_max_contrast__crop

Kuvan kokonaiskontrasti on lisääntynyt, minkä huomaa tukkoon menneissä varjoissa. Mustat halot ovat muuttuneet röpelöisiksi, kontrasti on edelleen erittäin hyvä. Kirkkaiden kohteiden ympärille jäi tumma halo kun kyseinen halo Enfusella on vaalea (ks. karttapallon ympärys kokokuvista).

Yhteenveto

Osavalotusten tarkka kohdistaminen on tärkeää, koska kuvan terävimmät kohdat vaikuttavat eniten valmiseen kuvaan ja jos ne eivät ole kohdikkain niin se kyllä näkyy. Enfuse tuotti yllättävän hyvän tuloksen kun perehtyi vähän manuaaliin, ehkä tuota saisi vielä vähän parannettua, iso plussa siitä että Enfuse integroituu hyvin Huginiin - kuvat voi kohdistaa ja pinota samalla kertaa. CombineZP tuotti myös hyvän tuloksen, ohjelman käyttöliittymä sen sijaan on vähintäänkin omaperäinen, ja jostain syystä osa valmiista kuvasta oli peilautuneena kuvan alaosassa eli piti rajata kuva uudelleen. ImageJ-pluginin suurin haittapuoli oli hitaus ja muistinkulutus, pinoamisessa oli lisäksi huomattavia artifakteja.

Linkkejä

* Enfuse, Enfusen käyttöohje, kuvien kohdistaminen Huginilla
* ImageJ, Extended Depth of Field ja Stack Focuser
* CombineZP