Layer
Layer*1 [yuy2][rgb32] †
Layer (base_clip, overlay_clip, string "op", int "level", int "x", int "y", int "threshold", bool "use_chroma")
このフィルタは、異なるサイズの(だが、同じカラーフォーマットの) 2 つのクリップを、さまざまな演算モードを使ってオーバーレイ*2することができます。
ピクセルの透明度情報については、マスクとして RGB32 の第 4 の色チャンネル(A チャンネル、または、アルファチャンネル*3)が使用されます。
- base_clip
- 生成されるクリップの大きさと他のすべてのビデオとオーディオのプロパティを決定する基礎をなす*4クリップ。
- overlay_clip
- base_clip の上に合成されるクリップ。このクリップは、アルファレイヤを含むことができます。
- op
- 実行される合成演算。次のいずれかの値を取ることができます: "add"、"subtract"、"lighten"、"darken"、"fast"、"mul"
- level
- 実行される演算の強さ。0 から 256 まで。0: base_clip がそのまま返されます。257 (YUY2 は 256): 最大の強さが使用されます。
- x, y
- overlay_clip のオフセット*5位置。
- threshold
- "lighten" と "darken" のみに実装されています。
- use_chroma
- overlay_clip の色差を使用します。デフォルト true。false の場合、輝度のみ使用されます。
カラーフォーマットと演算の種類によって、挙動や許容されるパラメータにいくつかの違いがあります。詳細は以下の通りです:
- YUY2 では、マスク(アルファチャンネル)がありません。このため、アルファチャンネルは、どの部分も完全に不透明であると仮定されます。
- RGB32 では、overlay_clip のアルファチャンネルは、level を使って掛け算されます。このため、算出されるアルファ値は (マスクのアルファ値 * level + 1) / 256 になります。つまり、演算の最大限の効果を得るには、マスクのアルファ値が 255、level が 257 である必要があります。
これらの演算子は、RGB32 でも YUY2 でも同様に機能します:
"fast": use_chroma は TRUE である必要があり、level と threshold は使われません。 結果は、単に base_clip と overlay_clip の平均です。 "add": threshold は使われません。base_clip と overlay_clip の差は、 アルファ値を使って掛け算され、base_clip に足されます。 alpha=0 -> base_clip のみ見える、 alpha=128 -> base_clip と overlay_clip が均一にブレンドされる、 alpha=255 -> overlay_clip のみ見える。 使用される公式:- RGB32 :: base += ((overlay-base)*(alpha*level+1)>>8)>>8 YUY2 :: base += ((overlay-base)*level)>>8 "subtract": "add" と同じですが、overlay_clip は前もって反転されます。
これらの演算子は、YUY2 でのみ正しく動作するようです:
"mul": threshold は使われません。base_clip は overlay_clip と同様に彩色されます。 このため、use_chroma は TRUE でなくてはなりません。 alpha=0 -> base_clip のみ見える、alpha=255 -> base_clip とほぼ同じ輝度だが、 overlay_clip の色を持つ。 "lighten": use_chroma は TRUE である必要があります。"add" と同じ演算を実行しますが、 結果が base_clip より明るいときのみ新しい値が使われます。threshold が 高いほど、この演算が行われる可能性が高くなります。つまり、threshold=255 なら "add" と同じ、threshold=0 なら base_clip と overlay_clip の差によっては おそらく base_clip がそのまま変更なしで渡されます。 "darken": "lighten" と同じですが、結果が base_clip より暗いときにのみ実行されます。
生成されるクリップのプロパティについては、こちらも参照。
Mask [RGB32] †
Mask (clip, mask_clip)
Layer と一緒に使用するために、mask_clip をグレースケールに変換し、それを RGB32 のマスク(アルファチャンネル)に使用することによって、定義されたアルファマスクを clip に適用します。このチャンネルでは、「黒」は完全に透明を意味し、「白」は完全に不透明を意味します。
ResetMask [RGB32] †
ResetMask (clip)
Layer と一緒に使用するために、clip に「100% 不透明な」(すなわち白色の)アルファマスクを適用します。
RGB32 クリップのアルファチャンネルは、(ソースによっては)つねに明確に定義されているとは限りません。このフィルタは、純白のマスクを適用するための手っ取り早い方法です:
clip = ResetMask(clip)
ColorKeyMask [RGB32] †
ColorKeyMask (clip, int color[, int tolB, int tolG, int tolR])
color で指定された色(デフォルト 黒)を比較することによって、アルファチャンネル内のピクセルを消去します。色の差が (tolB, tolR, tolG)*6 (デフォルト 10)より小さいピクセルは、それぞれ透明(つまり黒色に)に設定されます。それ以外のピクセルは変更されません。すなわち、不透明には設定されません(白色には設定されません。そのため、このフィルタを適用する前に ResetMask が必要になるかもしれれません)。これは、統合マスクを複数回の呼び出しによって構築することを可能にします。tolR または tolG が設定されないときは、tolB の値が使われます(古いバージョンの挙動を反映)。通常は、まず ResetMask から始めます。それから、関係のある色が現れる透明な穴をつくるために ColorKeyMask を 2、3 回連続して呼び出します。使用例については、Overlay を参照してください。
v2.58 より古いバージョンの AviSynth では、青、緑、赤に対する個別の許容レベルはありませんでした。唯一、tolerance と呼ばれる許容レベルがあり、青、緑、赤に対して同時に使用されていました。
註: このページは、AviSynth 2.5.8 RC3 に同梱されている英語版ヘルプの日本語訳です。原文は、AviSynth をインストールしたフォルダ内の Docs/english/corefilters/layer.htm にあります。なお、このページのテキストおよび画像のライセンスは、オリジナルのそれに準じます。詳しくは、AboutLicense を参照してください。
*1 訳者註: 参考: レイヤー (DTP) - Wikipedia
*2 訳者註: 参考: オーバーレイ - [デジタルアイテム用語集]All About
*3 訳者註: 参考: IT用語辞典 e-Words : アルファチャンネルとは 【alpha channel】 ─ 意味・解説
*4 訳者註: 原文では「underlying」。「基礎をなす」という意味のほかに、「下にある」という位置的な意味も持つ。
*5 訳者註: 参考: IT用語辞典 e-Words : オフセットとは 【offset】 ─ 意味・解説
*6 訳者註: tolB、tolR、tolG の tol は英語の tolerance に由来し、B、R、G はそれぞれの色を示す(順に青、赤、緑)。tolerance は、日本語で「許容誤差」の意味。