Levels のバックアップ差分(No.9)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#code(){{
Levels(clip input, int input_low, float gamma, int input_high, int output_low, int output_high, bool coring)
}}

Levelsフィルタは、明るさとコントラストとガンマを調整します。input_lowとinput_highパラメータは、いかなる入力ピクセル値が、純粋な黒と純粋な白として扱われるかを決定します。the output_lowとoutput_highパラメータは、黒と白に一致する出力値を決定します。そして、gammaパラメータは、変換における非線形性の程度を制御します。正確に言うと、変換に使われる関数は、以下の通りです:

 output = [(input - input_low) / (input_high - input_low)]^(1/gamma) * (output_high - output_low) + output_low

これは、GUI((訳者註: グラフィカル・ユーザー・インターフェイス(Graphical User Interface)の略。([[参考 - IT用語辞典 e-Words:http://e-words.jp/w/GUI.html]])))があれば本当に素晴らしいフィルタの1つです。私はGUIを提供することができないので(少なくとも、AviSynthの現行の形式においてはできません)、clipがRGBのときは、このフィルタを、少なくとも、VirtualDubのLevelsフィルタと互換性があるようにすることを決めました。その場合、Vi
これは、GUI((訳者註: グラフィカル・ユーザー・インターフェイス(Graphical User Interface)の略。([[参考 - IT用語辞典 e-Words:http://e-words.jp/w/GUI.html]])))があれば本当に素晴らしいフィルタの1つです。私はGUIを提供することができないので(少なくとも、AviSynthの現行の形式においてはできません)、clipがRGBのときは、このフィルタを、少なくとも、VirtualDubのLevelsフィルタと互換性があるようにすることを決めました。その場合、VirtualDubのLevelsフィルタのダイアログから数字を受け取り、それらの値を(AviSynthの)Levelsフィルタにパラメータとして渡せば、同じ結果を得ることができるでしょう。しかし、入出力のパラメータは255よりも大きくすることができます。

YUVモードでデータを処理するとき、Levelsは、色差ではなく、輝度情報のみをガンマ補正します。ガンマ補正は、本当は、RGBの概念です。そのため、私は、YUVにおいて、それを適切に行う方法を知りません。しかしながら、gamma = 1.0なら、このフィルタは、RGBモードとYUVモードにおいて、同じ効果を持つでしょう。明るさやコントラストを調整するためには、[[Tweak]]か[[ColorYUV]]を使用したほうがよいです。なぜなら、Levelsは、clipの色差も変更するからです。

v2.53において、coring = true/falseが、オプションとして追加されました(デフォルトはtrueで、古いバージョンにおける挙動を反映します)。coring = true: 入力の輝度は[16,235]に(そして色差は[16,240]に)縮められます(cla,p)。この結果は、[16,235]から[0,255]へ*拡大(scaled)*されます。その変換は、上記の公式によって行われます。そして、出力は、[0,255]から[16,235]へ*縮小(scaled)*し直されます。coring = false: 変換は、上記の公式によって行われます。

''例'':((訳者註: 文中の[m,n]は値の範囲を示す。))

#code(){{
# [16,235]のクリップには何もしないが、[0,255]のクリップを[16,235]に縮める(または丸める):
Levels(0, 1, 255, 0, 255)

# 入力は[16,235]から[0,255]に拡大され、[0,255]->[16,235]の変換は(上記の公式によって)行われる。
# そして出力は[0,255]から[16,235]に縮小し直される: (例: [0,16]の輝度の値は、すべて30に変換される)
Levels(0, 1, 255, 16, 235)

# より明るい環境にあるディスプレイのためのガンマ補正画像:
# 例: 16の輝度は16のまま、59は79に変換される、など
Levels(0, 1.3, 255, 0, 255)

# 画像を反転する(写真のネガを作成):
# 例: 16の輝度は235に変換される
Levels(0, 1, 255, 255, 0)

# [0,255]のクリップには何もせず、かつ、[16,235]のクリップにも何もしない:
Levels(0, 1, 255, 0, 255, coring=false)

# [0,255]のクリップを[16,235]に縮小する:
Levels(0, 1, 255, 16, 235, coring=false)  # これはColorYUV(levels="PC->TV")と同じ

# [16,235]のクリップを[0,255]に拡大する:
Levels(16, 1, 235, 0, 255, coring=false)  # これはColorYUV(levels="TV->PC")と同じ
}}

#br
#hr
註: このページは、http://www.avisynth.org/Levelsの日本語訳です。