toruのブログ

月1くらいで記事書きたい。

ディスプレイが Gamma 2.4 と sRGB のどちらで表示しているかを確認するテストパターンの試作

0. お知らせ

2022.04.06 に記事の誤りを見つけ修正を行いました。主な修正箇所は以下です。

  • 作成したテストパターンに埋め込んでいた ICC Profile を除去
    • 作成したパターンは ICC Profile が働かない環境での目視評価を目的としていたため
  • 上記に伴い「Photoshop や Affinity Photo を使って確認すること」の文言を削除

誤りが生じた理由は、同時並行で書いていた別記事が ICC Profile を活用する記事だったからです…。色々と作業しているうちに脳がバグってしまいました。 (M氏は指摘をありがとうございました)

1. 背景と目的

  • 一般的なディスプレイは Gamma を手動で切り替えることができる(例: sRGB, 2.2, 2.4, 2.6)
  • ある調査 (※) のためにディスプレイの Gamma 設定が 2.4 なのか sRGB なのかを目視で判別できるテストパターンを作ることにした

※ この調査結果は別記事で紹介する予定

2. 結論

ディスプレイの Gamma 設定が 2.4 なのか sRGB なのかを目視で判別できるテストパターンを作成した。

2.1. テストパターン

作成したテストパターンを以下に示す(ダウンロード)。

zu 図1. 作成したテストパターン

左側と右側にそれぞれチェッカーボードが描画してある。チェッカーボードの Code Value はそれぞれ以下の通り。

  • 左側: 8 bit の Gamma 2.4 の 0 CV と 6 CV
  • 右側: 8 bit の Gamma 2.4 の 0 CV と 18 CV (sRGB だと 0 CV と 6 CV)

2.2. テストパターンを確認する環境

本パターンは(かなり特殊な環境であるが)カラマネが働かない環境で見ることを想定している。 別の言い方をすると、ディスプレイプロファイルに応じてテストパターンの Code Value (CV) が変化しない環境を想定している。

環境の一例を以下に挙げる

  • Windows 上で IrfanView などのビューアーソフトを使ってディスプレイに表示する
  • Blackmagic Design製 の DaVinci Resolve と DeckLink を組み合わせて、カラマネが働かない設定 (DaVinci YRGB) でディスプレイに表示する

2.3. 確認のしかた

作成したテストパターンは、ディスプレイの Gamma 設定に応じて以下の見え方となる。 2.4 と sRGB で見え方に明確な差が生じるため、目視でディスプレイの Gamma の判定が可能である(ただし、多少の訓練は必要)。

Gamma 左側のチェッカーボード 右側のチェッカーボード
2.4 ギリギリ見える ハッキリ見える
sRGB ハッキリ見える 左側よりハッキリ見える

2.4. より具体的な見え方の例

「ギリギリ見える」、「ハッキリ見える」などの表現だけだと伝わりにくいと思うため、具体的な例を以下に示す。 なお見やすいように画像は明るく加工してあり現実とは見え方が異なる。注意して頂きたい。

ディスプレイの Gamma 見え方 (分かりやすいように本来より明るくしてある)
2.4 f:id:takuver4:20220402152802p:plain:w400
sRGB f:id:takuver4:20220402152942p:plain:w400

3. 理論

今回作成したテストパターンは以下の性質を持っている。

  • ディスプレイの Gamma を 2.4 から sRGB に切り替えると見た目が大きく変化する

この性質をもつ 8 bit の CV (Code Value) を決定するため、始めに予備調査として以下のグラフをプロットした。

f:id:takuver4:20220402154934p:plain f:id:takuver4:20220402154436p:plain
図2. 予備調査のグラフ(全体) 図3. 左のグラフの 0~20 CV を拡大表示

グラフには3つのカーブがプロットしてある。それぞれ sRGB, Gamma 2.4, SMPTE ST 2084 (PQカーブ) である。 右側の拡大した図を見ると分かるように sRGB と Gamma 2.4 は黒輝度を 0.1 cd/m2、白輝度を 100 cd/m2 に設定した。これは筆者が自宅で使っているディスプレイのコントラスト比が 1000:1 だったからである。

SMPTE ST 2084 をプロットした理由はグラフに視覚の感度を反映するためである。

ST 2084 は人間の視覚特性に最適化されたカーブである。もの凄く粗い説明をすると 12bit 精度の ST 2084 では 1 CV の変化を人間は知覚することができない。逆に 10 bit 精度であれば 1 CV の変化は(視聴環境にも依るが)知覚できる[1]。

この性質を利用するため、右側のグラフでは 8 bit 精度の ST 2084 の値に対して水平線をプロットした。8 bit 精度ではあるものの、水平線の間隔は「その輝度における知覚可能な輝度差と相関のある」値となっている。別の言い方をすると、水平線の間隔が狭い場所では僅かな輝度の変化でも人間は輝度差を知覚する。その一方で水平線の感覚が広い場所では大きな変化が無ければ輝度差を知覚しない

この事実を考慮しつつ、右側のグラフの 0 CV6 CV に注目する。すると以下のことが分かる。

  • Gamma 2.4 では 0 CV と 6 CV の輝度差が少なく輝度差を知覚するのが困難
  • sRGB では 0 CV と 6 CV の輝度差が大きく輝度差を知覚するのが容易

この性質を考慮して、今回はテストパターンのチェッカーボードの CV を 0 CV と 6 CV に決定した。

この値はパターン左側のチェッカーボードに使用した。右側のチェッカーボードは 0 CV と 18 CV にした。理由は sRGB の 6 CV は Gamma 2.4 の 18 CV だからである(説明の詳細は割愛する)。

4. その他

4.1. 図3 の Gamma 2.4 のプロットについて

誰も気にしてないと思うが、もしかすると100万人に1人くらいは「図3 は 0 CV ~ 4 CV が潰れずに輝度差が生じてるが、ここは黒つぶれしてるケースも多いのでは?」と思うかもしれない。 一応、輝度差が生じるようにプロットした理由を明記しておく。

理由は、筆者が自宅で使っているディスプレイの Gamma 2.4 の特性がそうなっていたからである。 筆者は残念ながら輝度計を所有していないので正確な測定はできなかったのだが、ミラーレス1眼で 0 CV ~ 8CV の画面を撮影し(撮影データ 101MB)、下図のように明確な輝度差が生じていることを確認した。 そのため 図3 のようにプロットした。

f:id:takuver4:20220402215314p:plain:w480
図4. 自宅のモニターの 0 CV ~ 8 CV の特性のような何か

5. 感想

冒頭でも書いたが、元々は別の調査を行っていて、それについての記事を書く予定だった。 しかし、そちらの記事の文字数が多くなってしまったのでテストパターンについては別記事に分割することにした。 そのためこの記事が誕生した。

この記事で一番時間がかかった箇所は 図3 だった。事前調査で ITU-R BT.1886、ITU-R BT.2129、EBU TECH 3320、EBU TECH 3325 を読むハメになり(しかも結果的に読む必要が無かった)、その辺で時間を浪費してしまった。 次はもっと時間を効率良く使えるようになりたい。

参考資料

[1] Report ITU-R BT.2390-10, "High dynamic range television for production and international programme exchange", https://www.itu.int/pub/R-REP-BT.2390