HDRとは何なのか

HDRという独特の色彩の画像、見たことありますよね。 HDRとは、ハイ・ダイナミック・レンジ、の略なので もともと明暗差を広くとらえた信号とでも言えばいいのでしょうか。 それがどうして独特の色彩の画像を指して言われるのでしょうか。
まずは、HDRではない普通の信号について復習してみましょう。 説明を簡単にするために、ここでは1次元の信号列で考えます。 (実際には、2次元でかつカラーの信号ですね。)

狭いダイナミックレンジ
こちらが狭いダイナミックレンジのカメラで撮影した画像(映像)の例です。 見ての通り、明暗差をとらえきれずに白飛びや黒つぶれが発生しています。
では、ここで撮像素子の性能が向上して、階調はそのままに、倍の明暗差が とらえることができるようになったとします。 より広い明暗差、つまりハイ・ダイナミック・レンジの撮像素子になったわけです。

広いダイナミックレンジ
見事にダイナミックレンジが2倍になりました。しかし考えてください。 階調はそのままですから、信号の範囲が2倍になっています。 これではいままでの規格どおりの画像(映像)にすることができません。
例えば、一般的なJPEGでは明るさは256段階、 一般的なデジタルビデオ信号も明るさは256段階です。 (次世代の映像信号ではもっと増えるようですが。) いわゆる8bit。ここを急に9bitとか10bitにすることはできません。 そこは共通にしておかないと、再生ソフトが対応しなくなってしまいます。
したがって、せっかく2倍に広がった信号の幅を、 これまで通りの範囲に収まるように圧縮する作業が必要です。 簡単、簡単。所定の信号幅を抜き出せばいいですね。

中央部分の信号を抜き出し
なんとこれではいままでと同じです。これでは失敗。 では、信号を圧縮してみましょう。 例えば、512段階の信号だったら2で割ります。 1024段階の信号だったら4で割ります。 それでもとの256段階と同じになります。 ちょうど、変換前と変換後の信号が比例するように。これを線形といいます。

線形に圧縮した信号
さっきよりは良いですが、何となくメリハリ(コントラスト)に欠ける 画像(映像)になってしまいます。オレンジの矢印の部分に注目してください。 最初の画像と比べると段差が小さくなってしまいました。 比例するようにしたので当たり前です。
ではここからが本題。ちょっと巧妙な方法を使います。 「なぜ」この方法が有効なのか認知科学の知識が必要なのですが 説明が長くなるので割愛します。
まず、最初の信号について、「そのポイント周辺の平均的な明るさ」を求めます。 ここでは単純に移動平均というやり方で、前後30個くらいの平均値を出しています。

平均的な明るさの分布
そしてさらに、この平均値と元の信号の差を求めます。 これは何をしているかというと、そのポイントは周辺に対して どれくらいのコントラストがあるのかを 数値化しているのです。

局所的なコントラスト
これを先ほどの、線形に圧縮して作った信号に加算します。 (加算するときには適当な係数をかけてあります。)


メリハリの効いた信号
おお!全体の形状は似ていますが、 元々のハイ・ダイナミック・レンジの信号を活かして、 メリハリのあるコントラストのはっきりした画像(映像)になりました。 しかし、中央にあった2つの平坦な部分に、奇妙な傾斜ができています。 これがメリハリを効かせた副作用で、現実にはない不自然な明暗が 発生しています。
これが現在HDR画像と呼ばれているものの正体です。 画像自体の信号の幅は従来と同じなので、HDR画像というより もっと良い名前があるような気がしますが、 広まってしまったものはしょうがないですね・・・。
ここでは簡単なモデルで説明しましたが、 考えてみると色々なところが気になると思います。 「1次元の線ではなくて、2次元の画像、しかもカラーだとどう計算するのか?」 「時間軸のついた動画ではどう計算するのか?」 「周辺の明るさ、ってどう計算するのがよいのか?」 「局所的なコントラストとはどう計算するのがよいのか?」 「土台部分は線形に圧縮して作るのとは別の計算があるのではないか?」 「不自然な明暗を目立たなくするにはどうすればよいのか?」
このあたりを色々と実験してみると面白いと思います。 レベルにもよりますが、テーマをうまく選べば大学の卒業論文になるかも。 この文章を書いている時点で、 出回っている動画HDRは静止画のHDR画像をつなぎ合わせただけで、 真の動画HDRはまだ一般的ではないですからね。
このページの感想をお待ちしてます