【TA100】グラフィック2.6 ガンマ補正

とても良いビデオ

https://www.bilibili.com/video/BV15t411Y7cf/?spm_id_from=333.788.b_636f6d6d656e74.96&vd_source=6f3a5e0ac931d869aee3d7c9bb6847e0

1. ガンマ補正

1. 序章: 色空間

ここに画像の説明を挿入します
● 色空間の例 (詳細はセクション 2.1 を参照してください)
● 図からわかるように、sRGB と Rec.709 の色域はほぼ同じであり、三原色の位置も同じです。したがって、それらの違いは次のとおりです: 伝達関数が異なります。

2.伝達関数

●伝達関数とは
○色の値がわかった後、それを電子機器に表示するにはビデオ信号に変換する必要があり、変換には伝達関数が使用されます

● 伝達関数は 2 つの部分で構成されます。
○ 光電気伝達関数 (OETF)。シーンの線形光を非線形ビデオ信号値に変換します。
○ 電気光学伝達関数 (EOTF) は、非線形ビデオ信号値をディスプレイの輝度に変換します。
○簡単に理解:写真を撮るとビデオ信号で写真がメモリカードに保存され、その写真を見たい場合はビデオ信号を光信号に変換します。
ここに画像の説明を挿入します

3.ガンマ補正

ガンマ補正
ガンマ補正はなぜ必要ですか?

これは、初期の CRT モニタの出力輝度が入力電圧と非線形の関係、具体的には約 2.2 乗の関係を持ち、その結果、モニタの輝度がコンピュータに保存されている輝度よりも低くなるためであると考える人もいます。

例:コンピュータに保存されている明るさが 0.5 の場合(明るさの範囲は 0 ~ 1)、CRT モニタの出力明るさは 0.5 ではなく、約 0.218 になります。具体的な計算プロセスは次のとおりです。 0.5、モニターの出力輝度
ここに画像の説明を挿入します
○ ヴォウト=ビンガンマ

ここに画像の説明を挿入します
2.2 の指数がガンマ値であり、このディスプレイの非線形出力プロセスはガンマ拡張と呼ばれます。正しい出力を得るには、入力に対して 1/2.2 のべき乗演算を実行して入力を補正する必要があります。この補正プロセスはガンマ補正です。ガンマ補正後、モニターは正しく表示できるようになります。入力は次のとおりです
ここに画像の説明を挿入します
。 :
ここに画像の説明を挿入します

ガンマ補正は初期の CRT モニターの非線形出力の問題に由来しており、現在これらのモニターは基本的に廃止されており、今日のモニターはすでに線形出力を実現できるため、ガンマ補正を直接放棄することはできますか?
実際には、まだガンマ補正が必要です。その理由は、ガンマ補正により暗部の明るさの保存精度が向上するためです。

人間の目は、明るい (1 に近い) 輝度値よりも暗い (0 に近い) 輝度値に敏感なので、保存するには 8 ビット バイナリ (0 ~ 255 の整数を表現できる) のみを使用できます。明るさの値を設定すると、画像全体の暗い部分をできるだけ多く保持したいと考えます。

以下に例を示します。

0.240 と 0.243 の 2 つの明るさの値を保存したいとします。ガンマ補正が実行されない場合、画像の明るさの保存値は次のようになります。 0.240 と 0.243 の保存値は 133 になります
ここに画像の説明を挿入します
。と 134 があり、実際の表示効果は異なります。もちろん、ガンマ補正を行うと大きな輝度値の表現精度の低下が生じますが、例としては以下のとおりです:
ガンマ補正なし:
ここに画像の説明を挿入します
ガンマ補正あり:
ここに画像の説明を挿入しますガンマ補正なしで区別できる輝度値、ガンマ補正に達すると、馬が補正されると分離できなくなりました。
ただし、人間の目はたまたま暗い値に対してより敏感で、明るい値に対しては鈍感であるため、明るい詳細が失われても影響はありませんが、暗い詳細を保持することで画質が大幅に向上します。ガンマ補正は今のところできていますが、それでも使用する理由。

○ ガンマとは、線形三色値と非線形ビデオ信号の間のエンコードとデコードの操作を指します。
ここに画像の説明を挿入します・エンコードとデコードの理解: ○ 例:
■ 撮影した写真はコンピュータに保存されており、コンピュータは自然界の光信号をビデオ信号にエンコードしている ■ 写真を閲覧する際には、
ビデオ信号を線形光信号に復元してデコードする必要がある. 操作する

○ 図に示すように: 線形空間 (カメラによって捕捉された現実世界の光信号) + ガンマ エンコーディング + モニター表示 = 結果 ○ ·
画像
を例として使用します:
○ ガンマ エンコーディング:
■ 左側の画像は、捕捉された画像を示しています。ハードディスクに保存される物理データ データは、ガンマ値約 0.4 で一度マッピングされます。このプロセスはガンマ エンコーディングと呼ばれます。 ■ 写真からわかるように、このときの画像は実際の
物理ピクセルよりも明るくなります (写真は必ずしも実際の状況ではなく、明るさの増加を直感的に表現したものです) を表します)
○ ガンマ補正:
■ 中央の画像を表示する場合、各ピクセルに約 2.2 のガンマ値の補正が必要となるため、最終的な表示は結果は正しい物理データです。
○ ガンマ補正後は、それまで明るかった画像の明るさが下がっていることがわかります。

・直線的に格納するのではなく、前後に変換してみませんか?
● ①人間の目の特性に関係する
○ 人間の目は暗い部分の変化に敏感です
● ② ストレージスペースと帯域幅を最適化するための非線形変換
○ 表示に使用する画像データはすべて 8 ビットです。帯域幅が広い場合は、シャドウ値を保存するためにより多くの場所を使用する必要があります。つまり、暗い部分は高い精度で保存され、明るい部分は比較的低い精度で保存されます。

2. ウェーバーの定理(ガンマ補正を使用する理由)

1. 芸術的均一性と物理的均一性

ここに画像の説明を挿入します
● 前述したように、人間の目は暗い部分に対して敏感です
。 ○ 上部は均一な視覚変化、下部は均一な物理量の変化です。
●補足:理論上、上の中間の灰色は物理量(下)の21.8%、芸術における視覚的な中間の灰色は物理的な灰色の20%程度です。

2.ガンマエンコード曲線

● ガンマエンコード曲線:
○ 人間が感じる均一なグレースケールと自然界の直線的に増加する明るさをマッピングしたものがガンマエンコード曲線です。 ● 図からわかるように

自然界の明るさの約 0.2 の明るさが、知覚される中間グレーに相当します。人間の目による (0.5)
○ 暗部の変化率が高く、人間の目が暗部の変化に敏感であることがわかります。
ここに画像の説明を挿入します

3. ウェーバーの法則

ここに画像の説明を挿入します
● 人間の言葉で言えば、
○ 受ける刺激が大きくなると、明らかな変化を感じるほど刺激を強くする必要がありますが、中強度の刺激にのみ適しています。

3. CRT の非線形応答 (ガンマ補正を使用するもう 1 つの理由)

1.CRTと変換機能

● CRT(ブラウン管)
○ 本機の明るさは電圧に対して直線的な関係はなく、ガンマ値約 2.2 とべき乗則のような関係になります。
○ CRT の物理的特性により、明るさを暗くするだけ、つまり左側の画像が明るくなったときに、右側の表示を明るさを下げて補正すると、正常に表示できる程度の結果になります。
■ 上記の前提は、同じ条件下 (明るい環境と暗い環境が異なると、表示される結果が異なる場合があります) であり、取得する中間グレーの値は特定の値を指すものではないことに注意してください。

2. 中程度のグレー値

● いわゆるニュートラルグレー値は特定の値ではなく、人間の目の特定の感覚です
● 例で証明できます
○ 最初の写真では、AB の色が異なることがはっきりとわかります
ここに画像の説明を挿入します

下の写真では、AB を接続するだけで、実際には同じ色であることがわかります (影によって周囲が暗くなります)
//ps: 信じられない場合は、スニペーストを使用して写真の A と B を取得できます。 1 2 色、実際には 1 色であることがわかります
ここに画像の説明を挿入します

4.直線的なワークフロー

1. コースの内容
● テクニカル アートの場合、グラフィック効果の作成や修正に何度も触れるため、上記の内容を知っているだけでは十分ではありません。
● このとき、正しいワークフローが必要です。
ここに画像の説明を挿入します
● 線形ワークフロー:
○ 最終出力データを最初の入力物理データと一致させるという目的を達成するために、各リンクでガンマ エンコーディング/デコーディングを正しく使用します。
○ ガンマ空間マップを使用する場合は、シェーダーに渡す前にガンマ空間からリニア空間に変換する必要があります。
■ 目的は、シェーダーでレンダリング計算を行うときに線形空間のカラー値を使用して、表示エラーが発生しないようにすることです。
● 線形空間でレンダリング作業を実行しない場合に発生する可能性のある問題:

○ ① 明るさを重ね合わせると、
非線形空間での明るさの重ね合わせが白飛び(明るさ > 1)になっていることがわかります
■ ガンマ空間でのガンマエンコード後の明るさの値が以前よりも大きくなるためです。
ここに画像の説明を挿入します
○ ②色を混合する場合
■ 混合前に非線形色変換を行わないと、単色の境界部分に黒いエッジが発生します。
ここに画像の説明を挿入します

○ ③ 照明を計算する場合
■ 照明のレンダリングを計算する場合、非線形空間(視覚)における茶灰色の 0.5 を実際の物理的な光強度 0.5 として計算すると、左のような状況になります。 ■ 表示空間では下
側値は 0.5 ですが、レンダリング スペースでの実際の物理的な光の強度は 0.18 です (右図を参照)。
ここに画像の説明を挿入します

ここに画像の説明を挿入します

5. Unity の色空間

1. Unity でカラー スペースを選択します
● メニュー -> プロジェクト設定 -> プレーヤー タブ -> その他の設定のレンダリング セクションをクリックし、カラー スペースを変更することでガンマ/リニア (リニア) を選択できます
ここに画像の説明を挿入します

● ガンマ スペースが選択されている場合
○ Unity はいかなる操作も実行しません (デフォルトのガンマ)
● リニア スペースが選択されている場合
○ エンジンのレンダリング プロセスはリニア スペースで計算されます。理想的には、プロジェクトはリニア スペースのテクスチャ カラーを使用します。 sRGB を確認する必要があります;
● sRGB を確認しますか?
○ sRGB テクスチャにチェックを入れると、Unity はハードウェアの特性によりサンプリング時に線形変換を実行します。

2.ハードウェアサポート

● 現在、線形空間のハードウェアをサポートできるプラットフォームは次のとおりです
○ Windows、Mac OSx、Linux (スタンドアロン)
○ Xbox One
○ PS4
○ Android (OpenGL ES3.0)
○ IOS (Metal)
○ WebGL
● Unity は主に次の 2 つのハードウェアを使用します
○ sRGB フレーム バッファをサポートします
。 ■ Shader 計算結果をディスプレイに出力する前にガンマ補正を実行します。
■ テクスチャとして読み込まれる場合、保存されたカラーは sRBG 空間からリニア空間に自動的に変換されます。
■ ReadPixels()、ReadBackImage() を呼び出すときは、は、sRGB 空間のカラーを直接返します。
■ sRBG フレーム バッファは、チャネルあたり 8 ビットの形式のみをサポートし、float 浮動小数点形式はサポートしません。 ■
HDR がオンになった後、レンダリング結果は最初に配置されます。 FB を浮動小数点形式で描画し、最終的に sRGB に描画して FB に出力します。
○ sRGB サンプラー
■ sRBG テクスチャをリニア サンプリングに変換
● ハードウェア機能を使用して、sRGB テクスチャのリニア サンプリングとシェーダー計算結果のガンマ補正を完了します。これは、シェーダー内でテクスチャ サンプリングと計算結果を補正するよりも高速です。

6. 資源輸出の問題/注意事項

1.SubstancePainter
○ SubstancePainter マップをエクスポートすると、リニア カラー値がガンマ エンコードされるため、色が明るくなります。
○ この時点で、このテクスチャはサンプリング時に線形値に復元できるように Unity の sRBG オプションをチェックする必要があります。
ここに画像の説明を挿入します
2.PS
● PS から画像を書き出す場合、ガンマ係数を 1 に設定すると、Unity の sRBG オプションにチェックを入れる必要はありません; ● PS で
何も設定しない場合は、Unity の sRGB オプションにチェックを入れます。
ここに画像の説明を挿入します
● ドキュメント カラー プロファイル
○ PS はカラー マネージメントが非常に正確です。Unity で表示される色は、モニターのガンマ変換を受ける必要がありますが、PS では必要ありません。PS はモニターのカラー プロファイルを読み取り、それを逆補正します。
■ (言い換えれば、ps にあるのは実際のカラー値です)。
○PS自体はグレースケール値によって色の表示を制御するシステムを持っています(通常、この値はモニターのガンマ値と一致しているため、Unityで見られる効果と同じように見えます)。グレースケールを変更することができます最終的な色の表示を変更する値。
● 半透明エフェクト
○ Unity の場合:
■ Unity が半透明のミキシングを実行する場合、まず線形空間に変換してからミキシングします。
○ PS の場合:
■ PS レイヤー間でミキシングする場合、各上位レイヤーはカラー プロファイルを読み取ります。 (ガンマ値)を設定し、ブレンドする前にガンマ変換を行うと、結果はより暗くなります。
■ (ワークスペースの設定で変更し、ガンマを使用して RGB カラーを混合することを選択し、パラメータを 1 に設定して、レイヤーが最終的な直接混合結果になるようにすることができます)
ここに画像の説明を挿入します
● 非線形マッピング (つまりガン​​マ補正) を行う場合は、アート グレー スケールの中間グレーを中央まで上げて、明るい部分と暗い部分の両方を 128 サンプルに割り当てられるようにします。この方法で保存されたものは、人間の目にとって快適/正常な結果です。
②ガンマ補正関数の理解
● べき乗関数 y=xgamma です
● 白と黒に対応して (1,1) と (0,0) を必ず通過します
● ガンマの値について
○ ガンマ=1 の場合、関数つまり y=x、入力値 = 出力値、つまり補正は行われません。 ○
ガンマ > 1 の場合、関数イメージが抑制され、入力値が抑制されます。

線形空間画像の説明を追加してください
ガンマー空間
画像の説明を追加してください

おすすめ

転載: blog.csdn.net/weixin_45810196/article/details/131105988