RAWとJPEGとその他の形式

 

 デジカメのRAW形式データというのは、実はJPEGのような標準化された画像フォーマットではなく、カメラメーカー各社が独自に作ってるもので、メーカーごとに違ってたりするのだけど、まあ大体共通して、イメージセンサが受け取った光の信号を「できるだけ加工せずに」そのまま記録したものがRAW形式だ。「できるだけ加工せず」というのは、光の強さというアナログ信号をデジタルの数値に置き換えた段階のものと考えていいだろう。で、この数値に置き換える際、現在の多くのデジカメはRGB三原色をそれぞれ12ビット、つまり0から4095までの数値で処理している。真っ黒から真っ白までの間を4096段階に区切っているわけだ。それに対してJPEGRGB各8ビットで扱ってるため、256段階の数値に変換することになる。つまり、RAWの0をJPEGの0。RAWの4095をJPEGの255として変換することになる。RAWの0もJPEGの0も真っ黒。RAWの4095もJPEGの255も真っ白で、その間をどれだけ細かく区切るかという違いになるわけだ。

 

 ところで、パソコンのビデオ回路は基本的にRGB各8ビットで扱っているので、パソコンモニターで見る限りJPEGとRAWに違いはない。というかRAWデータも画面に表示する段階で8ビットの画像に変換されてしまう。人間の目で見分けられるのは10ビットか11ビットくらいまでらしいが、まあ8ビットでもぱっと見特に違和感などなく、写真画像を見るのに不自由は感じない。が、まあ冒頭ツイートした先のブログでも言ってるように、階調が細かいRAWデータは加工しても破綻しにくいので、写真を撮るときにRAWでとっとくといいよという話になる。たとえば全体に暗く撮れてしまった写真が、例えば本来0から4095まで収められるデータの、暗い方半分しか使っていないとする。これはRAWでは2048階調になるが、最初からJPEGで保存すると、128階調しかないということになる。これを明るさやコントラストを調整してやるとすると、RAWの方なら2048階調から256階調への変換はなんの問題もない。元のほうがまだ階調が多いのだから。ところが128階調しかないものを変換しても256階調にはならない。AVのモザイクがどんなに頑張っても無修正にはならないのと一緒だ。なので見て区別がつかないとしても階調が多いほうがいいわけだ。

 

 考えてみればJPEGというのは結構古い規格である。1992年に規格ができて、インターネットの普及とともにスタンダードになった。実のところデジカメが普及する時期に、写真をあまりファイルサイズを大きくせず、かつ綺麗に表現できる規格がこれしかなかったために標準になったと言っていい。コレ以前の画像規格というと256色しか使えないGIFとか拡張性高すぎて互換性がアレだったTIFF位だし。非可逆圧縮でコンパクトにできたのがよかった。

 2000年代はじめに「次世代JPEG」ともてはやされたJPEG2000は、高圧縮でも劣化の少ないウェーブレット圧縮が当時的に重い処理で、ウェブブラウザの対応も進まず。普及を逃した。JPEG2000にはRGB各16ビットまで扱える機能もあったが、普及しなきゃしょうがない。

 PNGは、GIFの弱点を解消する画像規格だが、普及にはかなり時間がかかった。UNISYSが突如GIF使う企業は特許料払え。フリーウェア作者も払え、ソフト使ってGIF画像作る人も払えとか言い出してそれでGIFのボイコットが起き、棚ぼた式に普及した規格である。(現在では全世界でGIFの特許は切れている)

 

 ところで、Microsoftは、JPEGを置き換えるためにHD Photoという画像の規格を作っている。これは後にJPEG XRとして標準規格化されているのだが、RGB各32ビットまで扱え、RAWと同じような加工ができてRAWより小さく圧縮できるのが売りになっている。カメラメーカーがJPEGの代わりにこれを採用し、パソコンやスマホのブラウザが標準でこれを表示できるようになれば、実際普及するかもしれないが、どうかなあ。