目次 — 知りたいところから読む
入力を変えて確かめる
実験パネルを開き、実行を押すとPythonを読み込みます。停止と初期値へのリセットができます。結果はこの端末内で計算します。Pythonのインストールは不要です。
下にあるローカル実行の手順は、配布ソースを再現するための任意の手順です。ブラウザ実験には不要です。
まず比較する
「変換なし」を実行してAに保存し、「線形露出 +1 EV」と「符号化値のゲイン2倍」を比べてください。画像をタップするかx/yを入力すると、同じ座標の変換前後のCとYを確認できます。表示を勾配に切り替え、クリッピングで境界がどう変わるか調べます。共有URLは入力条件を保存し、Aの結果や表示座標は保存しません。
操作画面は日本語・英語に対応しています。Pythonのインストールは不要です。
画素値と相対輝度
Cは0〜1の符号化されたグレー値です。このLabではR=G=BのsRGBと仮定し、復号した値を線形相対輝度Yとします。C=0.5はY≈0.214です。カメラやディスプレイを校正した値ではなく、物理的な輝度cd/m²には換算できません。
処理の順序
EVは線形Yを2^EV倍します。その後0〜1に制限してsRGBへ戻し、符号化値のゲインとオフセット、中心0.5のコントラスト、再度の制限、ガンマ補正の順で処理します。γ>1は中間値を明るくします。ゲインとオフセットの直後には制限しません。最初のクリップで消えた違いは、後で暗くしても戻りません。
Y = decode_sRGB(C) × 2^EV
C₁ = encode_sRGB(clamp(Y, 0, 1))
z = gain × C₁ + offset
z = 0.5 + contrast × (z − 0.5)
C_out = clamp(z, 0, 1)^(1/gamma)
数値の読み方
ヒストグラムは32等分した区間の実画素数です。左端を含み、最後の区間のみ右端の1も含みます。CとYは別々に集計します。平均Yは各画素を復号してから平均した値です。勾配は右・下との差の大きさを159×119点で求めます。画像はC=0〜1、勾配は0〜√2の固定表示です。クリップ数は制限前の0未満・1超過を数え、ちょうど0または1の画素とは区別します。重複を除いた画素数も表示します。
| 条件 | 平均C | 平均Y | 平均勾配 [C/px] | クリップ画素数 |
|---|---|---|---|---|
| 変換なし | 0.33267188 | 0.16471655 | 0.01921348 | 0 |
| 線形露出 +1 EV | 0.43543366 | 0.26062524 | 0.02188713 | 3331 |
| 符号化ゲイン2倍 | 0.52753125 | 0.31717897 | 0.01868123 | 4081 |
| コントラスト3倍 | 0.21255208 | 0.21255208 | 0.03113539 | 19200 |
| 低コントラスト | 0.46653438 | 0.18743543 | 0.00384270 | 0 |
| 露出 −2 EV | 0.16257348 | 0.04117914 | 0.01078320 | 0 |
| ガンマ2 | 0.54494622 | 0.30339745 | 0.01418886 | 0 |
| 低テクスチャ | 0.41000000 | 0.14130621 | 0.00075472 | 0 |
画像認識へのつながり
低コントラストと低テクスチャのプリセットを比較してください。共有の合成画像を特徴点抽出・マッチング・オプティカルフローでも使っています。勾配の変化は検出器への入力を変え、明るさの変化はフローの明るさ一定の仮定を破る場合があります。このLabのヒストグラムだけで検出・対応・追跡の精度は測れません。
コメント
コメントの投稿にはログインが必要です
まだコメントはありません。