ページ目次
色空間についての知識が乏しかった前回
なぜ暗くなるのか分からなかった
以前、ImageMagickを使って画像の変換処理を行っていると、処理後の画像が元画像よりも暗く仕上がるということがありました。
過去記事: ImageMagickの処理で色が変わるのは色空間(-colorspace)が原因
その時にImageMagickのドキュメントで読んだ、「sRGBの色空間で~」だとか、「線形色空間が~」など、さっぱり分かりませんでした(知りませんでした)。
そしてその違いでなぜ画像が暗く仕上がってしまうのかということも。
そもそも色空間てなんなの?
CMYとか、RGBとか
色空間(いろくうかん、英: color space)は、立方的に記述される色の空間である。カラースペースともいう。色を秩序立てて配列する形式であり、色を座標で指示できる。
参照: Wikipedia – 色空間
色空間の説明に、「色の空間である」という説明はいかがなものかと思いつつ。まあ、色の指定方法とか表現方法だという理解でだいじょうぶかな、と。
代表的なものが、「CMY」と「RGB」といった、WebやDTPに触れていれば必ずや何度も聞くことになるもので、これらの違いは表現できる色が多少異なってくること。
線形(リニア)・sRGB色空間とは
これに関しては、下に紹介するブログで大変詳しく、かつ、分かりやすく説明されており、かなり助かりました。
Cygames Engineers’ Blog: 物理ベースレンダリング -リニアワークフロー編 (1)-
なるほど。
sRGB(非線形)とは、RGB色空間のひとつの規格であり、ディスプレイに表示させる際に失われてしまう画像の輝度を補正して表示させる。この処理をガンマ補正やデガンマと言ったりする。
リニア(線形)色空間は、この補正をかけることをしない(輝度が失われた状態でそのまま表示する)ため、ディスプレイに表示されたときに暗く表示されてしまう。
ImageMagickでの指定をふりかえる
補正をかけたらさらに明るく表示されるんじゃ?
ここで新たな疑問が。
ImageMagickの処理時に画像が暗くなったのは、リニア(線形)色空間の指定をしていたのが原因でした。
しかしながら、すでに鮮明になっている元画像に、ガンマ補正を行うsRGB(非線形)色空間を指定すると、さらに補正がかかり、元画像がより明るくなってしまうんじゃないのか?なぜ暗くなるのか。
その答えは、公式ドキュメントの-colorspaceオプションの項目にありました。
For colorspace conversion, the gamma function is first removed to produce linear RGB.
「色空間の変換時は、線形RGB画像を生成するため、まず初めにガンマ補正を取り除きます。」
なるほど。
-colorspaceオプションを指定すると、ガンマ補正が取り除かれたものにまず変換される(=画像の輝度が下がり、暗くなる)と、いうことのようです。
よって、自分が陥っていたのはこういう流れだったということになる。
- -colorspaceの指定により、元画像の補正が取り除かれる
(=画像が元画像より暗くなる) - -colorspaceオプションで、リニア(線形)色空間を指定
(=画像は暗いまま) - 処理後、元画像より暗い画像ができあがる
こういうことかな。
いや、こういうことだと納得しておく。