にほんブログ村 写真ブログ デジタル写真へ
にほんブログ村のランキングに参加中です

RawTherapee Ver5.2.xx、開発中バージョンを試す - Huginでレンズ補正データを作る

2017年10月19日 00:00

下町ハイパー

下町ハイパー


Sony α6000, smc PENTAX 24mmF2.8


RawTherapeeはVer4.xから5.0にメジャーバージョンアップした際、何が変わったか良く判らなかったが、5.1、5.2からいきなり有用な機能が増えた。しかし幾つか日本語環境の問題(ロケール)で実質5.1からのバージョンは9月初めまで使えない状態が続いた。

今回はその日本語環境問題が修正された5.2の開発中バージョンを用い、5.1から追加された機能を試したい。今日現在、正式にVer5.3がリリースされているが、LocalLab(Lightroomの円形フィルターのような機能で部分的に様々な作業が可能になる)を利用したいので「ほぼ5.3の機能を持った」5.2の開発中バージョン(RawTherapee_newlocallab_5.2-332 Win64)を使っている。

追記

この記事は10月初めに予約投稿で放り込んだもので、現時点では5.3をベースにした5.3.166と言うLocalLabが使える開発中バージョンが存在している。

またLocalLabに関しては別途、11月初旬くらいにネタにするつもりだ。
RawTherapeeはLightroom用に作られたレンズ補正プロファイル(lcpファイル)を適用出来る。ところが5.0までは一部のレンズで過剰に補正してしまう大きなバグがあった。うちでは5年に渡り活躍してくれたSigma 17-70mmF2.8-4(旧型)がこれに該当し、樽型に歪んだ写真を補正すると今度は糸巻き型になってしまい、lcpファイルを使えず、1枚1枚手動で歪曲を補正していた。

これが5.1から正しく補正してくれるようになった。本来5.0とメジャーバージョンアップした時点で修正される代物だったろうが、上手くバグを取り除けなかったのかな?。

Lightroom用のカメラプロファイル(dcpファイル)を適用出来る機能は以前から存在しており、レンプ補正プロファイルも使えるようになったのだからLightroomとほぼ同一の写真を5.1からRawTherapeeだけで作り出せるようになったと言う寸法。

最近はRawTherapeeでわざわざLightorom用のカメラプロファイルを使わない。それを使うのなら素直にLightroomを使った方が便利なのと、RawTherapeeで現像する際はHaldCLUTのフィルムシミュレーションを利用したいからで、これを使う際にはLightroom用のカメラプロファイルは不要となる。

勿論、Lightroom用のカメラプロファイルを当てて、かつHaldCLUTのフィルムシミュレーションを機能させても良いのだが、好みの発色には程遠い・・・。
そしてLightroomなんて使わん!、特にUNIX系のOSを利用しているユーザーは世界標準であるLightroomを使っていない人も多いと聞く。その彼らの為に生まれたのが(詳しい経緯は知らないが)Lensfunと言うフリーのレンズ補正プロファイルならしい。

レンズ補正プロファイルは一般に歪曲収差、色収差、そして周辺光量の調整を行う数値が格納されていて、色収差と周辺光量を自らが作り上げるのはかなり厄介な作業が待ち受けているようだが(私にも未知の世界)、歪曲収差の補正に限っては誰もが比較的簡単に作れてしまう。

利用するのはLensfunと言うフリーのレンズ補正データベースとHuginと言うフリーのパノラマ合成ツール。

Lnesfun

Ver5.2の開発中バージョンからLensfunのデータはRawTherapeeに含まれているので、わざわざ上のサイトからダウンロードする必要はないが、レンズ補正データそのものは日々更新されているようで、最新の補正データが欲しい場合はLensfunに直接見に行った方が良いような気がする。

Lensfun coverage

但し、Lensfunのダウンロードページを見る限り、本当に更新されているのか?、と疑問に思う面もあり、RawTherapeeお使いの方は先ずはVer5.3の中に入っているLensfunのxmlデータを利用するのが良いのかもしれない。
Huginは次のサイトとなる。

Hugin - Panorama photo stitcher

ところでこれは何て読むのだろう?。ネットでも微妙、フギンとかフジンとか・・・。

このHuginにレンズ補正ツールのcalibrate_lens_gui.exeが含まれている。

まずは直線が多く交差し、かつ水平がしっかりと保たれている写真を用意する。エッジがしっかりとしていれば自宅の障子や窓、襖の写真でも可能だが、calibrate_lens_gui.exeのエッジ検出機能に掛かっているので、様々な直線で構成された写真を用意しよう。

Creating lens distorsion models with Hugin’s lens calibrator

上のページを参考に作業を進めていくのだが、こっちは「これだけ直線が一杯ある写真だから・・・」と思っても何故か補正の基礎となる線を見つけてくれない写真があったり、全く見当違いの部分を垂線と認識し、結果、誤った補正データを作ってしまったりする。

私は自宅の窓を撮影した写真と、東京は銀座のデパートのショーウィンドウを真正面から写した写真など複数使用して補正用数値を導き出したが、とにかくその手の写真を幾つか用意し、線を検出してくれる使える写真を見つけるのが一番大変な作業。

今ふと思ったが、A3くらいの用紙に格子状に直線を描いてそれを撮影すれば良いのか?。またパソコンのペイントツールでモニター一杯に格子状の直線を描くだけでも良かったかもしれない。とにかく長い直線同士が直角に多く交差する写真を数枚用意すればおおよそ問題ない補正用数値が出てくるようだ。

歪曲補正で使用する数値は歪み(a)、たる形歪み(b)、歪み(c)の3つ。この値をLensfunのxmlファイルに追加してやるだけで良い。

Lnesfunを解凍すると現段階で「Lensfun-0.3.2」と言うフォルダが作られる。その中の「data」「db」と掘り下げると複数のxmlファイルを見つけられる。

自分で追加するデータは既存のxmlファイルに保存しない方が良い。と言うのも補正数値が格納されているxmlファイルは日々更新されるからだ。だから自分専用のユニークな名前のxmlファイルを1つ新たに作る。私は単純にMylens.xmlとした。

まずは雛形・・・。

<!DOCTYPE lensdatabase SYSTEM "lensfun-database.dtd">
<lensdatabase version="2">
    <lens>
        <maker>Pentax</maker>
        <model>smc Pentax-M 28mm F2.8</model>
        <mount>Pentax K</mount>
        <cropfactor>1.538</cropfactor>
        <calibration>
            <distortion model="ptlens" focal="28" a="-0.03232" b="-0.00787" c="0.89983"/>
        </calibration>
    </lens>
</lensdatabase>


これをMylens.xmlとして保存する。

"<lens>"と"</lens>"の間にレンズ名や補正数値を入れていく訳だ。登録するレンズが複数なら"<lens>"と"</lens>"が複数になるだけ。

上の例は、、、

"maker"が"Pentax"
"model"がsmc PENTAX-M 28mm F2.8
"mount"が"Pentax K"
"cropfactor"が"1.538"
"calibration"の"distorsion"のmodel"が"ptlens"
"focal"が"28"

そして"a"、"b"、"c"の数値がそれぞれcalibrate_lens_gui.exeの焦点距離、歪み(a)、たる形歪み(b)、歪み(c)となる。

RawTherapeeの動作としてはEXIF内のレンズ名称を読み取って、それがLensfunのデータベース内に存在したら自動でそれを適用するようになっている。

だからmodelにはEXIF内のレンズ名をそのまま記載する必要があるが、通常、オールドレンズを使っている場合はRAWファイルのEXIFにはレンズ名が存在しないので、exiftoolでセットするか、しないのであれば「自分に判り易い名称」で構わない。RawTherapeeで手動でセットすれば良いだけだ。

maker、mount、cropfacotorに何をセットするか不明な場合は、Lenfsun既存のxmlファイルを参照すれば判る。Nikonの一眼レフ用のオールドレンズを追加したかったら"slr-nikon.xml"を参照し、値をまんまコピーすれば良いだけだ。

次に新たに作成した"Mylens.xml"はRawTherapeeがインストールされているフォルダのshare/lensfunに保存すれば次回起動から上の例ならsmc PENTAX-M 28mm F2.8の補正データがちゃんと使えるようになる。

但し、私は常に最新のLensfunデータを使いたいので、、、

c:/Users/username/AppData/Local

この中に「Lensfun」と言うフォルダを新規で作り、そのフォルダの中にxmlファイルの全てを放り込んでいる(結果的にRawTehrapeeフォルダ内のLensfunデータは使っていない)。usernameはWindowsのログインネームだ。

次にRawTherapeeのoptionsファイルを修正する。通常このファイルは、、、

c:/Users/username/AppData/Local/RawTherapee

の中にある。私は開発途中のバージョンを使っているので最後が「RawTherapee5-dev」となっている。

optionsをテキストエディターで開き、一番最後の行に、、、

[Lensfun]
DBDirectory=C:\\Users\\username\\AppData\\Local\\lensfun
を追加して保存。usernameはWindowsのログインネーム、それとフォルダの区切りは'\'ではなく'\\'、これを間違えないように!。

恐らくここに記述するフォルダは何でも良いんだろう。私はWindowsのお作法に従って上記フォルダを作ったが、"c:/lenfun"にxmlデータを保存していれば、"c:\\lenfun"となるだけと思う。

これでRawTherpeeの変形タブ内、レンズ補正プロファイルにてManual correction parametersにチェックをしてレンズ名のsmc PENTAX-M 28mmF2.8を選べばそれが適用される。

もし補正がおかしかったらcalibrate_lens_gui.exeで補正用に使用した写真が不適当だったと判断し、改めて異なる写真で試そう。と言うよりも補正用の写真がおかしかったらcalibrate_lens_gui.exeを動かしている時点で誤った補正表示をするのですぐに判る。

またLensfunのデータが見つからない、使えない場合は、使われているRawTherapeeのバージョンが異なる可能性が高い。今回のネタは開発途中のRawThepraeeを使っており、開発途中のものは日々仕様が変化するんだ。今私が使っている3つくらい前のバージョンはLensfunのフォルダが"./share/Lensfun"に固定されていたようで、これはプログラムが起動された作業フォルだ内のshare/Lensfunにあるデータしか見に行かない。

困るのがRawTherapeeをLighroomやFaststone Image Viewerから起動した時だ。それぞれLightroomのフォルダ、FaststoneのフォルダからRawTheprapeeが起動されるので、LightroomやFaststone Image Viewerの実行ファイルのあるフォルダの中の"share/Lensfun"を見に行こうとするのでデーターベースが存在しない事になってしまう。

そこで次のバージョンからoptionファイルにlensfunのxmlファイルが存在するフォルダを明示する事で解消したようだ。

さて・・・。

単焦点レンズの歪曲補正だけするのなら、Lightroomに存在しないレンズでも上の方法で簡単に補正が可能になる。ところがズームレンズとなるとエライコッチャだ。

おおよそのレンズは広角側で樽型に歪み、中間の焦点距離でほぼ歪みがなくなり、望遠では糸巻き型に歪んで行くので1つのデータだけでは誤った補正をしてしまう。

オリジナルのLensfunデータにsmc PENTAX-DA17-70mmF4ALがあり、そこには17、19、23、28、33、39、48、58、70mmと9つのデータを持っている。細かく焦点距離を切り分け、このレンズでは9つの焦点距離で歪曲補正用の写真撮影をしなくちゃならないのを意味している。

レンズによっては17mmと18mmでも歪曲の度合いが違っているかもしれず、20くらいの焦点距離で補正データを作らなければならないかもしれない。

常に1本のズームレンズ、しかもそれがオールドレンズでLightroomにもLenfunにもデータがない、そんな場合を除けば、わざわざ歪曲補正データを作るよりも、写真毎に手動で歪曲を補正した方が効率が良いと思う。

所持しているオールドズームレンズはAPS-C、m4/3で利用している事もあろうが、運良く大きく歪むタイプはないので、現像の度、1枚1枚手動で歪曲補正をしている。

仮に作業をいとわずにズームレンズ用の補正データを作ったとしてもRAWファイルのEXIFに焦点距離が記録されてなければ全く意味をなさない(EXIFに焦点距離情報がないと最後のデータ、常に最望遠側が採用されるのかな?)。撮影中に自分がどの焦点距離で撮影したかをメモし、それをEXIFにデータとして追加しない限り、そのデータは活きない。

EXIFに焦点距離情報がなくてもズームレンズの主要焦点距離の補正データを当てはめられる。

xmlにレンズデータを追加する際にmodel名は任意の文字列を記入出来るので例えば(レンズ名、補正数値はデタラメ)、、、

    <lens>
        <maker>Pentax</maker>
        <model>smc PENTAX-M 40-80mmF2.8-4 40mm</model>
        <mount>Pentax K</mount>
        <cropfactor>1.538</cropfactor>
        <calibration>
            <distortion model="ptlens" focal="40" a="-0.03232" b="-0.00787" c="0.89983"/>
        </calibration>
    </lens>

    <lens>
        <maker>Pentax</maker>
        <model>smc PENTAX-M 40-80mmF2.8-4 60mm</model>
        <mount>Pentax K</mount>
        <cropfactor>1.538</cropfactor>
        <calibration>
            <distortion model="ptlens" focal="60" a="-0.03232" b="-0.00787" c="0.89983"/>
        </calibration>
    </lens>

    <lens>
        <maker>Pentax</maker>
        <model>smc PENTAX-M 40-80mmF2.8-4 80mm</model>
        <mount>Pentax K</mount>
        <cropfactor>1.538</cropfactor>
        <calibration>
            <distortion model="ptlens" focal="80" a="-0.03232" b="-0.00787" c="0.89983"/>
        </calibration>
    </lens>



このように焦点距離毎に別個体の単焦点レンズとして扱えば良いのだろう。

しかし、いずれにせよオールドなズームレンズを使う際、電子接点がないので確かな焦点距離は判らない。自分は60mmで撮っているつもりでも実際には70mmになっているかもしれないし、レンズによって60mmと70mmでは歪み具合が大きく異なっている場合もあるだろう。

やはりこの手のズームレンズは1枚1枚歪み具合を見ながら手動で補正するのが最適だ。
とにもかくにもRawTherapeeがLensfunに対応してくれたからオールドレンズの扱いがとっても楽になった。近々手持ちのオールド単焦点レンズの全てをHujinのcalibrate_lens_gui.exeを利用して補正データを作ろうと思っている。

最後に!。

お使いのレンズでLightroom用のlcpファイルがあればわざわざLensfunのデータを使う必要は無い。lcpファイルの方が事細かに補正データを数値化しているんだ。

歪曲補正で使う値はcalibrate_lens_gui.exeでの歪み(a)、たる形歪み(b)、歪み(c)と言う3つの数値と同様なようだが、それが距離毎、絞り毎(F値とは違うようだが)、そして良く判らないがレンズによってはチャンネル(RGB)?毎のデータが存在する。

また例えばSonyのE16-50mmF3.5-5.6、Lensfunでは16、17、18、20、25、40、50の7つの焦点距離情報しか持たないが、lcpファイルは16~30mmまでは1mmずつ、以降32、34、36と2mm刻みのかなり細かいデータを持っている。

これらはメーカーから提供を受けた値だろうから、どう考えてもlcpファイルの方が正確に違いない。だから私はlcpファイルがあれば素直にそっちを使っている。

Huginのツールを使ってLensfunに自分用のsmc PENTAX 24mmF2.8の補正データを作り、それをレンズプロファイルとして読み込ませたのがトップ写真。

Lightroomで使えるlcpファイル(オンラインのPentax 24mmF2.8用のデータをダウンロードして)を適用したのが次の写真だ。


2017-10-19-02


最後に補正前のデータを示す。


2017-10-19-03


Lightroomのオンラインから拾ってきたlcpファイルでも十分と言えば十分だが、自作のLensfun用データベースの方が樽型をより糸巻きに修正していて、このレンズに限ってはLensfun用の自作補正データの方が良いような気がする。

但し、レンズの歪曲具合によっては補正すればするだけ周辺部分はカットされるので、それを嫌い、かつおおよそ補正されていて違和感が無いと感じられればLightroom用のlcpファイルの方が適していたりもする。この辺は好き好きだろうな。

また下のページから補正に使える写真をアップロードする事で、Lensfun開発チーム?、彼らがその写真を解析し、新たにデータとして加えてくれるサービスがあるらしい。

Upload calibration pictures

さらりと注意事項を読むと歪曲補正だけなら直線を多く含む写真を数枚アップロードするだけで良いみたいだ。周辺光量不足データも算出して貰いたかったら絞り毎の写真も必要になるのだろう。またズームレンズは上にも延べた通り、複数の焦点距離で撮影した写真を用意する必要がある。

歪曲補正や周辺光量不足はセンサーのフォーマットに影響される。135センサー、APS-C、m4/3では大きく値が変化するので、もしEXIFに情報がなければファイル名を工夫するようにと書かれている。


にほんブログ村 写真ブログ デジタル写真へ
にほんブログ村のランキングに参加中です



コメント

  1. auf | URL | 3eyVfeeo

    すごいアートですね.でも少し心配になりますね.(笑)
    オールドレンズの場合は「収差も味のうち」ですが歪曲と色収差は
    補正できるならしたいですね.

  2. BigDaddy | URL | -

    > auf さん

    さすがにいたずらって事は無いでしょうがここの住民が施したのでしょう。立派なアーティストですよね。

    オールドレンズで賞賛出来るのは球面収差くらいでしょうか?(笑)。
    軸上色収差(フリンジ)はあんまり気にならないのですが(輪郭にくっきり出ちゃうと流石にあれですが)、他の収差や歪曲はやはり修正したくなりますよね。

    オールドレンズはRAWでじっくりと仕上げる楽しさもある、そう言っておきましょうか(笑)。

コメントの投稿

(コメント編集・削除に必要)
(管理者にだけ表示を許可する)