
ガンマ補正またはガンマは、ビデオや画像の輝度をエンコードおよびデコードするために使用される非線形演算です。[ 1 ]
ガンマ補正は、最も単純な場合、次のべき乗則式で定義されます。
ここで、非負の実数入力値パワーに上げられますそして定数Aを掛けて出力値を得る。一般的なケースであるA = 1の場合、入力と出力は通常 0~1 の範囲になります。
ガンマ値はエンコーディングガンマと呼ばれることもあり、この圧縮べき乗則非線形性を用いたエンコーディングのプロセスはガンマ圧縮と呼ばれます。逆に、ガンマ値はこれはデコードガンマと呼ばれ、拡張べき乗則非線形性の適用はガンマ展開と呼ばれます。
画像のガンマ符号化は、人間が光と色を非線形的に知覚する性質を利用して、画像を符号化する際のビットの使用、または画像を伝送するために使用される帯域幅を最適化するために使用されます。[ 1 ]一般的な照明条件(真っ暗でも眩しすぎるほど明るくもない)における人間の明るさ(明度)の知覚は、近似的なべき関数(ガンマ関数とは関係がない)に従い、明るいトーン間の相対的な差よりも暗いトーン間の相対的な差に対して感度が高く、明るさの知覚に関するスティーブンスのべき乗法則と一致します。画像がガンマ符号化されていない場合、人間が区別できないハイライトにビットまたは帯域幅が多すぎ、人間が敏感で同じ視覚品質を維持するためにより多くのビット/帯域幅を必要とするシャドウ値にはビットまたは帯域幅が少なすぎます。[ 2 ] [ 1 ] [ 3 ]浮動小数点画像のガンマ符号化は不要です(逆効果になる可能性があります)。浮動小数点形式はすでに対数曲線の区分的線形近似を提供しているためです。[ 4 ]
ガンマ符号化は元々 、陰極線管(CRT)ディスプレイの輝度特性を補正するために開発されましたが、現代のシステムではそれが主な目的や利点ではありません。CRTディスプレイでは、光強度は電子銃電圧に対して非線形に変化します。ガンマ圧縮によって入力信号を変更することで、この非線形性を打ち消し、出力画像が意図した輝度を持つようにすることができます。しかし、ディスプレイデバイスのガンマ特性は、画像やビデオのガンマ符号化には影響しません。ディスプレイデバイスのガンマ特性に関係なく、信号の視覚品質を最大化するためにガンマ符号化が必要です。[ 1 ] [ 3 ] CRTの物理法則とビデオ伝送に必要なガンマ符号化の逆の類似性は、偶然とエンジニアリングの組み合わせであり、初期のテレビセットの電子回路を簡素化しました。[ 5 ]
写真フィルムは、印刷された紙に再現できるよりもはるかに細かい色調の違いを記録する能力に優れています。同様に、ほとんどのビデオ画面は、一般的な電子カメラで捉えることができる明るさの範囲(ダイナミックレンジ)を表示できません。[ 6 ] このため、元の画像を表示する縮小形式を選択する際に、かなりの芸術的努力が費やされます。ガンマ補正、つまりコントラスト選択は、再現された画像を調整するために使用される写真技術の一部です。
同様に、デジタルカメラは、通常は線形応答を示す電子センサーを使用して光を記録します。線形RAWデータを従来のRGBデータ(例えば、 JPEG画像フォーマットへの保存用)に変換する過程では、色空間変換とレンダリング変換が行われます。特に、ほぼすべての標準的なRGB色空間とファイルフォーマットは、写真再現における原色の意図された強度を非線形エンコーディング(ガンマ圧縮)で表現します。さらに、意図された再現は、トーン再現の非線形性を介して、測定されたシーンの強度とほぼ常に非線形な関係にあります。
ガンマの概念は、あらゆる非線形関係に適用できます。べき乗則の関係の場合対数-対数プロット上の曲線は直線であり、傾きはどこでもガンマに等しい(傾きはここでは微分演算子で表される)。
つまり、ガンマは、対数軸上にプロットしたときの入出力曲線の傾きとして視覚化できます。べき乗則曲線の場合、この傾きは一定ですが、この考え方はあらゆる種類の曲線に拡張でき、その場合、ガンマ(厳密には「点ガンマ」[ 7 ])は、特定の領域における曲線の傾きとして定義されます。

写真フィルムに光が照射されると、その露光結果は、横軸に露光量の対数、縦軸に濃度、または透過率の負の対数を示すグラフで表すことができます。特定のフィルム組成と処理方法の場合、この曲線はそのフィルムの特性曲線またはハーター・ドリフィールド曲線と呼ばれます。[ 8 ] [ 9 ]両方の軸が対数単位を使用しているため、曲線の線形部分の傾きはフィルムのガンマと呼ばれます。ネガフィルムは通常、ガンマが 1 未満です。[ 9 ] [ 10 ]ポジフィルム (スライドフィルム、リバーサルフィルム) は通常、ガンマの絶対値が 1 より大きいです。[ 11 ]
CRT ベースのテレビ受信機やモニターへの出力では、通常、追加のガンマ補正は必要ありません。送信または画像ファイルに保存される標準ビデオ信号には、CRT のガンマ拡張に一致するガンマ圧縮が組み込まれています (ただし、正確な逆ではありません)。テレビ信号の場合、ガンマ値は固定されており、アナログビデオ規格によって定義されています。NTSCカラーに関連付けられているCCIR システム Mはガンマ 2.2 を使用し、PALまたはSECAMカラーに関連付けられているシステムB / G、H、I、D / K、K1、L、M、およびNはガンマ 2.8 を使用します。[ 12 ] [ 13 ]
ほとんどのコンピュータディスプレイシステムでは、画像はガンマ値約0.45でエンコードされ、その逆数であるガンマ値2.2でデコードされます。2009年9月にMac OS X 10.6(Snow Leopard)がリリースされるまでは、 Macintoshコンピュータは例外で、ガンマ値0.55でエンコードされ、ガンマ値1.8でデコードされていました。いずれにしても、静止画像ファイル(JPEGなど)のバイナリデータは明示的にエンコードされており(つまり、線形強度ではなくガンマエンコードされた値を保持しています)、動画ファイル( MPEGなど)も同様です。出力デバイスのガンマ値とのより良い一致が必要な場合は、システムはカラーマネジメントによって、これらの両方のケースをさらに管理することができます。

ほとんどのカメラ、PC、プリンターで使用されているsRGBカラースペース規格は、上記のような単純なべき乗則の非線形性ではなく、右/上のグラフに示すように、その範囲の大部分でデコードガンマ値が2.2付近になります。圧縮値が0.04045、または線形強度が0.00313未満の場合、曲線は線形(エンコードされた値が強度に比例)であるため、γ = 1となります。比較のために、赤い曲線の後ろにある破線の黒い曲線は、標準的なγ = 2.2のべき乗則曲線です。
コンピュータにおけるガンマ補正は、例えば、ガンマ値1.8のApple製画像を、ガンマ値2.2のPCモニターに正しく表示するために、画像のガンマ値を変更するなどの用途に用いられます。また、モニター間の表示のずれを補正するために、各カラーチャンネルのガンマ値を均一化する用途もあります。
一部の画像フォーマットでは、画像の意図されたガンマ(エンコードされた画像サンプルと光出力間の変換)をメタデータとして保存できるため、自動ガンマ補正が容易になります。PNG仕様にはこの目的のためにgAMAチャンクが含まれており[ 14 ] 、JPEGやTIFFなどのフォーマットではExif Gammaタグを使用できます。一部のフォーマットでは、転送関数を含むICCプロファイルを指定できます。
これらの機能は、特にウェブ上で、これまで問題を引き起こしてきました。HTML や CSS の色、およびカラープロファイルメタデータが添付されていない JPG や GIF 画像の場合、一般的なブラウザはカラー管理なしで数値カラー値をディスプレイに渡していたため、デバイス間で表示が大きく異なっていました。しかし、同じブラウザは、メタデータでガンマが明示的に設定された画像をカラー管理で送信し、メタデータが省略された PNG 画像にはデフォルトのガンマを適用していました。このため、PNG 画像がすべてのデバイスで HTML やタグなし JPG の色と同時に一致することは不可能でした。[ 15 ] [ 16 ] [ 17 ]この状況はその後改善され、現在ではほとんどの主要ブラウザがガンマ設定(またはその欠如)をサポートしています。[ 18 ] [ 19 ]
ガンマ特性とは、テレビシステムで符号化された輝度と実際の望ましい画像輝度との関係を近似するべき乗則の関係のことである。
この非線形関係では、符号化された輝度の等間隔のステップは、明るさの主観的な等間隔のステップにほぼ対応します。EbnerとFairchild [ 20 ]は、ニュートラルカラーの線形強度を明度(輝度)に変換するために指数0.43を使用しました。その逆数である約2.33(一般的なディスプレイサブシステムについて引用されている2.2という数値に非常に近い)は、グレーの知覚的符号化をほぼ最適に提供することが分かりました。
次の図は、線形的に増加する符号化輝度信号(線形ガンマ圧縮輝度入力)を持つスケールと、線形的に増加する強度スケール(線形輝度出力)を持つスケールの違いを示しています。
ほとんどのディスプレイ(ガンマ値が約2.2のもの)では、線形輝度スケールでは、輝度値0.0と0.1の間で知覚される明るさが大きく変化する一方、スケールの高輝度側の段階的な変化はほとんど知覚できないことがわかります。一方、非線形的に増加する輝度を持つガンマ符号化スケールでは、知覚される明るさの段階的な変化がより均一になります。
例えば、CRTは、印加されるビデオ電圧の関数としての電子銃の強度(明るさ)が非線形であるため、ビデオ信号を非線形な方法で光に変換します。光強度Iは、ソース電圧Vsと次の関係にあります。
ここでγはギリシャ文字のガンマです。CRTの場合、輝度と電圧の関係を表すガンマは通常2.35から2.55の範囲です。コンピュータのビデオルックアップテーブルは通常、システムガンマを1.8から2.2の範囲に調整します[ 1 ]。これは、このセクションの上部の図に示すように、均一なエンコード差がほぼ均一な知覚輝度差をもたらす領域です。
分かりやすくするために、モノクロ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の間で変化します。ノートパソコンなどのLCDでは、信号電圧Vsと輝度Iの関係は非常に非線形であり、ガンマ値で表すことはできません。しかし、このようなディスプレイでは、信号電圧に補正を適用して、おおよそ標準的なγ = 2.5の動作を実現します。NTSCテレビ録画では、γ = 2.2です。
べき乗関数、またはその逆関数は、ゼロで傾きが無限大になります。このため、ガンマ色空間との間で変換する際に問題が生じます。このため、sRGBなどの正式に定義された色空間のほとんどは、ゼロ付近に直線部分を定義し、x + K ( Kは定数) をべき乗として加えることで、曲線が連続的な傾きを持つようにします。この直線はCRTの動作を表すものではありませんが、曲線の残りの部分をCRTに対する周囲光の影響により近いものにします。このような式では、指数はガンマではありません。たとえば、sRGB関数では2.4のべき乗を使用していますが、線形部分のない2.2のべき乗関数により近いものとなっています。
最大4つの要素を操作することで、ガンマエンコーディングを実現し、一般的な2.2ガンマまたは1.8ガンマのコンピュータディスプレイに表示される画像を補正することができます。
正しく校正されたシステムでは、各コンポーネントは入力および/または出力エンコーディングに対して指定されたガンマを持ちます。[ 22 ]ステージはさまざまな要件を補正するためにガンマを変更することができ、最終的に出力デバイスは必要に応じてガンマデコードまたは補正を行い、線形強度領域に到達します。すべてのエンコーディングおよび補正方法は、異なる要素間でこの事実を相互に認識することなく任意に重ね合わせることができます。これらの変換が正しく行われなかった場合、非常に歪んだ結果につながる可能性がありますが、標準および慣例に従って正しく行われた場合、適切に機能するシステムにつながります。
一般的なシステム、例えばカメラからJPEGファイルを経てディスプレイに至る場合、ガンマ補正の役割は複数の部品が連携して担います。カメラは、レンダリングした画像を標準ガンマ値(例えば2.2)を用いてJPEGファイルにエンコードし、保存および送信します。ディスプレイコンピュータは、カラーマネジメントエンジンを用いて、ピクセル値をビデオメモリに格納する前に、異なるカラースペース(例えば、旧型Macintoshのγ =1.8カラースペース)に変換する場合があります。モニターは、CRTのガンマ値をビデオシステムで使用されるガンマ値に合わせるために、独自のガンマ補正を行う場合があります。標準インターフェースを介して各コンポーネントを連携させ、デフォルトの標準ガンマ値を用いることで、このようなシステムを適切に構成することが可能になります。

この手順は、プロファイルを使用しないシステム(例えば、バージョン3.0より前のFirefoxブラウザやその他多くのシステム)や、タグなしのソース画像がsRGBカラースペースにあると想定するシステムにおいて、モニターが画像をほぼ正しく表示するのに役立ちます。
テストパターンでは、各実線部分の輝度は、周囲の点線部分の輝度の平均値となるように設定されています。したがって、理想的には、指定されたガンマ値に適切に調整されたシステムでは、実線部分と点線部分が同じ明るさで表示されるはずです。
通常、グラフィックカードにはコントラストと輝度の調整機能があり、透過型液晶モニターにはコントラスト、輝度、バックライトの調整機能があります。グラフィックカードとモニターのコントラストと輝度は実効ガンマに影響を与えるため、ガンマ補正が完了した後は変更しないでください。
テスト画像の上部にある2つのバーは、コントラストと明るさの適切な値を設定するのに役立ちます。各バーには3桁の数字が8つ表示されています。適切なキャリブレーションが施された良質なモニターでは、両方のバーの右側に6つの数字が表示されますが、安価なモニターでは4つの数字しか表示されません。
望ましい表示システムのガンマが与えられた場合、観察者が各色の領域の市松模様の部分と均一な部分で同じ明るさを見るならば、ガンマ補正はほぼ正しい。[ 23 ] [ 24 ] [ 25 ]多くの場合、原色のガンマ補正値はわずかに異なる。
モニター調整の次のステップは、色温度または白色点を設定することです。
ガンマ補正を行う前に、モニターのコントロールを使用して、希望するガンマと色温度を設定する必要があります。ガンマ、コントラスト、明るさのコントロールを使用すると、 LCDのガンマ補正は、特定の垂直視野角、つまりモニター上の特定の水平線、特定の明るさとコントラストレベルでのみ実行できます。ICCプロファイルを使用すると、モニターを複数の明るさレベルに調整できます。モニターの品質 (および価格) によって、この動作点からどれだけずれても満足のいくガンマ補正が得られるかが決まります。原色ごとに6 ビットの色深度を持つツイステッド ネマティック(TN) ディスプレイは、品質が最も低くなります。通常 8 ビットの色深度を持つインプレーン スイッチング(IPS) ディスプレイの方が優れています。優れたモニターは 10 ビットの色深度を持ち、ハードウェアカラー マネジメントを備え、三刺激色度計によるハードウェア キャリブレーションが可能です。多くの場合、6 ビット + FRCパネルは 8 ビットとして販売され、8 ビット + FRC パネルは 10 ビットとして販売されます。FRC は、より多くのビットの真の代替品ではありません。 24ビットおよび32ビットの色深度フォーマットは、原色ごとに8ビットを使用します。
Microsoft Windows 7 以降では、ディスプレイの色調整ツール dccw.exe またはその他のプログラムを使用してガンマ補正を設定できます。[ 26 ] [ 27 ] [ 28 ]これらのプログラムはICC プロファイルファイルを作成し、それをデフォルトとして読み込みます。これにより、カラー管理が容易になります。[ 29 ] dccw プログラムのガンマスライダーを、最後の色の領域 (多くの場合、緑色) が市松模様の領域と均一な領域で同じ明るさになるまで上げます。ガンマ補正プログラムのカラーバランスまたは個々の色のガンマ補正スライダーを使用して、他の 2 つの色を調整します。一部の古いグラフィック カード ドライバーは、スタンバイ モードまたは休止状態から復帰した後にカラー ルック アップ テーブルを正しく読み込まず、ガンマが間違っている場合があります。この場合は、グラフィック カード ドライバーを更新してください。
X Window System を実行している一部のオペレーティングシステムでは、xgamma -gamma 0.9ガンマ補正係数を 0.9 に設定するコマンドと、xgammaその係数の現在の値(デフォルト値は 1.0)を照会するコマンドを発行することで、ガンマ補正係数(既存のガンマ値に適用される)を設定できます。macOS システムでは、ガンマやその他の関連する画面キャリブレーションは、システム環境設定を通じて行います。
一般的に、ピクセル値に対する操作は「線形光」(ガンマ 1) で行う必要があります。エリック・ブラッスールはこの問題について詳しく説明し、テスト画像を提供しています。[ 30 ]これらの画像は、広く蔓延している問題を指摘しています。多くのプログラムは、物理的に正しい線形空間ではなく、ガンマを持つ色空間でスケーリングを実行します。テスト画像は、誤ってダウンサンプリングされた場合に大きく異なる外観になるように作成されています。ジョナス・ベルリンはこの原理に基づいて「あなたのスケーリングソフトウェアはひどい/最高」という画像を作成しました。[ 31 ]
スケーリングに加えて、この問題は、JPEG のガンマ対応Y′CbCrにおけるクロマサブサンプリングなど、他の形式のダウンサンプリング(縮小) にも適用されます。[ 32 ] WebP は、線形空間でクロマ平均を計算してからガンマ対応空間に変換することでこの問題を解決します。より大きな画像には反復解法が使用されます。同じsharp YUV (以前はsmart YUV ) コードは sjpeg で使用され、オプションでAVIFにも使用されます。Kornelski は、輝度ベースの加重平均によるより単純な近似を提供します。[ 33 ]アルファ合成、カラーグラデーション、および 3D レンダリングもこの問題の影響を受けます。[ 34 ] [ 35 ]
逆説的ではあるが、画像をアップサンプリング(拡大)すると、「間違った」(非物理的な)ガンマ色空間で処理された結果の方が、美的に好ましい場合が多い。[ 36 ]これは、人間の知覚は非線形であり、ガンマで近似する方が適切であるにもかかわらず、ミッチェル・ネトラヴァリやランチョスのような負のローブを持つリサンプリングフィルタがリンギングアーティファクトを線形に生成するためである。(線形光(ガンマ=1)でのダウンサンプリングを促す「ステップバック」のエミュレーションは、アップサンプリングには適用されない。)リンギングアーティファクトの視認性を低減する関連手法は、ImageMagickやGIMPのLoHaloフィルタによって開拓され、madVR、AviSynth、Mpvによってビデオアップサンプリングに適用されたシグモイド光伝達関数を使用することである。[ 37 ] [ 38 ] [ 39 ] [ 40 ] [ 41 ]
高コントラスト画像(テキストなど)を1-xで反転させると、ガンマ空間では文字の太さが均一になり、正しく表示されます。また、Photoshopの「操作」(オーバーレイ、ハードライト、ソフトライトなど)の多くはガンマ空間で動作するように設計されているため、リニア空間では正しく表示されません。これらの機能は、異なるガンマ空間またはリニア空間で動作するように調整する必要があります。プログラマーは、アルファによる「事前乗算」が保存空間への変換前か後か、またアルファチャンネル自体がリニアかガンマ補正されているかにも注意する必要があります。
強度という用語は、単位時間および単位面積あたりに放出される光の量を指し、単位はルクスです。ただし、多くの科学分野では、この量は光度ではなく、発光強度と呼ばれ、光度とは別の量であることに注意してください。しかし、これらの区別は、あらゆる種類の正規化された線形強度スケールに適用できるガンマ圧縮にはほとんど関係ありません。
「輝度」は、ビデオや画像処理の分野においても、いくつかの意味を持つ可能性があります。
色の意味での相対輝度(ガンマ圧縮なし)とビデオの意味での光彩(ガンマ圧縮あり)を対比し、相対輝度をY、光彩をY ′ と表す。プライム記号 (′) はガンマ圧縮を表す。[ 42 ]光彩は輝度から直接計算されるのではなく、ガンマ圧縮された RGB 成分の (やや恣意的な) 加重和であることに注意。[ 1 ]
同様に、明るさという言葉は、光量など様々な尺度に用いられることがあるが、より正確には主観的な視覚的属性を指す。
ガンマ補正は、指数がギリシャ文字のガンマ(γ )であるべき乗則関数の一種です。数学のガンマ関数と混同しないように注意が必要です。小文字のガンマ(γ)は前者のパラメータであり、大文字のΓは後者の名称(および記号)です(Γ( x )のように)。ガンマ補正と併せて「関数」という言葉を使う場合は、「一般化べき乗則関数」と言うことで混乱を避けることができます。
文脈がなければ、ガンマとラベル付けされた値は、エンコード値かデコード値のどちらかである可能性があります。補正に適用される値、またはその逆数を適用して補正される値として正しく解釈するためには、注意が必要です。一般的に、デコード値(2.2など)がエンコード値であるかのように使用されることが多く、ガンマをエンコードするために適用すべき真の値である逆数(この場合は1/2.2)が使用されるべきです。
ガンマ補正とは何ですか?
0.1より優れ
た
精度
で推定できます
。
輝度として50%ではなく48%を使用する理由は、多くのLCDスクリーンは輝度範囲の最後の5%で飽和の問題があり、ガンマ測定が歪むためです。
この問題は、ほとんどのモニターハードウェアの立ち上がり時間が、1ピクセル、場合によっては2ピクセルのスペースで完全な黒から完全な白に変化するのに十分な速さではないことが原因です。
ディスプレイキャリブレーションデバイスとソフトウェアをお持ちの場合は、ディスプレイカラーキャリブレーションの代わりにそれらを使用することをお勧めします。より良いキャリブレーション結果が得られます。
QuickGammaは、高価なハードウェアツールを購入することなく、モニターをその場でキャリブレーションするための小さなユーティリティプログラムです。
モニターの色プロファイルを作成するための簡単なウィザード。
通常、Windowsはこれを自動的に処理します。
技術的に言えば、問題は「明るさのスケールが線形であるかのように計算が行われているが、実際には電力スケールである」ことです。数学的に言えば、「ガンマが 1.0 であると想定されているが、実際は 2.2 である」ということです。多くのフィルター、プラグイン、スクリプトが同じエラーを起こします。
この画像はジョナス・ベルリン氏から提供されたものです。お使いのソフトウェアで1:2に縮小してください。
一般的に、線形光色空間 (線形 RGB および XYZ) は誇張された暗いハローを生成し、「知覚的」色空間 (sRGB、LAB、LUV) は誇張された明るいハローを生成します。少し考えてみれば、これは完全に理にかなっています。なぜなら、知覚的色空間は、強度スペクトルの暗い端に多くのビットを詰め込み、明るい端を「空洞化」して、HVS (人間の視覚システム) を模倣しているからです。したがって、1 単位の暗いオーバーシュートは、線形 RGB よりも sRGB では「遠く」まで届きませんが、1 単位の明るいオーバーシュートは、sRGB よりも線形 RGB では「遠く」まで届きません。
リサイズしようとするのではなく、シグモイドカラー修飾子演算子(-sigmoidal-contrast)を使用して修正されたカラースペースで画像をリサイズする新しい手法が開発されました。これにより、非常に鋭いエッジに沿って発生する可能性のある極端なハローやリンギングアーティファクトのクリッピングを軽減できます。
シグモイド化は、負のローブが1つ多いカーネルでフィルタリングすることによって生じるオーバーシュートとアンダーシュートを最小限に抑える方法として、N. Robidoux によって考案されました。基本的には、色域の両端が中間調から「遠い」色空間を通してリサンプリングすることから成ります。
あなたのシグモイド関数「stretching」を実装しましたが、見たところうまく機能しているようです。
リサイズ時のリンギングを軽減するために、線形輝度のクリップに逆シグモイド曲線を適用します。Dither_sigmoid_direct は、クリップを線形輝度に戻します。クロマチャンネルは変更されません。
アップスケーリング時に、リンギングアーティファクトの強調を避けるためにシグモイドカラー変換を使用します。デフォルトで有効になっています。これは --linear-upscaling と互換性がなく、それを置き換えます。(シグモイド化には線形化も必要なので、どちらの場合も LINEAR レンダリングステップが実行されます。)