こんにちは!kappa(@kappa10.01)です。
写真を撮っていると「明るい空を白飛びさせずに、暗い影の中の岩の質感も残したい」といった場面によく出会います。この明るい部分から暗い部分までをどれだけ記録できるかという幅のことをダイナミックレンジと呼びます。
RAWで撮ると現像の自由度が上がるとよく言われますが、この理由の一つにこのダイナミックレンジの広さが関係しています。今回は、RAWで撮るとなぜ現像の自由度が上がるのか、カメラがダイナミックレンジをどのように記録しているのか、その仕組みを解説していこうと思います。
そもそもダイナミックレンジとは何か
明るさの幅を数値で捉える考え方
ダイナミックレンジとは、カメラが記録できる最も大きな信号と、ノイズに埋もれず識別できる最小の信号との比のことです。
例えば、記録できる最も暗い信号を1として、最も明るい信号がその10000倍まで記録できるとします。この場合、10000対1がこのカメラのダイナミックレンジということになります。この比は写真の世界では段(EV、あるいはストップ)という単位で表されることが多く、1段は明るさが2倍になることを意味します。10000倍という比は、2を何回かけると10000に到達するかを計算すればよく、10000≒2^13.3なのでおよそ13.3段ということになります。

ダイナミックレンジが広いカメラほど、明るい部分と暗い部分の差が大きいシーンでも、両方の情報を一枚の写真の中に収めることができます。
カメラがダイナミックレンジを記録する仕組み
イメージセンサーが光を電気信号に変換する仕組み
カメラのダイナミックレンジは、イメージセンサーの性質によってその上限が決まります。
イメージセンサーにはフォトダイオードと呼ばれる小さな受光素子が格子状に並んでいて、ここに光(光子)が当たると電子に変換されて蓄積されていきます。明るい光が当たるほど多くの電子が蓄積され、暗い光であれば蓄積される電子は少なくなります。
このフォトダイオードには、蓄積できる電子の数に上限があります。これを満たすと、それ以上光が当たっても電子はそれ以上増えず、記録上は真っ白として扱われることになります。これがセンサー側で起きる白飛びの正体です。
一方、フォトダイオードや周辺の回路には、光が全く当たっていない状態でもわずかな電気的なノイズが常に乗っています。このノイズよりも小さい信号は、実際の光による信号なのかノイズなのかを区別できなくなります。

つまりダイナミックレンジとは、フォトダイオードが蓄積できる電子数の上限と、常に乗っているノイズの下限との比によって決まっているということになります。
記録できる階調の数を決めるビット深度
センサーが電気信号として捉えた明るさの幅は、最終的に数値データとして記録されます。このとき、何段階の数値で明るさを表現するかを決めているのがビット深度です。
例えば8bitであれば、明るさは0から255までの256(2の8乗)段階でしか表現できません。これに対して12bitであれば0から4095までの4096(2の12乗)段階、14bitであれば0から16383までの16384(2の14乗)段階まで表現できます。
一般的なJPEGは8bitで書き出されるのに対し、RAWは多くのカメラで12bitや14bitで記録されます。センサーが実際に捉えた明るさの幅が同じだとしても、それを何段階の数値で記録するかによって、階調の細かさが変わってきます。段階が少ないと、本来なだらかに変化するはずの明るさが飛び飛びの値になり、グラデーションの中に縞模様(バンディング)が見えてしまうことがあります。

なお、ビット深度そのものがセンサーのダイナミックレンジを広げるわけではありません。ダイナミックレンジはセンサー性能によって決まり、ビット深度はその広さをどれだけ細かく数値として記録するかを決めるものです。

ISO感度を上げるとダイナミックレンジが狭くなる理由
ISO感度を上げると暗い場所でも明るく撮れるようになりますが、これは実際にはセンサーに届く光の量を増やしているわけではありません。ISO感度の操作とは、センサーが記録した電気信号を、後段の回路でどれだけ増幅するかを決める操作です。
ここで仮の数値を使って考えてみます。あるカメラのフォトダイオードが、最大50000個の電子を蓄積できるとします。また、回路には常に電子5個分に相当するノイズが乗っているとします。
ISO100(基準となる感度)で撮影する場合、ダイナミックレンジは蓄積できる電子数の上限とノイズの比になるので、50000÷5で10000倍、段数にするとおよそ13.3段になります。
ここでISO800まで感度を上げたとします。ISO800では信号を8倍に増幅してからデジタル化するため、A/D変換器(アナログ信号をデジタル信号に変換する機器)の上限に達する入力信号はISO100時より8分の1になります。結果として、出力上で扱える最大信号は50000÷8=6250電子相当となり、ハイライト側の余裕が減少します。フォトダイオードが蓄積できる電子数の上限そのものは50000個のまま変わりませんが、6250個以上の電子を蓄積してしまうと、増幅した時点で上限を超えて白飛びしてしまうことになります。(例えば7000個の電子が蓄積していると8倍に増幅されて56000個相当になるので上限である50000を超え、白飛びします。)
一方、回路のノイズは増幅の過程でも同じように持ち上がってしまうため、実質的なノイズの下限はほとんど変わりません(ここでは説明を簡単にするため、読み出しノイズは5電子相当で一定と仮定します)。
結果として、ISO800におけるダイナミックレンジは6250÷5で1250倍、段数にするとおよそ10.3段まで狭まります。ISO100の時点では13.3段あったダイナミックレンジが、感度を上げたことで3段ほど狭くなったことになります。

このように、ISO感度を上げるという操作は、明るい部分の記録できる余地を犠牲にして信号を持ち上げる操作であるため、必然的にダイナミックレンジは狭くなります。
RAWとJPEGでダイナミックレンジの扱いが変わる仕組み
RAWはセンサーが記録した情報をそのまま保持したデータ
上述の通り、イメージセンサーはフォトダイオードに蓄積された電子の量を電気信号として出力します。このアナログな電気信号を、カメラ内のA/D(アナログ・デジタル)変換回路と呼ばれるパーツによって、コンピューターが扱えるデジタルのデータへと変換します。RAWデータとは、この変換直後の数値を、ほぼ手を加えずにそのまま保存したデータのことです。
RAWには通常12bitや14bitといった多くの階調が保持されており、これは上段で説明した通り明るさの情報を4096段階や16384段階のデジタル値で持っているということになります。ホワイトバランスやコントラスト、シャープといった調整も、RAWの状態ではまだ確定しておらず、後から現像ソフトで数値を割り当て直せるようになっています。つまりRAWは、センサーから読み出されたデータを、画像処理をほとんど行わず保持したデータということになります。
JPEGは8bitへの変換とトーンカーブ適用で情報を間引く
一方、JPEGとして書き出す際にはさまざまな処理が行われますが、階調に大きく関わるものとしてbit数の変換とトーンカーブの適用があります。
まず、RAWが持つ12bit(4096段階)または14bit(16384段階)の明るさ情報は、最終的にJPEGの8bit(256段階)へ変換されます。
また、JPEGではカメラメーカーや現像ソフトが、写真を自然で印象的に見せるためのトーンカーブを適用します。一般的なJPEGではトーンカーブによってハイライトやシャドウの階調が圧縮されるため、RAWよりも現像時に階調を復元できる余地が小さくなります。

これらの処理によって、RAWの時点では256段階よりもずっと細かく分かれていたハイライトやシャドウの明るさの差が、JPEGでは近い数値へとまとめられてしまいます。例えば、RAWでは14bit中の16000と16200というように区別されていた2つの明るさが、8bitに変換された時点でどちらも255という同じ値になってしまう、といったことが起こります。
一度間引かれた情報は現像で復元できない
ここで重要なのが、JPEGへの変換によってまとめられてしまった数値は、後から元の状態に戻すことができないという点です。
先ほどの例で言うと、JPEG上の255という数値だけを見て、それが元々RAWの16000だったのか16200だったのかを判別する手段はありません。一度2つの異なる数値が同じ1つの数値にまとめられてしまうと、その時点で元の差の情報は失われており、どれだけ現像ソフト上でハイライトやシャドウのスライダーを動かしても、失われた階調が復活することはありません。

これに対してRAWの場合、たとえプレビュー上は白飛びしているように見えても、実際のデータ上ではまだ16000と16200が別の数値として保持されている可能性があります。この差が、RAWとJPEGの間で現像時の復元力に違いを生む理由になっています。
RAW撮影が現像で有利になる理由
白飛び手前のハイライトを復元できる余地がある
カメラの背面モニターに表示されるプレビューは、実はRAWデータそのものではなく、カメラ内で生成されたJPEG相当の画像を表示しています。そのため、プレビュー上で白飛びしているように見えても、RAWデータの中にはまだ階調が残っているということがよく起こります。
具体的な数値で考えてみます。RAWが14bitで記録している場合、明るさの上限は16383です。仮にセンサーが実際に捉えた最大輝度が15000だったとすると、これはまだ上限の16383に達しておらず、階調としての余地が残っている状態です。しかし、JPEG生成時のトーンカーブは、15000という値をすでに255(8bitの上限)に割り当ててしまっていることがあります。この場合、JPEGとして書き出された画像は白飛びして見えますが、RAWデータの中では15000という具体的な数値がまだ保持されています。
このとき現像ソフトでハイライトや露光量を下げる調整を行うと、RAWデータに保持されている15000という数値を、出力上の255ではなくもう少し低い値に再度割り当て直すことができます。これによって、プレビュー上では白飛びして見えていた雲や空の階調を、現像後の写真の中に取り戻すことができます。

黒つぶれ手前のシャドウを持ち上げられる余地がある
シャドウ側についても同様の余地があります。
前章のノイズの話に関連しますが、フォトダイオードが記録できる最も暗い信号は、回路のノイズの少し上に位置しています。RAWはこの微弱な信号の差もbit数の分だけ細かく保持しているため、JPEG上では真っ黒に近く見える部分でも、RAWデータの中にはまだ複数の異なる数値が存在していることがあります。
例えばRAWデータ上で明るさ50と明るさ80という2つの暗い値があったとして、JPEG変換時のトーンカーブがこの両方を8bit上の0に近い値にまとめてしまったとします。この場合、JPEGの状態からシャドウを持ち上げても、すでに同じ数値になってしまった部分の階調差は戻ってきません。一方RAWであれば、50と80という数値がまだ別々に保持されているため、シャドウを持ち上げることでこの2つの明るさの差を再び出力に反映させることができます。
ただし、これは無制限に持ち上げられるという意味ではありません。回路のノイズに近い信号を無理に持ち上げると、ノイズそのものも一緒に増幅されてしまうため、持ち上げすぎるとシャドウ部分がざらついた見た目になります。あくまで、JPEGと比べて持ち上げられる余地が広いという話になります。
まとめ
ダイナミックレンジとは、カメラが同時に記録できる明るさの幅のことで、これはイメージセンサーが蓄積できる電子数の上限と、回路に常に乗っているノイズの下限との比によって決まります。ISO感度を上げると、この上限側の余地を犠牲にして信号を持ち上げることになるため、ダイナミックレンジは狭くなります。
RAWはセンサーが記録した明るさの情報を12bitや14bitといった多くの階調のまま保持しているのに対し、JPEGは8bitへの変換とトーンカーブの適用によってこの情報の一部を間引いてしまいます。一度間引かれた情報は現像で戻すことができないため、白飛びや黒潰れに近い部分の復元力に大きな差が生まれます。
RAWで撮影しておくことは、撮影時点では気づかなかった明暗の差を、後から現像の中で引き出す余地を残しておくことにつながります。

コメント