マスクサイズの調整 (AdjustMaskSize)
概要 (What is it?)
AdjustMaskSize ノードは、マスク動画の輪郭境界を膨張(Dilation / 拡張)または収縮(Erosion / 縮小)させることで、マスクのサイズを調整します。動画本来のプロパティ(解像度やフレームレート)を維持しながら、モルフォロジー演算(形態学的処理)を用いて各フレームを個別に処理します。
使用する場面 (When would I use it?)
以下のような場面でこのノードを使用します:
- 周囲の余白をより広く含めるためにマスク境界を外側に拡張したい場合(膨張処理)
- エッジのフリンジ(境界のゴミやアーティファクト)を除去するためにマスクを一回り縮小したい場合(収縮処理)
- AI セグメンテーションやトラッキング結果のマスク輪郭をブラッシュアップしたい場合
- マスクのカバー範囲を正確なピクセル単位で微調整したい場合
使い方 (How to use it)
基本セットアップ
- ワークフローに AdjustMaskSize ノードを追加します
- マスク動画ソースを "mask_video" 入力に接続します
- "adjustment" スライダーで拡張または縮小したいピクセル数を指定します
- ワークフローを実行してマスク動画を処理します
パラメータ一覧 (Parameters)
-
mask_video: 調整する対象のマスク動画(VideoArtifact および VideoUrlArtifact をサポート)
-
adjustment: ピクセル単位でのマスクサイズ調整量(-25〜+25、デフォルト: 0)
- 正の値(1〜25): マスクを外側に拡張(膨張 / Dilation)
- 負の値(-25〜-1): マスクを内側に縮小(収縮 / Erosion)
- 0: 変更なし(処理をスキップしてそのままパススルー)
出力 (Outputs)
- output_mask: 調整されたマスク動画(他のノードに接続可能)
動作原理 (How it works)
このノードはフレームごとにモルフォロジー演算を適用します:
- 膨張 (Dilation / 正の調整値): 最大値フィルタ(MaxFilter)を適用してマスク内の白い領域を拡張します。円形カーネルを使用して、指定されたピクセル数だけ各白ピクセルが全方位に外側へ広がります。
- 収縮 (Erosion / 負の調整値): 最小値フィルタ(MinFilter)を適用してマスク内の白い領域を縮小します。円形カーネルを使用して、指定されたピクセル数だけ白領域が内側へ縮みます。
- ゼロ調整: adjustment が 0 の場合、入力動画は無駄な再エンコードを行わずそのまま返されます。
円形カーネルを採用しているため、角張らず自然で均一な拡張・縮小が行われます。進捗インジケータ(0〜90%: フレーム処理、90〜100%: 動画再構築)でリアルタイムに進捗が確認できます。
使用例 (Example)
マスクを全周 5 ピクセル広げたい場合:
1. マスク動画を mask_video 入力に接続します
1. adjustment を 5 に設定します
1. ワークフローを実行します
1. マスク境界が全方向に 5 ピクセル拡張された動画が出力されます
マスクの外縁 3 ピクセルのゴミを取り除きたい場合:
1. マスク動画を mask_video 入力に接続します
1. adjustment を -3 に設定します
1. ワークフローを実行します
1. マスク境界が全方向に 3 ピクセル縮小された動画が出力されます
重要な注意点 (Important Notes)
- フレームの抽出および再構築には FFmpeg を使用しています
- モルフォロジー演算には Pillow(PIL)の MaxFilter および MinFilter を用いて高速化しています
- 入力マスクは処理中に自動的にグレースケールに変換されます
- 出力動画は入力動画と同一の解像度、フレームレート、再生時間を完全に維持します