2012-02-17

Objektiivien Lensfun-kalibrointi

Lensfun on pieni kirjasto ja siihen liittyvä tietokanta, joka poistaa valokuvista objektiivin geometriset vääristymät (esim. tynnyrivääristymän), vinjetoinnin ja poikittaisen värivirheen. Gimpille on saatavana Lensfun-liitännäinen nimeltään GimpLensFun, joka toiminnallisuudeltaan on hyvinkin riisuttu, se tarjoaa vain haun objektiivitietokannasta ja virheiden korjauksen, ei muuta. Muita vaihtoehtoja Lensfunin käyttöön ovat Ufraw, Rawstudio, Darktable. Ufraw on ainoa noista joka on tarjolla Windowsille, loput ovat Linux-softaa.

Alla esimerkkikuvapari korjaamattomasta ja korjatusta tynnyrivääristymästä, vie osoitin kuvan päälle vaihtaaksesi kuvien välillä:


(Tokina 11-16mm f2.8 @ 11mm, kuva otettu maaliskuussa 2011 Rissalan lentokentällä.)

Vaikkei kyseinen objektiivi kovin paljoa kuvaa vääristäkään, niin korjattu näyttää kuitenkin paremmalta jo pelkästään sen takia että kuvan reunojen läheiset linjat ovat nyt suoria. Laajakulmaobjektiivien tynnyrivääristymähän näkyy parhaiten kuvien reunojen läheisissä suorissa linjoissa, ne kun kaartuvat eniten. Tietenkään vääristymät eivät rajoitu laajakulmaobjektiiveihin vaan esimerkiksi telezoomit kärsivät laajassa päässä lievästä tynnyrivirheestä ja telepäässä yleensä lievästä tyynyvääristymästä (tyynyvääristymä on tynnyrivääristymän vastakohta, kuvan reunojen lähellä olevat suorat kohteet näyttävät kaartuvan ulospäin eivätkä sisäänpäin). Tietysti on monimutkaisempiakin geometriavirheitä, esimerkiksi Samyangin 14-millisen tuotantoversiossa on ns. viiksimallin vääristymää: kuvan ulommaisissa reunoissa on tyynyvääristymää ja keskellä vastaavasti tynnyrivääristymää. Lensfunin käyttämällä vääristymämallilla voi korjata minkä tahansa geometriavirheen joka vain on säteittäistä luonnoltaan ts. leviää kuvan keskeltä.

Halutessaan soppaan voi sotkea mukaan myös kuvan projektion, esimerkiksi kalansilmäobjektiivin projektio on erilainen verrattuna rektilineaarisen objektiivin (esimerkki kuvassa yllä) projektioon. Käytännössä tämä tarkoittaa sitä että Lensfunilla voi halutessaan suoristaa kalansilmäobjektiivin kuvan täysin rektilineaariseksi. Lensfun tukee kaikkia projektioita joita Panorama Toolskin tukee.

Kuten aikaisemmin mainitsin niin Lensfun osaa myös korjata vinjetoinnin käyttäen samaa mallia kuin Hugin sekä poikittaisen värivirheen. Vinjetoinnin korjauksen olen kuitenkin jättänyt Raw Therapeen ja flättien huoleksi, poikittaisen värivirheen samoin.

Objektiivin Lensfun-kalibrointi Huginilla

Kaikessa lyhykäisyydessään Lensfun-kalibrointiparametrit Huginilla selvittämiseen tarvitaan yksi panoraama per polttoväli per aukko mikäli vinjetoinninkin aikoo Lensfunilla korjata. Muutama seikka täytyy ottaa kuitenkin huomioon: polttoväli, tarkennusetäisyys, aukko, kontrasti, valkotasapaino ja valotus pitäisi kuvissa olla vakioitu, samaten tulisi eliminoida parallaksivirheet eli objektiivia pitäisi pyörittää sisääntulopupillin ympäri. Toinen tapa päästä eroon parallaksista on kuvata kaukana olevia kohteita, esimerkiksi tähtitaivas on geometriaan hyvä kalibrointikohde.

Kolme kuvaa riittää yhteen kalibrointipanoraamaan, kunhan kuvat limittyvät noin puolen kuvan verran toistensa päälle. Jahka kuvat on Huginiin ladattu niin ei anneta automatiikan tehdä hommiaan vaan siirrytään Images-välilehdelle jossa käskytetään Cpfindiä etsimään kohdistuspisteet kuvien välillä. Kohdistuspisteet ovat tarkempia jos käytetään etsinnässä täysikokoisia kuvia, Huginin asetuksista pistetään siis --fullscale -komentorivivalinta Cpfindin asetuksiin. Alla esimerkki yhdestä kuvaparista Sigman 100-300mm f4- objektiivin kalibroinnista, kohdistuspisteitä on tasaisen laajasti eri puolilla kuvaa.

Huginin kohdistuspisteet
Kohdistuspistepareja oli tässä tapauksessa 50 kappaletta per kuvapari, vähempikin olisi riittänyt.

Jahka Cpfind on työnsä tehnyt, siirrytään Optimizer-välilehdelle. Parametrien optimointi kannattaa aloittaa kuvien keskinäisestä sijainnista (positions, ypr), josta siirrytään vaiheittain vääristymiin (ypr, a, b ja c). A, b ja c ovat Pano Toolsin vääristymämallin kolme keskeisintä osaa, muista ei tarvitse nyt välittää. Geometriaosio oli siinä, a, b ja c -parametrit voi ottaa talteen jatkoa varten. Geometriaosio kalibroinnista suoritetaan zoomien tapauksessa mielellään mahdollisimman monelle polttovälille, tosin Lensfun osaa interpoloida korjausparametrit jos korjattavan kuvan polttoväli ei satukaan täysin valmiiksioptimoidulle polttovälille.

Vinjetoinninkorjaukseen tarvittavat parametrit saa Exposure-välilehdeltä, sieltä optimoidaan vain vinjetointiin liittyvät muuttujat Vb, Vc ja Vd. Kannattaa tarkistaa Huginin esikatselu, näyttävätkö kuvat suurinpiirtein siltä miltä niiden kuuluisikin. Vinjetointi optimoidaan jokaiselle polttovälille erikseen, samaten useimille aukkoarvoille jokaisella polttovälillä, esim. 17-35 mm:n f2.8-valovoimaisesta zoomobjektiivista polttovälit 17mm, 25mm, 30mm ja 35mm sekä aukot f2,8; f4, f5,6 ja f8. Kalibrointikertoja tulee tällöin yhteensä 4×4 eli 16 kappaletta ja kalibrointikuvia ainakin kolme kertaa tuo määrä.

Lensfun-kalibrointi calibrate_lens_gui -ohjelmalla

Jos ei syystä tai toisesta tee vinjetointikorjauksella mitään, voi kalibroinnin suorittaa Huginin mukana tulevalla apuohjelmalla nimeltään calibrate_lens_gui. Kyseisen pikkuohjelman käyttö on kovin yksinkertaista: ohjelmassa avataan useampia samalla objektiivilla ja polttovälillä otettuja kuvia ja calibrate_lens_gui etsii kuvista suoria viivoja ja yrittää sovittaa objektiivin geometriavirheet Pano Tools -malliin minimoiden eron ideaaliprojektion ja otetun kuvan välillä. Korjausparametrit tulostetaan ohjelman alareunassa näkyviin tekstikenttiin, mistä ne voi kopioida talteen tai tallentaa .ini-tiedostoon Huginin käytettäväksi.

Calibrate_lens_gui toimii parhaiten jos kuvissa on näkyvissä pitkiä, katkeamattomia suoria viivoja; kylpyhuoneen seinän laatoituksen muodostama ristikko ei esimerkiksi oikein sovellu kalibrointiin. Jos on useampia kuvia käytettävissä, kaikkien kuvien viivat yhdistetään yhdeksi, siksi ohjelma hyväksyy vain samankokoiset kuvat. Esikatseluikkunasta voi käydä vilkaisemassa miltä kuva korjattuna ja korjaamattomana näyttää, samaten halutessa näytetään löydetyt ja kalibroinnissa käytetyt suorat viivat.

Kalibrointitedostojen päivitys

Alla malline Lensfunin käyttämästä XML-tiedostosta, koska kyseessä on Sigman valmistama järjestelmäkameran objektiivi, menee se sigma-slr.xml -tiedostoon.
<lens>
        <maker>Sigma</maker>
        <model>Sigma APO 50-150mm f/2.8 EX DC HSM II</model>
        <mount>Nikon F AF</mount>
        <cropfactor>1.5</cropfactor>
        <calibration>
            <distortion model="ptlens" focal="50" a="0.00143" b="-0.0113" c="0.00788" />
            <distortion model="ptlens" focal="75" a="0.00207" b="-0.00519" c="0.0052" />
            <distortion model="ptlens" focal="105" a="0.00115" b="0.00265" c="0.00031" />
            <distortion model="ptlens" focal="150" a="0.00072" b="0.00631" c="-0.00073" />
            <vignetting model="pa" focal="50" aperture="2.8" distance="100" k1="-0.3469" k2="0.34748" k3="-0.2902" />
        <vignetting model="pa" focal="50" aperture="4.0" distance="100" k1="-0.0702" k2="0.38516" k3="-0.44561" />
        <vignetting model="pa" focal="50" aperture="5.6" distance="100" k1="-0.07583" k2="0.32289" k3="-0.27317" />
        <vignetting model="pa" focal="75" aperture="2.8" distance="100" k1="-0.2858" k2="0.29719" k3="-0.25336" />
        <vignetting model="pa" focal="75" aperture="4.0" distance="100" k1="-0.01767" k2="0.21834" k3="-0.25478" />
        <vignetting model="pa" focal="75" aperture="5.6" distance="100" k1="0.02044" k2="-0.01582" k3="0.00834" />
        <vignetting model="pa" focal="105" aperture="2.8" distance="100" k1="-0.10172" k2="-0.3325" k3="0.10147" />
        <vignetting model="pa" focal="105" aperture="4.0" distance="100" k1="0.06624" k2="-0.05579" k3="-0.20602" />
        <vignetting model="pa" focal="105" aperture="5.6" distance="100" k1="-0.0853" k2="0.40954" k3="-0.44304" />
        <vignetting model="pa" focal="150" aperture="2.8" distance="100" k1="-0.65999" k2="0.58565" k3="-0.31284" />
        <vignetting model="pa" focal="150" aperture="4.0" distance="100" k1="0.10953" k2="-0.77165" k3="0.45448" />
        <vignetting model="pa" focal="150" aperture="5.6" distance="100" k1="-0.0087" k2="0.12197" k3="-0.29994" />
        <vignetting model="pa" focal="150" aperture="8.0" distance="100" k1="-0.0864" k2="0.39283" k3="-0.41541" />
        </calibration>
</lens>
Objektiivin tiedot tulevat siis maker ja model -tagien sisään, mallinimenä tulisi käyttää objektiivin virallista nimeä kuten esimerkiksi Raw Therapee ilmoittaa sen kuvan tiedoissa, esimerkkinä vaikkapa Sigman APO 100-300mm f4 EX IF HSM -objektiivilla otettu kuva oikealla. Lensfun osaa kyllä etsiä objektiivin tietokannastaan vaikka sen ilmoitettu nimi eroaisikin ns. virallisesta nimestä.

Distortion-tagin sisällä ptlens yksilöi käytetyn korjausmallin, focal on tietenkin polttoväli millimetreissä; ja a, b ja c ovat korjausparametrit jotka voi kopioida Huginista tai calibrate_lens_guista sellaisenaan, termistö on nimittäin sama kaikissa kolmessa ohjelmassa.

Vignetting-tagin sisällä tulee lisäksi käytetty aukko ja tarkennusetäisyys metreinä. Useimpien objektiivien vinjetointi pahenee lähelle tarkentaessa jota varten tuo distance-kohta tuolla onkin. K1, k2 ja k3 vastaavat Huginin Vb, Vc ja Vd -muuttujia, tässä järjestyksessä.

2 kommenttia:

  1. PTLens on muuten myös hyvä geometriakorjaus ohjelma.

    VastaaPoista
  2. Ja unohtuikin mainita eli Ptlensin vääristymämallin parametrit ovat yhteensopivat Lensfunin kanssa. Ja kalibroinnin voi tehdä myös Ptguilla, sama matemaattinen mallinnus Huginissa ja Ptguissa pohjalla.

    VastaaPoista