本文へ移動
記事一覧

透過アニメーションの緑の縁

透過AIアニメーションの緑の縁を直す:アルファしきい値とデスピルの実測

同じAIアニメーションの元フレームで背景しきい値、エッジ収縮、フェザー、デスピルを比較し、緑の縁、自然な輪郭、マゼンタへの過補正がどう生じるかを示します。

AnimGen更新日 10 分で読める
同じキャラクターのフレームで緑の縁、自然な輪郭、マゼンタへの過補正を比較
目次

グリーンバックを消した後も、髪、マント、モーションブラーの輪郭に緑の縁が残ることがあります。この場合、ファイルはすでに透明でも、半透明画素の色に背景の緑が混ざっていることが原因です。

AnimGen用に生成し、権利をプロジェクトが保有する銀髪のキャラクターで再現しました。元動画は640 × 640のH.264で、色差を間引く yuv420p です。書き出し範囲は4秒、24 FPS、全96フレーム。以下では最初の1フレームを使って単一の変数を比較します。すべての画像で同じ元フレーム、#00ff00 のキー色、clean plate、本番のキーイング処理を使い、図に示したパラメータだけを変更しています。

同じフレームにエッジのデスピル強度0.00、1.20、2.50を適用した比較

0.00 では銀髪、マント、靴底に緑の縁が目立ちます。既定値の 1.20 はこの素材でより自然です。2.50 に上げると、中立を越えてマゼンタに寄ります。補正不足と補正過多を同時に示すことで、有効な範囲が分かります。

透明度と輪郭の色は別々に確認する

RGBA画素は赤・緑・青とAlphaを保存します。Alphaは合成後にどれだけ見えるかを、RGBは見える部分の色を決めます。

髪やアンチエイリアスされた輪郭には半透明画素が多く含まれます。グリーンバックの元動画では、そこにキャラクターと緑の背景が混ざっています。Alphaで背景を透明にしても、RGBの緑は自動的に中立色になりません。暗いシーンに置くと残色が目立ちます。

成熟したキーイングツールも、マスクと色の修正を分けています。AdobeのUltra Keyのパラメータはマスク生成、マスクの調整、スピル抑制を分け、BlenderのKeyingノードにもマスク、エッジ、despillの設定があります。

元動画のエンコードも輪郭に影響します。今回の yuv420p は輝度より色差の空間解像度が低いため、高彩度の緑が細い銀髪に接すると、圧縮や画素の被覆によって隣のサンプルまで色が広がりえます。

色を調整する前にAlphaマスクを見る

AnimGenのAlphaビューでは白が不透明、黒が透明、灰色が半透明です。色を一時的に隠すと、背景ノイズやキャラクター内部の透明な穴を見つけやすくなります。

次の比較では背景除去しきい値だけを変えています。前景の不透明しきい値、エッジ収縮、フェザー、3つのデスピル設定は既定値のままです。

背景除去しきい値0.00、25.92、55.00のAlphaマスク

0.00 では元フレームとclean plateの細かな差が画面全体に広がり、暗い灰色の斑点が残ります。既定値の 25.92 では空白領域が黒くなり、細い髪の輪郭も残ります。55.00 にするとさらに多くの縁の画素が消え、細い部分が縮みます。

適切なしきい値は元素材次第です。平坦で安定した背景なら強めにできますが、圧縮ノイズ、変化する生成背景、煙、グロー、細い髪には緩やかな移行が必要です。空白がきれいになるところまで上げたら、細部が消えていないか戻って確認します。

前景の不透明しきい値は移行のもう一端を制御します。下げると前景がより広く完全不透明になり、上げると半透明の範囲が広がります。輪郭だけでなく顔、服、武器の内部も見て、穴が空かないようにします。

エッジ収縮とフェザーで輪郭の形を整える

背景とキャラクターを分離した後、次の2つで形を調整します。

  • エッジ収縮は輪郭を内側へ動かします。少量なら明るい縁や残色を除けますが、大きすぎると髪、布の先端、武器の縁、細い隙間まで削ります。
  • エッジフェザーは透明から不透明への変化を滑らかにします。硬い切り抜きを和らげますが、多すぎるとぼんやりした光輪になります。

AnimGenはこの2値を480画素の基準サイズで表示し、実際の出力解像度へ有効半径を換算します。出力サイズを変えても設定の尺度が完全に失われないようにするためです。

背景と前景のしきい値が妥当になってから収縮を使います。汚いマスクを収縮で隠すと本来のキャラクター画素まで失います。フェザーは最終納品サイズで判断しましょう。400%拡大では柔らかく見える縁も、96画素のゲームキャラクターでは単なるぼけになりえます。

7つのコントロールには2種類の役割がある

透明度パネルには形と色の設定が並びますが、作用する対象は異なります。

エッジのデスピル強度を2.50にしたAnimGenの透明度設定

設定 変えるもの 調整する理由 大きすぎる場合
背景除去しきい値 マスクの透明側 背景ノイズ・色の揺れを除く 薄い縁の細部が失われる
前景の不透明しきい値 マスクの不透明側 内部を埋める・半透明を残す 硬い縁または透けた内部
エッジ収縮 マスクの輪郭半径 輪郭の残色を除く 髪や細線が削れる
エッジフェザー マスクの移行の柔らかさ ジャギー・硬い縁を緩和 ぼんやりした光輪
エッジのデスピル強度 輪郭付近のキー色 緑・マゼンタの縁を除く 補色へ寄る
内部のデスピル強度 輪郭から離れた色 内部の反射色を除く 元の色が変わる
デスピル範囲 エッジから内部への移行幅 強い補正範囲を制限 誤った補正が広がる

最初の4つは主にAlphaの形、最後の3つはRGBの色を扱います。Alphaビューがまだ斑点だらけならマスクを、形はきれいで緑だけ残るならデスピルを調整します。

エッジのデスピルには適切な範囲がある

エッジのデスピルは輪郭付近のRGBを変え、Alphaは変えません。次の3つの拡大画像は、同じ座標を元の縦横比のまま切り出しています。

銀髪の輪郭に残る緑、自然な補正、マゼンタの過補正を並べた拡大比較

左では形はできていますが、髪のRGBがまだ緑です。中央は残色の大半を取り除き、淡く中立に近い移行を保っています。右は緑を取りすぎて赤と青が相対的に強くなり、マゼンタの線が出ています。

最大強度を既定値と考えないでください。明るい輪郭と半透明の髪を見ながら少しずつ上げ、キー色が目立たなくなったところで止めます。補色に寄り始めたら少し戻します。

  • 内部のデスピル強度は輪郭から離れた位置で独立した強度を使います。キャラクター自身にキー色に近い色がある場合や、肌、金属、布の色がずれ始めた場合は下げます。
  • デスピル範囲はエッジ強度から内部強度へ移る幅を決めます。両端の強度そのものは変更しません。

この例では既定のエッジ 1.20、内部 0.84、範囲 26 が3段階のテストで最も自然でした。これはこの元素材と現在のキーイング処理の結果です。自分の動画での確認を省く値ではありません。

text
背景除去しきい値:25.92
前景の不透明しきい値:70.00
エッジ収縮:0.50
エッジフェザー:0.70
エッジのデスピル強度:1.20
内部のデスピル強度:0.84
デスピル範囲:26

この7値は再現用の基準です。自分の最終値はAlphaビュー、輪郭の色、動きが大きいフレームを見て決めます。

市松模様、明るい背景、暗い背景で交互に見る

1種類の背景だけでは、それに近い色の欠陥を見落とします。次の3画像は同じRGBA画素を使い、合成背景だけを変えました。

同じ透過フレームを市松模様、明るい背景、暗い背景に重ねた比較

  • 市松模様はAlphaの範囲と広い半透明背景の確認に向きます。
  • 明るい背景は暗い汚れ、過度な収縮、内部の透明な穴が分かります。
  • 暗い背景は明るい縁や銀髪の緑・青・マゼンタの残色を見つけやすくします。

ここまでは変数を1つに絞るため同じフレームを使いました。本番では全編を見る必要があります。冒頭、動きの大きい中盤、末尾へ移動し、髪や裾がキー色に接するフレームを3種類の背景で確認します。圧縮ノイズと生成背景の変化は時間とともに動きます。最初がきれいでも残り95枚がきれいとは限りません。

再現できる調整順序

  1. 既定値に戻し、キー色を確認してAlphaビューを開きます。
  2. 空白が黒くなるところまで背景除去しきい値だけを上げます。
  3. 前景の不透明しきい値を調整し、内部が保たれるか確認します。
  4. 輪郭に残りがある場合だけ、最小限のエッジ収縮を加えます。
  5. 最終サイズでまだ縁が硬い場合に限り、フェザーを増やします。
  6. 通常の合成プレビューへ戻し、キー色が目立たなくなるまでエッジのデスピルを上げます。
  7. 内部強度と範囲で補正領域を絞り、複数フレームと3種類の背景を見直します。

最終形式を決める前に数枚のPNGを書き出すと、動画デコーダーを挟まずにAlphaと画素を直接調べられます。PNGが正常なら、編集・Web向けにはWebM Alpha、ProRes 4444、PNG連番の実測、2Dゲーム向けにはスプライトシートとPNG連番を参照してください。

よくある疑問

透過PNGなのに緑の縁が残るのはなぜ?

透明度と色は別に保存されます。元のグリーンバックで半透明だった画素には緑のRGBが残り、新しい背景との合成でも見えてしまいます。

デスピルを強くすれば背景も消える?

デスピルが修正するのはRGBで、Alphaではありません。背景残り、内部の穴、輪郭の形は背景・前景しきい値、収縮、フェザーで扱います。

縁がマゼンタになったのはなぜ?

緑を取りすぎて赤と青が相対的に強くなったためです。エッジの強度を下げるか、強い補正の範囲を狭めます。

この数値を他の動画にそのまま使える?

推奨しません。値は640 × 640のグリーンバック動画の結果です。キー色、圧縮、キャラクター自身の色、ブラー、出力サイズ、生成背景の安定性で有効な範囲は変わります。

有効なアルファ付きキャラクターPNGがあれば、AnimGenの透過アニメーションフローで動きを作り、書き出し前にこれらを調整できます。まずAlphaで形を整え、複数の背景で色を確認し、最後に多くのフレームと対象環境で通る設定を残してください。

画像の詳細