前回はRAWデータを料理に例えて説明してみました。今回はそんなRAWデータをもっと技術的な話に入り込んで説明します。
RAWデータとは
RAWデータとは、生の状態のデータである。と前回説明しましたが、この「生の状態」とは一体どういうことなんでしょうか?
答えはセンサーから出力されたデータそのままの形です。
ご存知の通りデジタルカメラはフィルムの変わりにCMOSセンサーが搭載されていて、このセンサーが光を電気信号に変換し、画像データとなるわけです。つまり、1000万画素のセンサーを搭載したカメラの場合、1000万個のセンサーから出力されるデータを1000万個並べたのがRAWデータですね。
bit(ビット)数とは
bit数とは、センサーが出力したアナログなデータを電子的なデータに変換するときにどのくらいの分解能にするか。ということです。ご存知の通り、コンピュータは信号を0か1かで記憶します。所謂二進数ですね。アナログのデータを電子的なデータにしたときに、何個の0と1を使うか。というのがbit数ということです。
分かりやすいの音声データ。これも元々はアナログな波形を、ある時間単位で分割して、それぞれの波形の大きさをどのぐらいの分解能で割り振るか。ということです。ファミコンサウンドのようなピコピコしたちょっと懐かしい音声は8bit、CDなんかは16bitで記録されています。
8bitは8個の0と1を使うので、0000 0000 ~1111 1111まで。10進数に変換すると0から255までですね。
16bitの場合、16個の0と1を使うので 0000 0000 0000 0000 ~ 1111 1111 1111 1111まで、10進数に変換すると0から65355までを表現できます。8bit増えただけで「256倍の情報量」を持っている計算になります。
そりゃぁCDの音質がファミコンサウンドの音質に比べて遥かにいいのも頷けますね。
CanonのRAWファイルは最近のカメラでは14bitとなっていて、各センサーから送られるデータを14bitのデータに変換して保存している。ということになります。
JPEGファイルのbit数
話は変わって今度は「調理済み」のデータ形式であるJPEGファイル。EOS Kiss x7を初め、たいていのカメラはsRGBという色空間(あんまり知らなくてもいい世界)でデータを保存していて、RGB(Red, Green, Blue:光の三原色)を各8bitで記憶しています。1画素あたりR:8bit, G:8bit, B:8bitの計24bitですね。
アレ?一画素あたり14bitのRAWより10bitも多い?それじゃあJPEGの方が画質いいんじゃないの?
と思った人。頭いいですね。でもココが罠。なんです。
センサーは色の判別ができない
実は、デジカメで使われているセンサー。これは「明るさ」だけしか感知することができません。つまり、何もしないと暗いか明るいか。「モノクロ」写真しか出来ないということになります。
それでは困る。ということで、実は各センサーにそれぞれ赤・緑・青のフィルターを付けて、センサーごとに異なる色を取得していることになります。ただ、そのままだと赤のセンサー部分の色は赤だけになってしまうので隣接する違う色のセンサーから持っていない色の情報を貰い、赤のセンサーに本来当たっているだろう緑・青の光の量を予想して割り当てているのですね。この三色のフィルターの配列を「ベイヤー配列」と呼びます。
ということなので、RAWデータに記憶されるデータ。というのは1画素あたり赤・緑・青のうち一色のみ14bit。ということになります。
縦8x横10画素の80画素センサーのカメラで記憶されたJPEGデータとRAWデータの違いを解りやすく纏めたのが上の図です。右のカラー配列が「ベイヤー配列」というもので、R1:G2:B1になっています。緑が多いのは人間の目は緑が一番敏感に感じ取るから。というものらしいですね。
料理手順はそれぞれ
先ほどの80画素のRAWデータから、左にある80画素のJPEGデータを作りだすには、RAW現像という「料理」をしなければなりません。この料理方法は各メーカーがシノギを削っている分野で、誰もが一番の料理人を目指しているというわけです。
最も簡単でシンプルな方法をご紹介すると、ある画素データのRGBを生成するために、その画素データの右・下・右下の4つの画素データを使用する。というレシピが考えられます。お気づきかと思いますが、一番右・一番下の列を除いて全ての場所で、赤1つ、緑2つ、青1つの画素センサー情報を使える便利な配列になっているのがわかるかと思います。
ですので、1画素あたりR:14bit, G:15bit, B:14bitデータとなり、JPEGにするためのいらない部分、R:6bit,G:7bit,B:6bitが捨てられる。ということになります。
中落ち部分を上手く使う
00 0000 0011 1111
という暗めのRの14bitデータは8bitにすると、上位8bitが残りますので
0000 0000 になります。(四捨五入的に丸めるのが一般的ですが、ここでは割愛)
つまりデータが無い。黒を意味します。
しかし、予め
00 1111 1100 0000
と下ごしらえで明るくしてから8bitにしてあげれば0011 1111と、普段捨てていた部分のデータを活用して現像することが可能です。
また、11 1111 1111 0000から11 1111 1111 1111までのデータは、上記方法で8bitにすると、本来は変化のあるデータですが全て1111 1111の白と表現されてしまいます。つまり、俗に言う「白トビ」や「黒ブツレ」した部分を上手く調理することで、本来捨てられる部分のデータが蘇る可能性があるというわけです。
また、グラデーションのような色が連続的に変化していくようなデータのコントラストを上げたとき、グラデーションがカクカクしてしまうのを防ぐ効果もあります。100段の階段と10000段の階段を段数そのままで高さを1mから100mにしたとき、1mではどちらもスロープに近いですが、100mにしたときには1段あたりの高さが全く違いますよね。そんなカンジです。
RAWデータの加工は料理人の腕によって美味しくも不味くもなります。適当に料理しただけではカメラの中の料理人に負けてしまうこともありますが、勉強して現像技術が上がれば見違えるような写真に仕上げることも可能になるのです。
ピンバック: 14bitの謎。RAWとは?カメラのRAWファイルを考える。【コラム】 | Pulsejack Film
ピンバック: 【コラム】14bitの謎。RAWとは?カメラのRAWファイルを考える。 | Sakai Filmworks