ガンマ補正

ガンマ補正（ガンマほせい、）ないしガンマは、ビデオないし静止画システムで輝度ないし三刺激値を符号化および復号するために使用される非線形操作である。もっとも単純な場合、ガンマ補正は以下のべき乗則表現で定義される：
ここで負にならない実数の入力値formula_2はformula_3乗され、定数"A"が掛けられて出力値formula_4が得られる。 の一般的な場合では、入力と出力は通常0-1の範囲にある。
ガンマ値formula_5 において、この圧縮べき乗則の非線形性を使用して符号化するプロセスはガンマ圧縮と呼ばれる。
解説.
画像のガンマ符号化は、ヒトが明るさと色を知覚する際の非線形性を利用して、画像を符号化する際のビット割り当ての最適化や、画像伝送の帯域幅を最適化するために使用される。明度（輝度）に対するヒトの知覚は、一般的な照明条件下（真っ暗でも目が眩むほど明るくもない）では、おおむねべき関数（ガンマ関数とは無関係）に従い、明るいトーンよりも暗いトーンの方が相対的な違いに対する感度が、明るさの知覚に関するスティーヴンスのべき法則に一致して高くなる。もしも画像がガンマ符号化されていないと、ヒトが弁別できない高輝度部分に過剰なビット割り当てや帯域幅の割り当てがなされ、ヒトが敏感で、同じ視覚的品質を維持するためにより多くのビット/帯域幅を必要とする暗部に割り当てられるビット数や帯域幅が少なすぎることになる。浮動小数点形式の画像は、すでに対数曲線の区分的線形近似となっているため、ガンマ符号化は不要である（逆効果になる可能性がある）。
もともとは、ガンマ符号化はブラウン管（CRT）ディスプレイの入出力特性を補正するために開発されたが、今日のシステムにおいては主たる目的でも利点でもない。CRTディスプレイでは光の強度は電子銃の電圧に対して非線形に変化する。ガンマ圧縮によって入力信号を補正するとこの非線形性がキャンセルされ、出力画像を目的の輝度にすることができる。しかしながら、表示装置のガンマ特性は画像およびビデオのガンマ符号化には影響せず、表示装置のガンマ特性に関わらず信号の視覚的品質を最大化するためにガンマ符号化が求められている。ビデオ伝送に必要なガンマ符号化の逆特性と、CRTの物理的特性の類似性は偶然と工学の組み合わせであり、初期のテレビ受像機の電子回路を簡潔なものにした。
数学.
例えば、sRGBのデータの復号ガンマは2.2だが、しばしば実際の指数は2.4であると言われる。これは区分分解の正味の効果が、必然的に範囲内の各点で変化する即時ガンマだからで、0でのγ = 1から、最大輝度でのγ = 2.4まで変化し、その中央値が2.2近傍となる。変換は数値の問題を引き起こす可能性がある"K" = 0 での無限大の傾きを回避するために、0に近い線形部分で特定のガンマを近似するように設計できる。曲線formula_6の連続性条件は、線形領域の閾値formula_7を与える：
formula_9について解くと、通常は丸められる2つの解が与えられる。しかしながら、傾きを一致させるためには
とする必要がある。2つの未知数が formula_9 および formula_12 と見なせる場合、次のように解くことができる
一般化ガンマ.
ガンマの概念は任意の非線形な関係に適用できる。 べき乗則の関係 formula_15 では、両対数プロットの線分は直線であり、すべての場所で傾きがガンマと等しくなる（傾きは、ここでは微分作用素で表される）：
このことは、対数軸でプロットされた場合にガンマが入出力の傾きとして視覚化できることを意味する。べき乗則曲線では、この傾きは定数だが、このアイデアは任意のタイプの曲線に拡張でき、その場合にはガンマ（厳密には「ポイントガンマ」）は、特定領域での曲線の傾きとして定義される。
フィルム撮影.
写真フィルムが光にさらされると、露光の結果は露出を横軸にとり、縦軸にフィルム濃度ないし透過率の対数をとったもので表される。特定のフィルムの配合と現像方法にたいして、この曲線はこのフィルムのとなる。両方の軸が対数の単位を使用するので、この曲線の直線部分の傾きはフィルムのガンマと呼ばれている。一般にネガフィルムのガンマは1未満であり、ポジフィルム（スライドフィルム、リバーサルフィルム）では、通常絶対値が1よりも大きなガンマを有している。
写真フィルムは、印画紙で再現できるよりも色合いの微小な差異を記録する能力がはるかに優れている。同様に、ほとんどのビデオ画面は一般的な電子カメラで撮影することのできる明るさの範囲（ダイナミックレンジ）を表現することができない。 このため、元の画像を表現するための狭い再現範囲での選択にはかなりの芸術的な努力がはらわれている。ガンマ補正ないしコントラストの選択は、再現画像を調整するためのパラメーターの一部である。
同様に、ディジタル・カメラは通常線形に応答する電子センサーを使用して光を記録する。線形のRAWデータを従来のRGBデータに描画する処理（例えば、JPEG形式で画像を記録するため）では、色空間変換と、描画変換が実行される。特に、ほとんどすべての標準的なRGB色空間とファイル形式では、写真再現の原色の所定の強度の非線形符号化（ガンマ圧縮）が使用され、さらに、所定の再現では、ほとんどの場合にトーン再生の非線形性を介して、測定されたシーンの（光）強度に非線形に関連している。
Microsoft Windows、Mac、sRGB および テレビ/ビデオの標準ガンマ.
ほとんどのコンピューターディスプレイシステムでは、画像は約0.45のガンマで符号化され、逆数となる2.2のガンマで復号される。注目すべき例外は、Mac OS X 10.6（Snow Leopard）がリリースされるまでは0.55のガンマで符号化され、1.8のガンマで復号していたMacintoshコンピューターである。いずれの場合も、静止画ファイル（JPEGなど）のバイナリー・データは、動画ファイル（MPEGなど）と同様に明示的に符号化される（つまり、線形の強度ではなく、ガンマ符号化された値を有している）。システムは、出力装置のガンマとのよりよい一致が必要な場合には、両方の場合にさらにカラーマネージメントシステムを介してオプションで管理することができる。
ほとんどのカメラ、PCおよびプリンターで使われている規格は、上記のような単純なべき乗則の非線形性を採用していないが、右図に示すように、ほとんどの範囲で2.2に近い復号用ガンマ値を有している。0.04045の圧縮値ないし0.00313の線形の光強度を下回ると、曲線は線形（光強度に比例する符号値）となるため、この部分では となる。赤い曲線の背後にある黒い破線は、比較のための標準的な のべき乗則曲線である。
CRTを基にしたテレビ受像機およびモニターは、送信または保存される画像ファイルの標準ビデオ信号に、CRTのガンマ伸張後に適切な画像を提供するガンマ圧縮（正確な逆特性）が施されているため、通常は追加のガンマ補正は必要としない。テレビ信号の場合、実際のガンマ値はビデオ規格（NTSC、PAL、SECAM）によって定義され、常に固定された既知の値である。
コンピューターでのガンマ補正は、たとえば、画像のガンマを変換することにより γ = 1.8 のアップルの画像を、 γ = 2.2 のPCモニターで正しく表示するために使用される。別の用法としては、モニターのばらつきを補正するために、個々の色チャンネルのガンマを均等にするのに使用される。
ガンマのメタ情報.
一部の画像形式では、画像の所定のガンマ（符号化された画像のサンプルと、光出力の間の変換）をメタデータとして保存できるので、表示システムの指数がわかっていれば自動ガンマ補正が容易に行える。PNG仕様には、この目的のためのgAMAチャンクが含まれており、JPEGやTIFFなどの形式ではEXiF Gammaタグが使用できる。
これらの機能は、当時の主要なWebブラウザーでの実装が不十分だったため、Webで使用すると歴史的に問題を引き起こしてきた。この状況は、Google Chrome（および、他のすべてのChromiumベースのブラウザー）およびMozilla Firefoxがガンマに関するメタデータを正しく処理できるようになったので改善された。
ビデオ・ディスプレイのべき乗.
「ガンマ特性」は、テレビシステムで符号化されたルーマ（輝度）と、実際に所望の画像の明るさとの関係を近似する、べき乗則の関係である。
この非線形の関係では、符号化された輝度の等間隔のステップは、主観的に等しい明るさのステップにほぼ対応している。エブナーとフェアチャイルドは、線形の光強度を、ニュートラルな明るさ（ルーマ）へと変換し、その逆数（約2.33、一般的なディスプレイ・システムで使用されている値2.2に非常に近い）がグレーのほぼ最適な近く符号化を提供することがわかった。
以下の図は、線形に増加する符号化された輝度信号を使用するスケール（線形ガンマ圧縮輝度入力）と、線形に増加する光強度を使用するスケール（線形輝度出力）の違いを示している。
ほとんどのディスプレイ（ガンマが約2.2のもの）では、線形強度スケールでは強度値0.0と0.1の間で知覚される明るさが大きくジャンプするが、スケールの上限側ではほとんど知覚できない。非線形に強度が増加するガンマ符号化スケールでは、知覚される明るさのステップがはるかに均一になる。
例えば、ブラウン管（CRT）では、印加されたビデオ電圧に対する電子銃の強度（明るさ）が非線形な関数となっているため、ビデオ信号を非線形に光に変換する。 光強度 "I" と、供給された電圧 "V"sの関係は
となる。ここで、"γ" はギリシア文字のガンマである。CRTの場合、明るさと電圧の関連を示すガンマは、通常2.35～2.55の範囲であり、コンピューターのビデオ・ルックアップ・テーブルは通常はシステム・ガンマを1.8～2.2範囲に調子するが、これはこのセクション上部の図が示すように、均一な符号の変化が、ほぼ均一な明るさに対する知覚の変化をもたらす領域にある。
単純のために白黒のCRTを例にとる。この場合、0.5のビデオ信号（中間のグレイを表す）がディスプレイに供給されると、強度（明るさ）は0.22（中間のグレイで、白の22%の強度）となる。純粋な黒（0.0）と純粋な白（1.0）はガンマの影響を受けないただ二つの色となる。
この影響を補償するために、逆伝達関数（ガンマ補正）がビデオ信号に適用される場合があり、この場合はエンド・ツー・エンド（光入力から光出力まで）の応答は線形になる。言い換えれば、送信される信号は所定の形で歪まされているので、表示装置で再び歪まされることによって視聴者は正しい明るさで見ることができる。上記の関数の逆関数は
であり、ここで "V"c は補正された電圧、"V"s は、例えば光電荷を線形に電圧に変換する撮像素子から供給された電圧である。CRTの例では 1/"γ" は 1/2.2 ≈ 0.45 となる。
カラーCRTは3系統のビデオ信号（赤、緑、青）を受け入れ、一般には各色ごとのガンマ値 "γR"、"γG"、"γB"を有している。しかしながら、単純なディスプレイ・システムでは3色に同一の "γ" の値が使用される。
他の表示装置のガンマ値は異なっており、例えばゲームボーイアドバンスのディスプレイは照明状態によって変化する3～4のガンマ値を有している。ノートPCなどの液晶ディスプレイでは、信号電圧 "V"s と、強度 "I" の関係は非常に非線形であり、ガンマ値では説明することができない。しかしながら、このようなディスプレイ装置では、標準的な として動作するために、信号電圧を補正している。NTSCのテレビ録画では、 となっている。
べき乗則関数は（逆関数も）0で傾き無限大となる。これはガンマ色空間への変換および逆変換において問題を引き起こす。このことから、sRGBのようなほとんどの正式に定義された色空間では0の近傍で線形部分を定義し、 （"K" は定数）をべき乗して曲線の傾きを連続にしている。この直線部分はCRTの動作を表すものではないが、曲線の残りの部分をCRTへの周辺光の影響によってより厳密に一致させる。このような式では、指数はガンマとはならず、例えば、sRGBの関数は2.4乗を使用しているが、直線部分がない指数2.2のべき乗則関数に近いものとなっている。
コンピューターで表示ガンマ補正を行う方法.
一般的なガンマ2.2ないし1.8のコンピューター・ディスプレイで表示する画像を補正するためにガンマ符号化を行うには、最大4つの要素を操作することができる。
正しくキャリブレーションされたシステムでは、各コンポーネントは、それぞれの入出力用に特定のガンマを有している。各段階ではさまざまな要件を修正するためにガンマを変更する場合があり、最終的に出力装置で線形の光強度の領域を得るために、必要に応じてガンマ復号ないし補正を行う。すべての符号化及び補正メソッドは、異なるコンポーネント間で相互にこの事実を知ることなしに任意に重ね合わせることができので、正しく実施されなかった場合にはこれらの変換が非常に歪んだ結果につながる可能性があるものの、規格や規則にしたがって正しく実施された場合にはシステムが正しく機能することになる。
例えば、カメラからJPEGファイルを介して表示するような典型的なシステムでは、ガンマ補正の役割にはいくつかの協調部分が含まれている。カメラは保存と送信のために、描画された画像を2.2などの標準的なガンマ値の一つを使てJPEGファイルに符号化する。表示するコンピューターはピクセル値をビデオメモリーに格納する前に、カラーマネージメントエンジンを使用して（以前のMacintoshの 色空間などの）別の色空間に変換する場合がある。モニターは、ビデオシステムで使用されるガンマとCRTガンマを一致させるために独自のガンマ補正を行うう場合がある。標準インターフェイスを介して、各コンポーネントを標準のガンマ値で調整することで、このようなシステムを適切に構成することが可能になる。
簡単なモニターテスト.
この手順は、プロファイルが使用されていなシステム（例えば、バージョン3.0以前のFirefoxブラウザーなど）や、タグがない元画像がsRGB色空間にあると想定するシステムで、モニターに画像をほぼ正しく表示させるのに有効である。
テストパターンにおいて、それぞれの単色のバーの強度は、周囲の縞模様のディザの平均強度となるように意図されており、理想的には指定されたガンマに正しく調整されたシステムでは、単色部分と縞模様部分が同じ明るさで表示されるはずである。
通常、ビデオカードはコントラストおよびブライトネス制御を備えており、はコントラスト、ブライトネスに加えてバックライト制御を備えている。ビデオカードとモニターのブライトネスおよびコントラストは有効なガンマに影響を与えるため、ガンマ補正が完了した後で変更してはいけない。
テスト画像の上部の2本のバーはコントラストとブライトネスを正しく設定するのに用いられる。それぞれに8つの3桁の数字が表示されている。適切にキャリブレーションされたよいモニターでは、両方のバーの右から6つの数字が表示されるが、安価なモニターでは4つの数字しか表示されない。
RGBの色領域では数字が書かれた単色部分と周囲の市松模様の部分の明るさが等しく見えれば、その数字のガンマ値でほぼ正しくガンマ補正がなされている。多くの場合、各色のガンマ補正値はわずかに異なっている
色温度ないし白色点の設定はモニター調整の次の段階である。
ガンマ補正を行う前にモニターの制御機能を使って所望のガンマと色温度を設定する必要がある。ガンマ、コントラストおよびブライトネスの制御機能を使って、液晶ディスプレイのガンマ補正は特定の垂直方向の視野角、すなわちモニターの特定方向の水平方向のライン、特定のブライトネスとコントラストのレベルでのみ行うことができる。ICCプロファイルを使えば、モニターを複数の輝度レベルで調整すすことができる。モニターの品質（および価格）によって、この操作点からどれだけずれても満足のいくガンマ補正ができるかが決定される。原色あたり6ビットの色深度を有するツイステッド・ネマティック（TN）ディスプレイがもっとも低品質である。一般的に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に設定するコマンド codice_1や、ガンマ補正係数の現在の値（デフォルトは1.0）を確認するコマンド codice_2 を実行することでガンマ補正係数を設定することができる（既存のガンマ値に適用される）。macOSシステムでは、ガンマ補正や、その他の画面調整はシステム環境設定で行われる。
スケーリングとブレンディング.
このテスト画像はスケーリングが行われておらず（画面に対して拡大縮小なし）、色調整も行われていない "raw" の状態で画面に表示した場合にのみ有効である。しかし、この画像はソフトウェアに多く見られる物理的に正しい線型空間ではなく、ガンマを持つ色空間でスケーリングを行うという別の問題を指摘するのにも役立つ。ガンマが約2.2のsRGB色空間では、線形に拡大縮小した場合に50%のサイズで2.2の結果になるはずである。ヨナス・ベルリン（Jonas Berlin）はこの原理に基づいて「あなたのスケーリングソフトウェアは最悪／ルール違反」画像を作っている。
さらに、この問題はスケーリングだけではなく、JPEGのガンマ対応Y'CbCrにおけるクロマ・サブサンプリングのような、他の形式のダウンサンプリング（縮小）にも当てはまる。WebPはこの問題を解決するために線型空間で彩度の平均を計算した後にガンマ有効空間に変換しており、大きな画像の場合には反復的な解法が用いられている。同じ「sharp YUV」（以前の「smart YUV」）のコードがsjpegで使用されている。Kornelskiはルーマを元にした加重平均による、より単純な近似を提示している。アルファブレンド、カラーグラデーションおよび3Dレンダリングもこの問題の影響を受ける。
逆説的だが、画像をアップサンプリング（拡大）した場合、「間違った」ガンマ対応空間で処理された結果の方が美的に優れている傾向がある。これは、拡大用フィルターは線型空間でのリンギングアーティファクトを最小化するように調整されているが、人間の知覚は非線形であり、ガンマによってより適切に近似されるためである。アーティファクトをトリミングする別の方法としては、シグモイド光伝達関数を使用する方法があり、これはGIMPのLoHaloフィルターが先駆けとなり、後にmadVRが採用した手法である。
用語.
強度という用語は、単位としてルクスを用い、単位時間および単位表面積から放射される光束の量を示している。
この量は科学の多くの分野では、異なる量である光度と対照的に、照度と呼ばれることに注意が必要である。
ただし、これらの区別はガンマ圧縮にはほとんど関係がなく、ガンマ圧縮はあらゆる種類の正規化された線形強度のようなスケールに適用可能である。
「輝度」はビデオや画像の中でいくつかの意味を持っている。
色彩の概念としての相対輝度（ガンマ圧縮されていない）と、映像の概念としてのルーマ（ガンマ圧縮されている）を対比して、相対輝度を "Y" と表し、ガンマ圧縮をプライム記号（’）で表現してルーマを "Y"' と表す。ルーマは輝度から直接は求められず、ガンマ圧縮されたRGBコンポーネントの（やや任意の）加重和であることに注意が必要である。
同様に、「」は、主観的な視覚特性によってより適切に適用されるが、光のレベルを含むさまざまな測定に用いられることがある。
ガンマ補正は、指数がギリシア文字のガンマ（γ）で表されるべき乗則関数の一種である。数学のガンマ関数と混同しないように注意が必要である。小文字の "γ" は前者のパラメータを意味し、大文字の Γ は後者の名前（および使用される記号）である（Γ("x")のように）。「関数」と言う語をガンマ補正と組み合わせて使う場合は、「一般化されたべき乗則関数」とすることで混乱を回避できる。
文脈抜きだとガンマと言うラベルが付いた数値は符号化値および復号値のどちらの可能性もある。
与えられたガンマ値ないしその逆数を適用して正しく補正するために注意が必要である。一般的な用語としては、多くの場合に復号値（2.2）は、ガンマ符号化するために適用する必要がある実数であるその逆数（この場合は1/2.2）ではなく、符号化値であるかのように使用される。
「ガンマ」という用語の非推奨化.
ガンマは放送工学およびプロの映画・テレビ業界で一般的に受け入れらている用語である
。しかしながら、以下のような混乱がある：
CIEでは、1つ以上の色チャンネルに適用される数学的な関数に、「色成分伝達関数」という用語を用いている。
IEC 61966-2-1ではガンマや実効ガンマという用語を使用せずに、「ディスプレイ入出力特性」や「符号化特性」という用語を定義している。IECは "infomative"（参考情報）とラベルを付けた非規範的なセクションである付属書Aで、このこのとの正当性を説明している。付属書Aは、ガンマという用語の簡単な歴史から始まり、この用語が何らかの形で曖昧であるという、参照されていない、裏付けのないいくつかの主張、そして最後に、この用語は有害であり、IECはこの用語を使用しないことを選択したという最後通告をしている。この用語が一般的に理解され、業界やその他の標準文書で使用されているにも関わらずである。その結果、IECは文書61966-2-1ではガンマと言う用語の代わりに「ディスプレイ出力特性」、「単純なべき関数」、「指数関数で表される正規化出力輝度」などの用語を使用している。
IECのガンマと言う用語に対する見解は、ICC、SMPTE、ITU、NABなどのた他の標準化団体では採用されておらず、現在でも上述のようにガンマは業界で一般的に使用されている。このため、本項では単純で一般的な理解のためにガンマと言う用語を使用している。