ガンマ補正

ガンマ補正ないしガンマは、ビデオないし静止画システムで輝度ないし三刺激値を符号化および復号するために使用される非線形操作である。もっとも単純な場合、ガンマ補正は以下のべき乗則表現で定義される：

ここで負にならない実数の入力値は乗され、定数//A//が掛けられて出力値が得られる。1=//A// = 1}} の一般的な場合では、入力と出力は通常0-1の範囲にある。

ガンマ値 において、この圧縮べき乗則の非線形性を使用して符号化するプロセスはガンマ圧縮と呼ばれる。

1. 解説
-----

画像のガンマ符号化は、ヒトが明るさと色を知覚する際の非線形性を利用して、画像を符号化する際のビット割り当ての最適化や、画像伝送の帯域幅を最適化するために使用される。明度に対するヒトの知覚は、一般的な照明条件下では、おおむねべき関数に従い、明るいトーンよりも暗いトーンの方が相対的な違いに対する感度が、明るさの知覚に関するスティーヴンスのべき法則に一致して高くなる。もしも画像がガンマ符号化されていないと、ヒトが弁別できない高輝度部分に過剰なビット割り当てや帯域幅の割り当てがなされ、ヒトが敏感で、同じ視覚的品質を維持するためにより多くのビット/帯域幅を必要とする暗部に割り当てられるビット数や帯域幅が少なすぎることになる。浮動小数点形式の画像は、すでに対数曲線の区分的線形近似となっているため、ガンマ符号化は不要である。

もともとは、ガンマ符号化はブラウン管ディスプレイの入出力特性を補正するために開発されたが、今日のシステムにおいては主たる目的でも利点でもない。CRTディスプレイでは光の強度は電子銃の電圧に対して非線形に変化する。ガンマ圧縮によって入力信号を補正するとこの非線形性がキャンセルされ、出力画像を目的の輝度にすることができる。しかしながら、表示装置のガンマ特性は画像およびビデオのガンマ符号化には影響せず、表示装置のガンマ特性に関わらず信号の視覚的品質を最大化するためにガンマ符号化が求められている。ビデオ伝送に必要なガンマ符号化の逆特性と、CRTの物理的特性の類似性は偶然と工学の組み合わせであり、初期のテレビ受像機の電子回路を簡潔なものにした。

2. 数学
-----

例えば、sRGBのデータの復号ガンマは2.2だが、しばしば実際の指数は2.4であると言われる。これは区分分解の正味の効果が、必然的に範囲内の各点で変化する即時ガンマだからで、0でのγ = 1から、最大輝度でのγ = 2.4まで変化し、その中央値が2.2近傍となる。変換は数値の問題を引き起こす可能性がある//K// = 0 での無限大の傾きを回避するために、0に近い線形部分で特定のガンマを近似するように設計できる。曲線の連続性条件は、線形領域の閾値を与える：

について解くと、通常は丸められる2つの解が与えられる。しかしながら、傾きを一致させるためには

とする必要がある。2つの未知数が および と見なせる場合、次のように解くことができる

3. 一般化ガンマ
---------

ガンマの概念は任意の非線形な関係に適用できる。 べき乗則の関係 では、両対数プロットの線分は直線であり、すべての場所で傾きがガンマと等しくなる：

このことは、対数軸でプロットされた場合にガンマが入出力の傾きとして視覚化できることを意味する。べき乗則曲線では、この傾きは定数だが、このアイデアは任意のタイプの曲線に拡張でき、その場合にはガンマは、特定領域での曲線の傾きとして定義される。

4. フィルム撮影
---------

写真フィルムが光にさらされると、露光の結果は露出を横軸にとり、縦軸にフィルム濃度ないし透過率の対数をとったもので表される。特定のフィルムの配合と現像方法にたいして、この曲線はこのフィルムの感度測定となる。両方の軸が対数の単位を使用するので、この曲線の直線部分の傾きはフィルムのガンマと呼ばれている。一般にネガフィルムのガンマは1未満であり、ポジフィルムでは、通常絶対値が1よりも大きなガンマを有している。

写真フィルムは、印画紙で再現できるよりも色合いの微小な差異を記録する能力がはるかに優れている。同様に、ほとんどのビデオ画面は一般的な電子カメラで撮影することのできる明るさの範囲を表現することができない。 このため、元の画像を表現するための狭い再現範囲での選択にはかなりの芸術的な努力がはらわれている。ガンマ補正ないしコントラストの選択は、再現画像を調整するためのパラメーターの一部である。

同様に、ディジタル・カメラは通常線形に応答する電子センサーを使用して光を記録する。線形のRAWデータを従来のRGBデータに描画する処理では、色空間変換と、描画変換が実行される。特に、ほとんどすべての標準的なRGB色空間とファイル形式では、写真再現の原色の所定の強度の非線形符号化が使用され、さらに、所定の再現では、ほとんどの場合にトーン再生の非線形性を介して、測定されたシーンの強度に非線形に関連している。

5. Microsoft Windows、Mac、sRGB および テレビ/ビデオの標準ガンマ
-----------------------------------------------

ほとんどのコンピューターディスプレイシステムでは、画像は約0.45のガンマで符号化され、逆数となる2.2のガンマで復号される。注目すべき例外は、Mac OS X 10.6がリリースされるまでは0.55のガンマで符号化され、1.8のガンマで復号していたMacintoshコンピューターである。いずれの場合も、静止画ファイルのバイナリー・データは、動画ファイルと同様に明示的に符号化される。システムは、出力装置のガンマとのよりよい一致が必要な場合には、両方の場合にさらにカラーマネージメントシステムを介してオプションで管理することができる。

ほとんどのカメラ、PCおよびプリンターで使われているsRGB色空間規格は、上記のような単純なべき乗則の非線形性を採用していないが、右図に示すように、ほとんどの範囲で2.2に近い復号用ガンマ値を有している。0.04045の圧縮値ないし0.00313の線形の光強度を下回ると、曲線は線形となるため、この部分では 1=//γ// = 1}} となる。赤い曲線の背後にある黒い破線は、比較のための標準的な 1=//γ// = 2.2}} のべき乗則曲線である。

CRTを基にしたテレビ受像機およびモニターは、送信または保存される画像ファイルの標準ビデオ信号に、CRTのガンマ伸張後に適切な画像を提供するガンマ圧縮が施されているため、通常は追加のガンマ補正は必要としない。テレビ信号の場合、実際のガンマ値はビデオ規格によって定義され、常に固定された既知の値である。

コンピューターでのガンマ補正は、たとえば、画像のガンマを変換することにより γ = 1.8 のアップルの画像を、 γ = 2.2 のPCモニターで正しく表示するために使用される。別の用法としては、モニターのばらつきを補正するために、個々の色チャンネルのガンマを均等にするのに使用される。

6. ガンマのメタ情報
-----------

Color management#Application level}}一部の画像形式では、画像の所定のガンマをメタデータとして保存できるので、表示システムの指数がわかっていれば自動ガンマ補正が容易に行える。PNG仕様には、この目的のためのgAMAチャンクが含まれており、JPEGやTIFFなどの形式ではEXiF Gammaタグが使用できる。

これらの機能は、当時の主要なWebブラウザーでの実装が不十分だったため、Webで使用すると歴史的に問題を引き起こしてきた。この状況は、Google ChromeおよびMozilla Firefoxがガンマに関するメタデータを正しく処理できるようになったので改善された。

7. ビデオ・ディスプレイのべき乗
-----------------

「ガンマ特性」は、テレビシステムで符号化されたルーマと、実際に所望の画像の明るさとの関係を近似する、べき乗則の関係である。

この非線形の関係では、符号化された輝度の等間隔のステップは、主観的に等しい明るさのステップにほぼ対応している。エブナーとフェアチャイルドは、指数として0.43を使用して線形の光強度を、ニュートラルな明るさへと変換し、その逆数がグレーのほぼ最適な近く符号化を提供することがわかった。

以下の図は、線形に増加する符号化された輝度信号を使用するスケールと、線形に増加する光強度を使用するスケールの違いを示している。

ほとんどのディスプレイでは、線形強度スケールでは強度値0.0と0.1の間で知覚される明るさが大きくジャンプするが、スケールの上限側ではほとんど知覚できない。非線形に強度が増加するガンマ符号化スケールでは、知覚される明るさのステップがはるかに均一になる。

例えば、ブラウン管では、印加されたビデオ電圧に対する電子銃の強度が非線形な関数となっているため、ビデオ信号を非線形に光に変換する。 光強度 //I// と、供給された電圧 //V//sの関係は

となる。ここで、//γ// はギリシア文字のガンマである。CRTの場合、明るさと電圧の関連を示すガンマは、通常2.35～2.55の範囲であり、コンピューターのビデオ・ルックアップ・テーブルは通常はシステム・ガンマを1.8～2.2範囲に調子するが、これはこのセクション上部の図が示すように、均一な符号の変化が、ほぼ均一な明るさに対する知覚の変化をもたらす領域にある。

単純のために白黒のCRTを例にとる。この場合、0.5のビデオ信号がディスプレイに供給されると、強度は0.22となる。純粋な黒と純粋な白はガンマの影響を受けないただ二つの色となる。

この影響を補償するために、逆伝達関数がビデオ信号に適用される場合があり、この場合はエンド・ツー・エンドの応答は線形になる。言い換えれば、送信される信号は所定の形で歪まされているので、表示装置で再び歪まされることによって視聴者は正しい明るさで見ることができる。上記の関数の逆関数は

であり、ここで //V//c は補正された電圧、//V//s は、例えば光電荷を線形に電圧に変換する撮像素子から供給された電圧である。CRTの例では 1///γ// は 1/2.2 ≈ 0.45 となる。

カラーCRTは3系統のビデオ信号を受け入れ、一般には各色ごとのガンマ値 //γR//、//γG//、//γB//を有している。しかしながら、単純なディスプレイ・システムでは3色に同一の //γ// の値が使用される。

他の表示装置のガンマ値は異なっており、例えばゲームボーイアドバンスのディスプレイは照明状態によって変化する3～4のガンマ値を有している。ノートPCなどの液晶ディスプレイでは、信号電圧 //V//s と、強度 //I// の関係は非常に非線形であり、ガンマ値では説明することができない。しかしながら、このようなディスプレイ装置では、標準的な 1=//γ// = 2.5}} として動作するために、信号電圧を補正している。NTSCのテレビ録画では、 1=//γ// = 2.2}} となっている。

べき乗則関数は0で傾き無限大となる。これはガンマ色空間への変換および逆変換において問題を引き起こす。このことから、sRGBのようなほとんどの正式に定義された色空間では0の近傍で線形部分を定義し、 //x// + //K//}} をべき乗して曲線の傾きを連続にしている。この直線部分はCRTの動作を表すものではないが、曲線の残りの部分をCRTへの周辺光の影響によってより厳密に一致させる。このような式では、指数はガンマとはならず、例えば、sRGBの関数は2.4乗を使用しているが、直線部分がない指数2.2のべき乗則関数に近いものとなっている。

8. コンピューターで表示ガンマ補正を行う方法
-----------------------

一般的なガンマ2.2ないし1.8のコンピューター・ディスプレイで表示する画像を補正するためにガンマ符号化を行うには、最大4つの要素を操作することができる。

所与の画像ファイル内のピクセルの強度値、すなわちバイナリーのピクセル値は線形符号化ではなく、ガンマ圧縮された値で光強度を表すように保存される。これは、再生中のガンマ復号ステップを最小化し、所与のストレージでの画質を最大化するために、DVD動画のようなディジタルビデオファイルで体系的に実施される。同様に、標準の画像ファイル形式のピクセル値は通常、sRGBのガンマや、ICCプロファイルなどのメタデータで指定されたガンマに従ってガンマ補正されている。もしも符号化のガンマが、再生システムのガンマと一致していない場合は、ディスプレイでの補正や、異なるプロファイルの修正された画像ファイルを生成するため補正が行われることもある。
描画ソフトウェアはガンマ符号化されたピクセルのバイナリー値を直接ビデオメモリーないしビデオカードのCLUTレジスターに書き込む。これらはディスプレイに比例した電圧を出力するデジタル-アナログ変換回路を駆動する。例えば、24ビットRGBカラー使用時には、ビデオメモリーに128を書き込むと、比例した約0.5の電圧がディスプレイに出力され、モニターの動作によって暗く表示される。その代わりに、約50%の光強度を得るために、ガンマ符号化されたルックアップテーブルを適用して、描画ソフトウェアによって128ではなく、187近辺の値を書き込むことができる。
最新のビデオカードには、モニターに電圧を出力するDACの前段に符号化された信号をディジタルで修正するために適切なガンマ補正ルックアップテーブルを1回ロードできる専用のキャリブレーションCLUTがある。これらのテーブルを正しく設定することを「ハードウェアキャリブレーション」と呼ぶ。
一部の最新のモニターでは、ユーザーがガンマ動作を操作して、モニター自体で入力された信号を表示する前に補正することができる。これも「ハードウェアキャリブレーション」技術ではあるが、上記の場合のようにディジタル値を再マッピングするのではなく、アナログ信号に対して実施される。正しくキャリブレーションされたシステムでは、各コンポーネントは、それぞれの入出力用に特定のガンマを有している。各段階ではさまざまな要件を修正するためにガンマを変更する場合があり、最終的に出力装置で線形の光強度の領域を得るために、必要に応じてガンマ復号ないし補正を行う。すべての符号化及び補正メソッドは、異なるコンポーネント間で相互にこの事実を知ることなしに任意に重ね合わせることができので、正しく実施されなかった場合にはこれらの変換が非常に歪んだ結果につながる可能性があるものの、規格や規則にしたがって正しく実施された場合にはシステムが正しく機能することになる。

例えば、カメラからJPEGファイルを介して表示するような典型的なシステムでは、ガンマ補正の役割にはいくつかの協調部分が含まれている。カメラは保存と送信のために、描画された画像を2.2などの標準的なガンマ値の一つを使てJPEGファイルに符号化する。表示するコンピューターはピクセル値をビデオメモリーに格納する前に、カラーマネージメントエンジンを使用して別の色空間に変換する場合がある。モニターは、ビデオシステムで使用されるガンマとCRTガンマを一致させるために独自のガンマ補正を行うう場合がある。標準インターフェイスを介して、各コンポーネントを標準のガンマ値で調整することで、このようなシステムを適切に構成することが可能になる。

9. 簡単なモニターテスト
-------------

この手順は、プロファイルが使用されていなシステムや、タグがない元画像がsRGB色空間にあると想定するシステムで、モニターに画像をほぼ正しく表示させるのに有効である。

テストパターンにおいて、それぞれの単色のバーの強度は、周囲の縞模様のディザの平均強度となるように意図されており、理想的には指定されたガンマに正しく調整されたシステムでは、単色部分と縞模様部分が同じ明るさで表示されるはずである。

通常、ビデオカードはコントラストおよびブライトネス制御を備えており、半透過液晶ディスプレイはコントラスト、ブライトネスに加えてバックライト制御を備えている。ビデオカードとモニターのブライトネスおよびコントラストは有効なガンマに影響を与えるため、ガンマ補正が完了した後で変更してはいけない。

テスト画像の上部の2本のバーはコントラストとブライトネスを正しく設定するのに用いられる。それぞれに8つの3桁の数字が表示されている。適切にキャリブレーションされたよいモニターでは、両方のバーの右から6つの数字が表示されるが、安価なモニターでは4つの数字しか表示されない。

RGBの色領域では数字が書かれた単色部分と周囲の市松模様の部分の明るさが等しく見えれば、その数字のガンマ値でほぼ正しくガンマ補正がなされている。多くの場合、各色のガンマ補正値はわずかに異なっている

色温度ないし白色点の設定はモニター調整の次の段階である。

ガンマ補正を行う前にモニターの制御機能を使って所望のガンマと色温度を設定する必要がある。ガンマ、コントラストおよびブライトネスの制御機能を使って、液晶ディスプレイのガンマ補正は特定の垂直方向の視野角、すなわちモニターの特定方向の水平方向のライン、特定のブライトネスとコントラストのレベルでのみ行うことができる。ICCプロファイルを使えば、モニターを複数の輝度レベルで調整すすことができる。モニターの品質によって、この操作点からどれだけずれても満足のいくガンマ補正ができるかが決定される。原色あたり6ビットの色深度を有するツイステッド・ネマティックディスプレイがもっとも低品質である。一般的に8ビットの色深度を備えたIPS方式ディスプレイの方が優れている。優れたモニターは10ビットの色深度を持ち、ハードウェアによるカラーマネージメントを備え、三刺激値測色計によるハードウェアキャリブレーションが可能である。多くの場合、6ビット＋フレームレートコントロールパネルは8ビットとして、8ビット＋FRCパネルは10ビットとして販売されている。FRCは追加のビットの真の代替とはならない。24ビットおよび32ビットの色深度フォーマットは、各色8ビットである。

Microsoft Windows 7以降では、ディスプレイカラーキャリブレーションツール dccw.exe やその他のプログラムを使ってガンマ補正を設定することができる。これらのプログラムはICCプロファイルファイルを作成し、それをデフォルトで読み込む。これによってカラーマネージメントが容易になる。dccwプログラムのガンマ・スライダーを、最後の色の領域が、市松模様の部分と、単色の部分で同じ明るさになるまで増加させる。他の二色を調整するには、ガンマ補正プログラムのカラーバランスないしここの色のガンマ補正スライダーを使用する。古いビデオカードのドライバーの中には、スタンバイやハイバネーション・モードから復帰した際に、カラールックアップテーブルを正しく読み込めず、誤ったガンマで表示するものがある。このような場合にはビデオカードのドライバーをアップデータをする必要がある。

X Window Systemが動作する一部のOSでは、ガンマ補正係数を0.9に設定するコマンド xgamma -gamma 0.9や、ガンマ補正係数の現在の値を確認するコマンド xgamma を実行することでガンマ補正係数を設定することができる。macOSシステムでは、ガンマ補正や、その他の画面調整はシステム環境設定で行われる。

9.1. スケーリングとブレンディング
-------------------

このテスト画像はスケーリングが行われておらず、色調整も行われていない "raw" の状態で画面に表示した場合にのみ有効である。しかし、この画像はソフトウェアに多く見られる物理的に正しい線型空間ではなく、ガンマを持つ色空間でスケーリングを行うという別の問題を指摘するのにも役立つ。ガンマが約2.2のsRGB色空間では、線形に拡大縮小した場合に50%のサイズで2.2の結果になるはずである。ヨナス・ベルリンはこの原理に基づいて「あなたのスケーリングソフトウェアは最悪／ルール違反」画像を作っている。

さらに、この問題はスケーリングだけではなく、JPEGのガンマ対応Y'CbCrにおけるクロマ・サブサンプリングのような、他の形式のダウンサンプリングにも当てはまる。WebPはこの問題を解決するために線型空間で彩度の平均を計算した後にガンマ有効空間に変換しており、大きな画像の場合には反復的な解法が用いられている。同じ「sharp YUV」のコードがsjpegで使用されている。Kornelskiはルーマを元にした加重平均による、より単純な近似を提示している。アルファブレンド、カラーグラデーションおよび3Dレンダリングもこの問題の影響を受ける。

逆説的だが、画像をアップサンプリングした場合、「間違った」ガンマ対応空間で処理された結果の方が美的に優れている傾向がある。これは、拡大用フィルターは線型空間でのリンギングアーティファクトを最小化するように調整されているが、人間の知覚は非線形であり、ガンマによってより適切に近似されるためである。アーティファクトをトリミングする別の方法としては、シグモイド光伝達関数を使用する方法があり、これはGIMPのLoHaloフィルターが先駆けとなり、後にmadVRが採用した手法である。

10. 用語
------

強度という用語は、単位としてルクスを用い、単位時間および単位表面積から放射される光束の量を示している。 この量は科学の多くの分野では、異なる量である光度と対照的に、照度と呼ばれることに注意が必要である。 ただし、これらの区別はガンマ圧縮にはほとんど関係がなく、ガンマ圧縮はあらゆる種類の正規化された線形強度のようなスケールに適用可能である。

「輝度」はビデオや画像の中でいくつかの意味を持っている。

「輝度」は、ヒトの目の波長依存の感度を考慮した、物体の測光的な明るさである。
「相対輝度」は、色空間符号化で使用される、白レベルに対する相対的な輝度である。
「ルーマ」は符号化されたビデオの輝度信号であり、信号電圧 //VS// と同等である。色彩の概念としての相対輝度と、映像の概念としてのルーマを対比して、相対輝度を //Y// と表し、ガンマ圧縮をプライム記号で表現してルーマを //Y'// と表す。ルーマは輝度から直接は求められず、ガンマ圧縮されたRGBコンポーネントの加重和であることに注意が必要である。

同様に、「明るさ 」は、主観的な視覚特性によってより適切に適用されるが、光のレベルを含むさまざまな測定に用いられることがある。

ガンマ補正は、指数がギリシア文字のガンマで表されるべき乗則関数の一種である。数学のガンマ関数と混同しないように注意が必要である。小文字の //γ// は前者のパラメータを意味し、大文字の Γ は後者の名前である。「関数」と言う語をガンマ補正と組み合わせて使う場合は、「一般化されたべき乗則関数」とすることで混乱を回避できる。

文脈抜きだとガンマと言うラベルが付いた数値は符号化値および復号値のどちらの可能性もある。 与えられたガンマ値ないしその逆数を適用して正しく補正するために注意が必要である。一般的な用語としては、多くの場合に復号値は、ガンマ符号化するために適用する必要がある実数であるその逆数ではなく、符号化値であるかのように使用される。

10.1. 「ガンマ」という用語の非推奨化
---------------------

ガンマは放送工学およびプロの映画・テレビ業界で一般的に受け入れらている用語である 。しかしながら、以下のような混乱がある：

定数 G}} を有する関数 //x//G}} を意味する用語。
G}} が1.0でないことを意味する用語。
「ガンマ関数」に、DPXファイルのように値の対数として格納されているデータからの返還を含めるかどうか。
あるいは、EXRファイルのようなIEEE浮動小数点2進表現からの変換や、YUVからRGBへの復号も含めるのかどうかも問われている。CIEでは、1つ以上の色チャンネルに適用される数学的な関数に、「色成分伝達関数」という用語を用いている。

IEC 61966-2-1ではガンマや実効ガンマという用語を使用せずに、「ディスプレイ入出力特性」や「符号化特性」という用語を定義している。IECは "infomative"とラベルを付けた非規範的なセクションである付属書Aで、このこのとの正当性を説明している。付属書Aは、ガンマという用語の簡単な歴史から始まり、この用語が何らかの形で曖昧であるという、参照されていない、裏付けのないいくつかの主張、そして最後に、この用語は有害であり、IECはこの用語を使用しないことを選択したという最後通告をしている。この用語が一般的に理解され、業界やその他の標準文書で使用されているにも関わらずである。その結果、IECは文書61966-2-1ではガンマと言う用語の代わりに「ディスプレイ出力特性」、「単純なべき関数」、「指数関数で表される正規化出力輝度」などの用語を使用している。

IECのガンマと言う用語に対する見解は、ICC、SMPTE、ITU、NABなどのた他の標準化団体では採用されておらず、現在でも上述のようにガンマは業界で一般的に使用されている。このため、本項では単純で一般的な理解のためにガンマと言う用語を使用している。

11. 脚注
------

12. 関連項目
--------

ホワイトバランス
カラーマネージメントシステム
カラーコレクション
色温度
コントラスト
輝度 
ルーマ
相対輝度
光学伝達関数 
ポストプロダクション
テレシネ
白色点

13. 外部リンク
---------

13.1. 一般情報
----------

[1]
[2] by Charles Poynton
[3]
[4] by Computer Graphics Systems Development Corporation
Stanford University CS 178 [5] about gamma correction.
[6], defines and explains //viewing gamma//, //camera gamma//, //CRT gamma//, //LUT gamma// and //display gamma//
[7]
[8]

13.2. モニター・ガンマ・ツール
------------------

[9]
[10]
[11] for correct gamma correction 
[12]