2013年 01月 27日

表色系

「表色系」は文字通り色の表しかたで、まず2つに分けられる。1つが「混色系」でもう1つが「顕色系」らしい。「混色系」は XYZ 表色系とか RGB 表色系とかで、いわゆるコンピュータ表現で使う物理的なものらしい。「顕色系」は人間の知覚にあうように調整したものらしく、特定の環境下での色の見えかたを定義するものらしい。

顕色系は知覚的と言ってるので、なんとなく混色系と機械的に変換できないような気が自分はしてしまったが、L*a*b* 表色系はホワイトポイントを設定するので顕色系に分類にされるっぽい (あくまでホワイトポイントに対して相対的なもののようだ)。なんか難しいが、知覚的かどうかが問題なのかな。

XYZ 表色系は知覚的ではなく、すなわちガンマが適用されていないリニアな状態になっている。L*a*b* はすごいざっくり言うと人間の知覚ガンマを適用して XYZ 表色系を圧縮したイメージをすれば良いっぽい。L*a*b* 的には、人間の視覚のガンマ値は 1/3 となってる (XYZからの変換式に出てくる)。

カラーマネジメントシステムと文字コード

カラーマネジメントシステムは、文字コードの処理と似たようなことをするシステムだと思うとイメージしやすいと思った。

最近のウェブアプリケーションの文字コードの取り扱いのベストプラクティスは「中は全部 UCS 系 (UTF-8 とか)、入出力でちゃんと内部エンコーディングに変換する」となっているけど、カラーマネジメントと同じような感じで、「中は全部 XYZ、入出力でプロファイルを使って変換する」みたいな感じっぽい。

カラーマネジメントシステムの場合その内部エンコーディングをプロファイル接続空間 (PCS) と言うらしい。PCS は使う範囲の色をカバーしていればなんでもよくて、XYZ とか L*a*b* とか、知覚できる全ての範囲をカバーする色空間にしとくのが無難っぽい。例えば Mac のカラーマネジメントシステムである ColorSync は、PCS として XYZ 表色系を使っている。

2013年 01月 26日

sRGB 仕様・ガンマの種類

A Standard Default Color Space for the Internet - sRGB

とりあえずガンマの意味がよくわからなくなった……

なんかいくつかあって難すぎる…… ちょっと訳してみる

  1. viewing gamma
    1. the overall system gamma that we want to obtain and is typically computed by multiplying the camera gamma by the display gamma as shown below.
    2. システム全体として要求してる、典型的には以下に伸べる camera gamma と display gamma を積算して求めらるガンマ
  2. camera gamma
    1. the characteristic of the image sensor or video camera standard transfer function
    2. イメージセンサやビデオカメラの標準伝達関数の特徴
  3. CRT gamma
    1. the gamma of the physical CRT.
    2. CRT の物理的なガンマ
  4. LUT gamma
    1. the gamma of the frame buffer lookup table
    2. フレームバッファルックアップテーブルのガンマ
  5. display gamma
    1. the "display system" gamma downstream of the frame buffer which is typically computed by multiplying the CRT gamma by the LUT gamma as shown below.
    2. "ディスプレイシステム" としての、典型的には CRT gamma と LUT gamma を積算して求める、フレームバッファを通した最終的なガンマ
http://www.w3.org/Graphics/Color/sRGB.html

いわゆる「ディスプレイのガンマ」ってやつは最後の display gamma っぽい。CRT gamma はディスプレイの物理的な (ハードウェアとしての) 特性値で、LUT gamma はディスプレイカードとかに設定されているガンマ値かな。

camera gamma は当然カメラのセンサー特性のことだと思う。viewing gamma はカメラからディスプレイ出力までを考慮した全体的なガンマ?

ディスプレイキャリブレーションでターゲットにするガンマは当然 display gamma だと思う。キャリブレーションでガンマを求めたら、ディスプレイカードの LUT ガンマを調整するのかな…

ディスプレイのガンマを理解する

ガンマの種類を読んでいて、そもそも「ガンマ」のついて理解がなさすぎるな、ということでそこからちゃんと理解する必要がある。

ガンマは信号の出入力間の関係性を示していて、具体的には、出入力信号強度間に output signal intensity = input signal intensity ** gamma という関係があるときの gamma らしい。ディスプレイのガンマが1ならリニア(変化なし)だし、1を超えているなら黒っぽくなり、1未満なら白っぽくなる。

  • 自然界の物体の色は反射率に対してリニア、すなわち gamma = 1
  • CRT ディスプレイにおいて物理的特性から gamma ≒ 2.2
  • 人間の目・脳は gamma ≒ 1/3〜1/2.2 で知覚

graph

人間の目は信号強度が強くなるほど圧縮して知覚するらしい (明るくなるほど、明度差を感じるための必要な信号差が大きくなる)。これは音の大きさとかでもそうだし、人間の知覚ってそういうものらしい ヴェーバー‐フェヒナーの法則

CRT にリニアな信号を入れると、人間が知覚する場合はある程度中和されて、階調変化が自然に見えるようになるようだ? (γ=0.733~1.0 程度になるっぽい)

理想的なディスプレイ

とりあえずこれらを踏まえて「理想的なディスプレイ」を考えてみる。つまり階調をできるだけフルで生かせるディスプレイを作る場合、どういう特性のものがいいか?

  • 人間の目のガンマ特性的に信号強度が強い場合は階調がいらない
  • ディスプレイが人間の目と逆のガンマ特性を持っていれば階調的には効率が良い

要は γ=2.2~3 なら階調的には嬉しいはず

理想的なカメラ

物理的な反射特性はリニアだけど、前述の通り信号強度が強い場合は階調がいらないので、γ=1/3~1/2.2 だと一番効率が良いはず

理想的な viewing gamma

カメラとディスプレイを含めたシステム全体のガンマとしては、当然 1.0 になるのが理想だと思われる。すなわちカメラで撮影された画像が、そのままディスプレイで見れる。

ただ、実際には「閲覧環境」というのが関係するので、1.0 にはならないっぽい。

ターゲット display gamma

ターゲットにする display gamma は、仕様で定められている閲覧環境と自分の閲覧環境との差のことを考慮しないないといけない。

今さらだけど環境光によってガンマが変わるってのがいまいちイメージできないけど、

  • 暗い環境ほど相対的にディスプレイが明るくみえるので、より黒くなるように設定しなければならない?
  • 明い環境ほど相対的にディスプレイが暗くみえるので、より白くなるように設定しなければならない?

sRGB に書いてある viewing gamma は

  • 1.5 - 完全に暗い部屋でのプロジェクタスライド用
  • 1.25 - かなりくらい部屋でのモニタ用 (これは15ルクスぐらいの環境光を前提にしたテレビ系を想定してる)
  • 1.125 - CG を見るとき典型的な 64ルクスぐらいの環境光を前提にした場合 (ITU-R BT.709 っていう放送規格?と一緒らしい?)

viewing gamma 1.125 を想定していて、display gamma 2.2 を設定しろ、ということは、viewing gamma 1.0 に正規化すると display gamma は 1.956 相当になる。

だけど、普通のオフィスとか家庭の環境だと、200ルクスぐらいは少なくともあるらしいので、sRGB が想定している環境からはだいぶ離れている? 明るい環境ならもっと小さなガンマ値を設定しないといけないはずだけど、どうやって求めたらいいかわからない。

とはいえ、現実的には昨今 display gamma は 2.2 にしとくのが無難っぽいのでそれほど深く考えても無駄な感じがする。

2013年 01月 24日

スクリーンショット

サイドにグレーの帯をひくデザインにしてみた。最初 18% グレーとかにしたんだけど、濃すぎたのでやめた。文字の場合は帯まで伸びず、写真やコードの場合は帯まで占有するようにした。

前まではこういう単純な帯でも画像をつくったりする必要があったけど、CSS のグラデーションのおかげで、かなり楽になった。今回は固定サイズの帯だけど、CSS でやるなら割合で適用できるので、フレキシブルになったなあと思う。

設定していたウェブフォントに Bold がなかったためか、ブラウザによってはだいぶ汚いボールドのエミュレーションがかかっている状態だったので、別のウェブフォントに変えた。あんまり複数スタイルを持っているウェブフォントがなくて難儀する。

前に使っていたフォント (Mate SC) はちょっとオールドっぽい感じものだったけど、今設定してる Merriweather はスッキリしててモダンになった気がする。

2013年 01月 23日

一行の文字数が長すぎるのが問題だなあとずっと思っているけど、綺麗に解決する方法がいまいち思いつかない。考えられる方法としては

  • max-width: 40em する
  • 文字のサイズを大きくする

あたりかなあと思うのだけれど、max-width を設定した場合、余ったスペースはどうするのかという問題が生じるし、文字のサイズを大きくする場合、そうはいっても限度があるだろう (100dpi 程度で 16px ぐらいが限界に感じる) という思いがある。

最近のハイエンドモニタ事情

最近はカラーマネジメント対応モニタが7万円から買える感じになりつつあるようだ。

  • DELL U2713H 7万ぐらい
  • LG FLATRON 27EA83-D 7万ぐらい (キャリブレーター付き。Windows 向けのみ )
  • EIZO ColorEdge CX270-CN 12万ぐらい (キャリブレーションソフト付属・キャリブレーター別)

どれもハードウェアキャリブレーションが一応ついているっぽいが、DELL と LG は Mac 向けのドライバを提供していないのでそもそも Mac だと意味がない。ついでに特定のキャリブレーターを使わないとダメな仕様のようで残念感が高い。

いずれも DisplayPort で 10bit 入力を受け付けるモニタなのだけれど、現状の Mac だと Mac Pro でハイエンドなグラボをつけない限り 10bit 出力ができないので意味がない。10bit で表示できる環境がつくれるならハードウェアキャリブレーションはいらないんじゃないかと素人考えだと思うけど、どうなんだろう (10bit で出せないんだから考えるだけ無駄だけど)

Windows にしても 10bit 出力できるハードがどれほどあるのか疑問がある。というか 10bit で見ても、たぶん 8bit と殆どかわらないように見えると思う。

ColorEdge は安心感があると思うけど、価格差がかなりあって厳しく、素人にはいずれの機能にしてもそれほど重要ではないような気がするので、どれか選ぼうと思うと DELL かなあという気持ち。

2013年 01月 21日

カラーマネジメント

いくつか疑問点があって、自分の中で整理しきれてないので一度まとめてみる。カラーマネジメントは今年中にマスターしたい。

前提

  • 写真の現像処理をする
  • 閲覧環境
    • PCモニタ
    • ウェブ
    • プリント
  • プリントとは色を確実にあわせたい
  • PCモニタを通常出回っている範囲からあまり変えたくない (ウェブも見るので)
  • ウェブ経由で他の人に見てもらう場合もあまりずれないようにしたい

設定決め

他の人の環境は変えることができないので、そこから導いて平均的な環境で色がそこそこはマッチするようにしたい。統計とかがあればいいんだけど、とりあえず以下のようなモデル環境で考える

  • モダンブラウザを使っている (ICC プロファイル v2 ぐらいには対応している)
  • メーカー出荷状態で使っている (最近は6500K、ガンマ2.2あたり?)
  • そこそこ明るい環境でモニタを見ている

すると必然的にできるだけ近い範囲でモニタを設定したくなるので、6500K ガンマ 2.2 をターゲットにしたい感じがする。

写真プリントの場合、普通は 5000K の照明環境で見ることが前提らしいので、部屋の照明は 5000K にすべきっぽい。

でもこれでプリントと色をあわせることができるのかよくわからない。モニタの白色点を 6500K にすれば、5000K 環境下で見たプリントの白と色が変わってしまうような気がする。

  • そもそもモニタの白色点を 6500K にするのは間違い?
  • 環境光を 5000K にするのが間違い? (でも 6500K は部屋の照明としては青すぎる……)
  • モニタの白色点を 6500K にしても、5000K 環境下でプリンタをキャリブレーションすれば色はずれない? (プリント時にカーラマッチングされる?)

たぶん一番下であってるような気がするから、これで一旦やってみればいいのかなあ。


色空間まわりは

  • Web 画像の色空間は?
    • AdobeRGB に設定
      • 受け手側でプロファイルを解釈してくれることを期待する
      • 解釈してくれない環境だと残念 (モダンブラウザでは問題ないはず…)
    • sRGB に設定
      • 最悪受け手側でプロファイルを解釈してくれなくても比較的普通 (だけど、そもそもそんな環境だと色がずれてそう)
      • 色域が当然狭い
  • プリントの色空間は?
    • プリントできる範囲で最大に
    • 作業環境は AdobeRGB の色域にして、ソフト校正でプロファイルをシミュレーションしてできるだけ色を確認する

ウェブの場合、どうやっても厳密な色で閲覧してもらうことは不可能なので、人間の眼のホワイトバランス調整機能を活用するために #FFFFFF をうまくつかったデザインに変えるべきな気がするなあ。

白ベース背景に黒縁つける感じのがいいのかなあ。人間のホワイトバランス調整をうまく機能させるために効果的な方法を知りたい。錯視の本とか読んだらわかるのかな