DCRAWを使ってLinux上でX3FとPEFを現像

Dave Coffin氏によるRaw Digital Photo Decoding in Linuxにある各種デジタルカメラ用のrawデータデコードツール(dcraw.c)を使って、SD9と*istDのraw画像をLinux上で現像するやり方をまとめてみました。テストをPlamo Linux-2.1とDebian/GNU Linux(sarge)をベースにしたマシンで行っているので「Linux上で」と銘打っていますが、Linux固有のものは無いので、基本的にはUn*x系のOSなら同じ方法で行けるはずです。

用意するもの(インストールの方法とかはここでは触れません)

準備ができたら早速現像作業を始めましょう。

  1. まず、現像したいファイルを現像作業するディレクトリにコピーします。
    cp -i /mnt/cf/IMAGES/IMG00549.X3F .<cr>
  2. dcrawを使って48bit PPMファイル(16bit/channel)に現像します。
    dcraw -4 IMG00549.X3F<cr>
    IMG00549.ppmというファイルが新しくできます。
  3. Imagemagicのツールの一つ、convertを使ってTiffに変換します(16bit/channelのTiffファイルになります)。
    convert IMG00549.ppm IMG00549.tiff<cr>
  4. filmgimpを起動します。
    filmgimp<cr>
  5. filmgimpで先ほどのTiffファイル、IMG00549.ppmを開きます。開いた画像は真っ黒で、場合によっては何も写っていないように見えるかも知れませんが、これはリニアモードで現像されているので問題ありません。
  6. メニューの View->window Info を使ってWindow Infoダイアログを開いておきます。ホワイトバランスを取るときに使います。
  7. メニューの Image->float を使って、32bit float/channelに画像を変換します。

    先ほど開いたWindow InfoダイアログのRGBの値の表示が小数点表記になります。
  8. メニューから Image->Color->Levels を選んで、Levels ダイアログを開き、"Modify Levels for Channel:"を"Value"にします。
  9. Input Levelsの右の入力値を1.00から0.05くらいにするか、Input Levelのスライダーをヒストグラムがzeroでない位置の少し右に設定すると、画像が見えてきます。ここで、表示上白飛びしているところが多少あっても気にしないでください。内部表現をfloatにしているので、階調情報は保たれています。
  10. カラーバランスを修正します。不要な場合は次のステップに進んでください。
    この例では緑が強めなので、赤と青のレベルを補正します。

    ニュートラルグレー(ホワイト)にしたい場所にマウスカーソルを合わせて、赤、緑、青のそれぞれのレベルを確認します。メモを取った方が良いでしょう。
    LevelsダイアログのChannelをRed, Blueにして、Input Levelを調整して目的の場所の赤、緑、青のレベルが同じになるように調整します。ここで、簡単に行うための裏(?)技。先ほどメモした値を、LevelsダイアログのRed, Green, Blueの各Input Levelに直接入れてしまいます(厳密に同じでなくても十分です。二桁くらいの精度で良いでしょう)。そうするとすべてのチャネルが1.0になり白飛びした状態になりますが、floatで処理していれば次のステップでリカバー出来ます。

    この例はちょっとポイントの選び方が良くなくて、青みがかってしまいました。こういう場合は各チャネルのInput Levelを微調整します。
  11. 再びLevelsダイアログのチャネルをValueに切り替えます。ここで、最終出力で白飛びしては行けない場所のレベルを確認し、R,G,Bいずれかの値が1.0を越えていたらoutput levelを調整して1.0以下になるようにします。この時の1.0の値は最後に8bit/channelに変更したときに255になります。

    全体にアンダーの時は逆にInput Levelを小さくして全体のレベルをあげると良いでしょう。
    ここまで作業が終わったら、Levelsダイアログの"OK"を押して、作業を確定します。これを忘れると元の木阿弥です(^^;。
  12. メニューからImage->Color->Gamma-exposeを選んでGamma-Exposeダイアログを出し、ガンマを2.2にします。この作業を行うとレベルが1.0以上の値のピクセルは1.0にクリップされます。つまりここでデータ上も白飛びが発生することになります。
  13. 最後にImage->8bit intかImage->16bit intを使って最終出力に合わせた内部表現に変換します。WinやMacのPhotoShopに転送してさらにレタッチをする場合は16bit、これ以上いじらないか、Linux上のノーマルのgimpでレタッチするなら8bitにするのが良いでしょう。変換したら、画像フォーマットを指定して保存します。
    できあがった画像はこちら

更新履歴

Yukito FURUKAWA
Last modified: Mon Oct 6 14:47:21 JST 2003