みなさん、写真撮ってますか?
スマートフォンの普及によって、デジカメ写真は本当に身近な存在になりました。近頃のスマートフォンは一昔前では考えられないほどいいカメラを搭載しているため[1] 、日中の風景など、コンディションのよい状態の写真は十分綺麗に写ります。ところが「飛ぶ鳥を撮りたい」「 満天の夜空を撮りたい」といったちょっと特殊なシチュエーションになると、スマホのカメラでは遠からず「物理の限界」がやってきます。この限界を突破するため、レンズ交換式一眼レフに手を出すのは生き物のサガと言っても差し支えないでしょう。
[1] 機種によります。海外の廉価モデルなどの中には、本当にお話しにならないカメラを搭載したものも存在します。とりあえずiPhoneとXperiaのカメラは信用してよいと思います(個人の感想です) 。
デジタルカメラは撮像素子が受光した情報をもとに、カメラ内部で様々な画像処理を施した上でJPEG画像を生成します。しかしJPEG圧縮することで当然画質は劣化しますし、画像生成の過程で情報の一部が失われることもあります。さらに言えば、カメラが行う画像処理が、自分の好みと異なるかもしれないという根本的な問題もあります。後からGIMPで編集するという手もありますが、一度圧縮されたJPEGに対して再編集と再圧縮を行うことになり、さらなる画質の低下を伴います。
そこで一眼レフや高級なコンデジには、RAWと呼ばれる撮影モードが備わっています。これは撮像素子が受光した情報に手を加えず、そのまま記録する機能です。「 生」の情報がそのまま記録されているため、情報の欠落や画質の劣化がないだけでなく、カメラが余計な処理を加えないため、後から自分好みに加工できます。しかしあくまで生データのため「このデータを元に画像を生成する作業」が必要になります。この作業を「現像(developing) 」と呼びます。
UbuntuでRAWデータを現像する方法は、第74回 で紹介しました。とはいえこれは8年も前の記事。今とは状況も、筆者の使っている機材も、筆者の腕も変わっているはず。そこで今回はあらためて、写真現像ワークフローアプリケーション、darktableを使った今風なRAWデータの現像方法を紹介します。
darktableとは
darktableとは、写真の管理、閲覧、選別、現像、出力といった作業を一貫して行える写真現像ワークフローアプリケーション、一言でわかりやすく言えばAdobe Lightroom のクローンです。各種Linuxディストリビューションだけでなく、macOSやFreeBSD、Solarisにも対応しています[2] 。
[2] ただし残念ながらWindowsのネイティブビルドは存在しません。公式のインストールドキュメント のWindowsの項を見ると「LinuxのLive ISOイメージを焼いてPCを再起動してみてください」と書いてあります。それはLinuxなのでは……。
darktableはUbuntuのUniverseリポジトリに含まれているため、aptでインストールできます[3] 。
$ sudo apt install darktable
darktableのインターフェイス
Dashから「Darktable Photo Workflow Software」を起動してください。
図1 起動直後のdarktableの状態。
darktableには大きく「ライトテーブル」「 ダークルーム」「 テザリング」「 マップ」「 スライドショー」「 プリント」の6つのビューがあります。各ビューの概要を簡単に説明します。
ライトテーブル
写真のコレクションを閲覧するビューです。おそらくリバーサルフィルムを見るためのライトテーブル(ライトボックス)が名前の由来でしょう。写真の評価、タグとカラーラベルの追加、メタデータの編集、画像のエクスポート等もここから行います。
図2 ライトテーブルはフィルムロールやコレクション単位で写真を一覧表示するビュー。ここで対象のl写真を選択してから、各種処理を適用するのが基本フロー。
ダークルーム
その名の通り、暗室です。様々な現像モジュールを駆使して、写真を現像するビューです。
図3 写真の現像を行う、darktableのメインビュー。右側パネルにある現像モジュールを駆使して写真に様々な効果を与えていく。
テザリング
USBケーブルで接続したカメラから写真をインポートするビューです。特に難しいことはないので、本記事では省略します。
図4 USBで接続したカメラから写真をインポートする例。カメラのモードはMTP、USBマスストレージのどちらでも問題ない。
マップ
写真に埋め込まれたジオタグを元に、地図上に写真を表示するビューです。手動で写真にジオタグを付加することもできます。筆者が使っていないため、本記事では省略します。
図5 ジオタグの埋め込まれた写真をインポートすると、自動的にマップ上にマッピングされる。くれぐれも自宅バレなどしないように注意。
スライドショー
文字通り、現在のフィルムロールに含まれる写真をスライドショーで表示するビューです。本記事では説明しません。
プリント
選択した写真をプリンターで印刷するためのビューです。こちらも本記事では説明しません。
darktableのワークフロー
それでは実際にRAW現像のワークフローを追いながら、darktableを使ってみましょう。ライトテーブルでフィルムロールやコレクション(後述)から写真を選択して、ダークルームで現像し、エクスポートするのが基本の流れとなります。
コレクションに写真をインポートする
まずは写真をインポートします。ライトテーブルビューを開き、左側パネルのインポートパネルをクリックしてください。インポートは画像1枚ごとでもフォルダごとでも可能です。今回は撮影日ごとに分類された複数のサブフォルダを含む、Picturesフォルダをまるごと指定しました。
この時、デフォルトでは指定したフォルダの直下にあるファイルのみが対象となり、サブフォルダの中身はインポートされないことに注意してください。フォルダを再帰的にインポートしたい場合は「インポート・オプション」の「ディレクトリを再帰的にインポート」にチェックをつけてください。今回の例ではPicturesフォルダ直下にはサブフォルダ以外のファイルは含まれていないため、このチェックを忘れると写真は一枚もインポートされません。
図6 フォルダをまるごとインポートする。
図7 デフォルトでは指定したフォルダ直下のファイルしか対象としないため、再帰的にインポートのチェックをつける。
「JPEGファイルを無視します」にチェックをつけると、JPEGファイルをインポート対象から除外します。RAW+モード[4] で撮影している場合はこのオプションを指定するとよいでしょう。
「インポートにメタデータを適用」にチェックをつけると、インポート時に写真に指定したメタデータを追加できます。撮影者情報や特定のタグを一括して付加したい場合に有効です。
フィルムロールとコレクション
darktableはフィルムロールという単位で写真を管理します。これはdarktable上で写真を管理するための仮想フォルダーです。ディスクから写真をインポートすると、インポート元の実フォルダー名をベースに、自動的にフィルムロールが作成され、その中に写真が登録されます。ここで重要なのは、あくまで仮想的なフォルダーに、実ファイルの情報のみが登録されているということです。写真の物理的なコピーが作成されるわけではないため、インポート元のファイルを削除すると写真は読み込めなくなってしまいます。
図8 インポート元のフォルダーと作成されたフィルムロール。
フィルムロールに登録された写真を、さらに細かい条件によってフィルタできます。このフィルタを「コレクション」と呼びます。具体的には「撮影日」「 撮影者」「 使ったレンズ」「 焦点距離」「 絞り」「 ISO感度」といったパラメータで絞り込めます。たとえば「PENTAX K-1で今日撮影した写真のうち、ISO感度が3200で絞りがF2.8のもの」といった条件を指定できます。左側ペインの画像コレクションパネルをクリックして、検索ルールを入力します。ルールの右側にある下向き矢印から「検索を絞り込む」をクリックすると、複数の条件でAND検索ができます。
コレクションの検索条件を指定したら、それをプリセットとして保存できます。画像コレクションパネルの右側にあるハンバーガーアイコンから「新しいプリセットを格納します」をクリックします。プリセットの名前をつけるダイアログが表示されるので、わかりやすい名前をつけて「OK」をクリックしてください。
図9 複数の条件でコレクションを作成。
図10 コレクションの検索条件はプリセットとして保存し、いつでも呼び出せる。
写真を現像する
ライトテーブルで現像したい写真を選択したら、ダークルームで現像してみましょう。写真をダブルクリックすると、ダークルームでその写真を開いた状態となります。なおダークルームではウィンドウ下部のフィルムストリップビューに、現在のライトテーブルのビューと同じ写真の一覧が表示されます。フィルムストリップで別の写真をダブルクリックすることで、ダークルーム内で現像対象を切り替えることができます。
データベースとサイドカーファイル
darktableは編集時に、オリジナルの画像を上書きしません。オリジナルの画像は常にリードオンリーで開かれ、作業内容は差分データとして保存されています。この作業内容を含む、すべての画像関連の情報は「~/.config/darktable」以下のデータベースに保存されています。またそれとは別に、サイドカーファイルと呼ばれる拡張子「.xmp」のファイルが作成されます。
サイドカーファイルはオリジナルの画像ファイルと同じフォルダーに画像ごとに生成され、その画像に対して行われた作業内容が個別に保存されています。サイドカーファイルの内容はデータベースにも含まれているため、冗長だと感じるかもしれません。しかしサイドカーファイルとオリジナル画像を再インポートすることで編集内容を復元できるため、オリジナル画像と作業情報をセットで人に渡したいような場合や、データベースが破損してしまった場合のバックアップに役立ちます。
とはいえファイルごとに個別のサイドカーファイルが作られるのは鬱陶しいと感じるかもしれません。その場合は「darktableの設定」 →「 内部オプション」にある「各画像のサイドカーファイルを書き込みます」のチェックを外してください。
またdarktableはデータベースの内容を優先的に読み込むため、外部アプリでサイドカーファイルを編集しても、その内容が反映されません。サイドカーファイルの変更を再読み込みしたい場合は、「 darktableの設定」 →「 内部オプション」にある「起動時に更新されたxmpファイルを探します」にチェックを入れてください。
スナップショットと履歴
現像時には様々なパラメーターの調整を何度も行うわけですが、その最中に「ちょっと前の状態と見比べたい」「 やっぱり前の状態に戻りたい」と思うことが絶対にあるはずです。darktableにはスナップショットという機能があり、現在の状態をビットマップとして一時的に保存できます。
左側パネルにあるスナップショットパネルから「スナップショットを撮る」をクリックすると、現在の状態がスナップショットとして保存されます。さらになにか編集を行った状態で、先ほど取得したスナップショットをクリックすると、中央パネルが分割され、現在の状態とスナップショットの状態がそれぞれ表示されます。分割線をドラッグすることで分割範囲を変更できるほか、中央の矢印をクリックすると、上下左右の分割パターンを変更できます。
スナップショット名は、現在の履歴スタックの項目名がそのまま反映されています。もしもスナップショットの状態へ戻りたいのであれば、履歴パネルから該当の履歴をクリックします[5] 。
なおスナップショットはdarktableを終了すると破棄されてしまうため、注意してください。
図11 スナップショットをクリックすると、ビューが分割され、現在の状態とスナップショットの状態がそれぞれ表示される。もう一度スナップショットをクリックすると、分割が解除される。
図12 このスナップショットはベースカーブを編集した直後(履歴の3番目)に取得したため、履歴パネルから「3 - ベースカーブ」をクリックすれば、スナップショット取得時の状態に復元できる。
デモザイク
そもそもデジカメの撮像素子は色を区別できず、光の強さしか記録できません。つまりそのままではモノクロ画像しか撮影できないのです。そこで素子1ピクセルごとに、RGBのうち1色しか透過しないフィルターが置かれています。これで「受光した光の強さ=そのフィルタを透過した色の強さ」になるため、結果としてRGBのうち1色の情報が得られるわけです。
意外に思われるかもしれませんが、実はデジカメは各ピクセルがフルカラーの情報を持っているわけではないのです。1000万画素のデジカメであれば、半分の500万画素で緑、残りの250万画素ずつで青と赤の色を記録しています[6] 。
しかし各ピクセルが単一のカラーチャネルしか持っていない状態では、モザイク状の画像になってしまいますよね。そこで各ピクセルは、別のカラーチャネルを持った近隣のピクセルから色情報を補完します。この処理を「デモザイク」と呼びます(※7 、※8 ) 。
デモザイクモジュールでは、デモザイクのアルゴリズムを選択できます。現在darktableはPPG、AMaZE、VNG4の3つのアルゴリズムを実装しています。品質面で言えば、通常はAMaZEを選択しておくのが妥当です。しかしAMaZEは低速なため、darktableはデフォルトでPPGを使用します。品質が気になる場合は、アルゴリズムを変えて変化を確認してみるとよいでしょう[9] 。
[9] ちなみにすべてのカメラがベイヤーフィルターを採用しているわけではないため、センサーの種類(RGBの配列)によって使われるデモザイクアルゴリズムも変化します。たとえばX-Transセンサーを搭載したカメラで撮影した写真では、Markesteijnと呼ばれる別のアルゴリズムセットが選択可能になります。しかし筆者はX-Transセンサーを実装したデジカメを所有していないため、検証はできていません。
図13 デモザイクモジュールのパネル。
図14 310mmで撮影した小鳥の羽根を等倍に拡大したところ。デモザイクアルゴリズムにPPGを使用したが、羽根にモアレが出ている。
図15 デモザイクアルゴリズムにAMaZEを使用したもの。羽根のモアレが軽減されているのがわかる。
明るさとコントラストと彩度の調整
写真の修正で、まずやるべきことは明るさの調整です。というのも、全体的な明るさを変更すると、色の見え方が変わってしまうからです。たとえば彩度や色調を変更して自分好みの色に変えても、その後に明るさを変更すると色が変わってしまうため、再度彩度調整をしなければならくなってしまうのです。彩度だけに再度です。大事なことなので2回言いました。
そのため、次のフローが大原則であることを覚えておきましょう。
明るさを調整する
ホワイトバランスで色を調整する
コントラスト、彩度等を調整する
ノイズ除去、シャープネス等の仕上げ
「コントラスト 明るさ 彩度」モジュールでは、文字通りこれら3つのパラメータを調整できます。まずは「明るさ」のスライダーを少し上げてみましょう。大抵の場合、露光量を増やす(明るくする)だけで写真の見栄えはよくなります[10] 。コントラスト、彩度も同様に調整します。
図16 コントラスト 明るさ 彩度モジュール。スライダーを動かすことでそれぞれのパラメータを調整する。
図17 PENTAX K-1 + PENTAX-D FA 150-450mm F4.5-5.6 ED DC AW, 焦点距離450mm, 露光時間1/1000秒, 絞りF5.6, ISO1250, 撮って出しの状態(右)と明るさを+0.20した状態(左) 。あとは少しコントラストと彩度を上げればぐっと見栄えがするでしょう。
ホワイトバランスの調整
光には色があります[11] 。蛍光灯の下と白熱電球の下では、同じ物でも違う色で見えるでしょう。どのような光の下でも、正しい色を再現できるように調整する機能がホワイトバランスです。
オート設定の場合、カメラは「白いものが白く写る」ようにホワイトバランスを調整します。しかしそれでは赤い夕陽も青い夜空も綺麗には写りません。そのような時は撮影者のイメージにあわせて、マニュアル設定でブルーやアンバーに振ったりします。
撮影時にカメラの設定を変更するのが基本ですが、現像時のホワイトバランスの変更は画質の劣化を伴わないため、後から何度でも変更できます。イメージと色が違うなと思ったら、色温度のスライダーを少し動かしてみましょう。
図18 PENTAX K-1 + PENTAX-D FA 150-450mm F4.5-5.6 ED DC AW, 焦点距離450mm, 露光時間1/400秒, 絞りF9.0, ISO400, 撮影したままの状態(左)と色温度をやや下げて青くしてみたもの(右) 。
トリミング
原則として、トリミングは可能な限り避けるべきです。特に風景写真であれば、現場できっちりと構図を決め、3:2のフレームをいっぱいに使って画を作る努力をすべきだと筆者は思っています。とはいえ、後から構図を変更したくなることはよくありますし、フレームの隅にいらないものが写り込んでいることに、現像時に気づくこともあります。望遠レンズで撮る動物写真のように、フレームいっぱいに収めるのが難しい題材もあります。最近のカメラは画素数が多いため、多少トリミングしても実際のところ問題はありません[12] 。原則は原則として、トリミングで構図を変えることで作品がよくなるのであれば、躊躇わずに切ってしまいましょう。
[12] トリミング後の画素数が1000万画素以上あれば、紙への印刷を考えてもまったく問題ありません。たとえば筆者が使っているカメラであれば3600万画素程度なので、2/3を切り捨てても大丈夫という計算になります。
「トリミングと回転」モジュールでは、文字通り写真のトリミングと回転、そして遠近歪曲の補正ができます。まず「縦横比」でトリミング後のアスペクト比を決定します。一般的な一眼レフカメラのセンサーサイズは3:2ですから、3:2を選択しましょう[13] 。右横の円形の矢印アイコンをクリックすると縦横比を入れ替えられます[14] 。
[13] 3:2という比率は35mmフィルムのアスペクト比に由来します。デジカメによっては4:3であったり、16:9である場合もあります(自由に選択できるカメラも存在します) 。そのような場合は3:2にこだわらず、オリジナルの画像のアスペクト比に合わせても構いません。
トリミングと回転モジュールがアクティブになっていると、中央パネルの写真の上に、トリミング用のガイドラインが表示されます。コーナーとボーダーをドラッグして、トリミングするサイズを調整します。トリミング枠内をドラッグすると、サイズを変更することなく、トリミング位置を移動できます。ダブルクリックすると、そのサイズで写真がトリミングされます。
マウスの右ボタンで写真の上をドラッグすると、写真を回転させるためのガイドラインが表示されます。その状態で右ボタンを離すと、引いたガイドラインの角度に応じて写真が回転します。画像を斜めにすると、四隅に何も写っていない部分が出てきてしまいます。「 自動切り抜き」を有効にしておくと、画像内に余白がないよう、回転後に自動でトリミングを行います。
「キーストーン」は遠近湾曲を補正するためのツールですが、ここでは説明しません。詳しくはdarktableのマニュアル を参照してください。
図19 トリミングと回転モジュール。
図20 樹につかまっているエゾリスの写真。3:2で撮影したが、アップで見せるために2:3にトリミングしてみた。
図21 写真を斜めに回転させた状態。自動切り抜きは余白が写真内に含まれないよう、ちょうどいいサイズに自動でトリミングをしてくれる。
ノイズ低減
最近のデジタルカメラは、ISO3200や6400、さらには12800を越えるような高感度撮影が可能になっています。感度を上げると、カメラは内部で電気信号を増幅します。結果として感度を2倍にすると、2倍明るく写真は写ります。言いかえると、光量が半分の条件でも、同じ明るさで写せるということです。さらに言いかえると、同じ条件でISO感度を2倍に上げると、2倍高速なシャッターを切ることができるということです。
ところが、ISO感度は上げればいいというものではありません。居酒屋などの暗い空間でスマホで写真を撮り、写真がザラザラになってしまった経験はありませんか? これは「高感度ノイズ」というもので、ISO感度を上げれば上げるほど出やすくなります。感度は上げすぎると画質が劣化してしまうのです。たとえば三脚を使った風景写真では、シャッタースピードを遅くできるため、感度を上げる必要はありません。こういう場合は画質を優先するため、感度は可能な限り下げるのがセオリーです。しかし被写体が動くような場合はシャッタースピードを落とせないため、感度を上げて光量を稼ぐ必要が出てきます。こうして発生してしまったノイズは、ノイズ低減モジュールで低減できます。
darktableはカメラのモデルごとに固有のノイズプロファイルを持っています[15] 。このプロファイルを使ってノイズ除去を行うのが「ノイズ低減(プロファイル) 」モジュールです。RAWデータに記録されたカメラのモデル名とISO感度から最適なプロファイルが自動的に選択されるため、モジュールを有効にするだけで自動的に最適な処理が行われます。「 適用量」スライダーを動かすことで、ノイズ除去の強さを調整できます。ただし、ノイズ除去とシャープネスはトレードオフの関係にあることは忘れないでください。そもそも本質的に、発生したノイズは除去できません。ノイズ除去とは周囲のピクセルから色を補完して、ノイズを塗り潰しているのです。そのため強くノイズ除去をかけるとディテイールが潰れ、単一色で塗り潰したような、のっぺりとした写真になってしまいます。
図22 ノイズ低減(プロファイル)モジュール。プロファイルはEXIF情報から自動的に選択される。
図23 PENTAX K-1 + Sigma 15mm F2.8 EX DG DIAGONAL FISHEYE, 焦点距離15mm, 露光時間8秒, 絞りF2.8, ISO3200, 全体的にザラザラとした高感度ノイズが乗っているのがわかる。
図24 ノイズ除去を強めにかけた状態。夜空のザラザラは消えているが、山肌のディテイールが完全に潰れてしまっている。
ノイズ低減にはプロファイルの他に、「 ノイズ低減(バイラテラル) 」と「ノイズ低減(非局所平均) 」モジュールが存在します。詳しくはマニュアルを参照してください。
写真をエクスポートする
前述の通り、darktableはRAWデータに対する変更差分を保存しています。そのため写真の調整が終わったら、JPEGとしてエクスポートして、画像に書き込む必要があります。これはライトテーブルで行います。
ライトテーブルを開いたら、エクスポートしたい写真を選択してくてださい。次に右側パネルにある「選択画像をエクスポート」を開き、出力先フォルダ(ターゲットストレージ)とオプションを選択し、最後に「エクスポート」をクリックします。エクスポートには、場合によってはかなりの時間がかかります。
もしもWeb用に縮小した画像がほしいのであれば、「 最大サイズ」を変更してください。エクスポート画像は、ここで設定されたサイズ以下に抑えられます。なおデフォルト値は0で、これはオリジナルのサイズをそのまま利用することを意味しています。
図25 エクスポートパネル。ここでエクスポート先、圧縮率、サイズ等を調整する。
より新しいカメラに対応するには
RAWデータはカメラの機種ごとに形式が異なります。そのため現像ソフトも、世の中に存在するすべてのカメラに対応しているわけではありません。使いたい現像ソフトが自分の持っているカメラに対応していない場合、色が正しく再現されなかったり、そもそも画像を読み込むことができなかったりします。
次々と登場する新製品に対し、現像ソフト側もバージョンアップで対応しています。これは言いかえると「ソフトがリリースされた後に発売したカメラは、そのソフトでは使えない」ということです。たとえばdarktableの場合、OLYMPUS製の「OM-D E-M1 Mark II」というカメラには、最新の2.2.4で対応していますが、Ubuntu 17.04に含まれているdarktableは2.2.1のため、そのままではRAWデータを読み込めません。
図26 OM-D E-M1 Mark IIのRAWデータ(ORF)をインポートしたところ。不明な形式と言われる。
図27 無理矢理ダークルームで現像しようとすると、読み込みに失敗する。
darktableは開発元がPPAで最新のリリースを配布しています 。最新リリースなら対応してるのに!といった場合は、こちらを試してみるとよいでしょう。新しくサポートが追加されたカメラや、ノイズプロファイルが追加されたカメラはリリースノートに書かれている ため、新しいカメラを購入する時の参考にしてください。
PPAを追加してdarktableをインストールするには、以下のコマンドを実行してください。
$ sudo add-apt-repository ppa:pmjdebruijn/darktable-release
$ sudo apt update
$ sudo apt install darktable
図28 バージョン2.2.4にアップデートした後の状態。ORFファイルも正しく開けるようになった。
以上がdarktableの基本的な使い方になります。もしRAWで記録できるデジカメを持っているのならば、カメラ任せにせず、自分で写真の現像に挑戦してみてはいかがでしょうか?
ちなみに筆者は昨年からAdobe Creative Cloudのフォトプランに加入して、普段はMacでLightroomとPhotoshopを使っています。