0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

動画の切り抜きは最初のフレームだけでは判断できない — 1 秒ごとに PNG を書き出したら 10 秒目で人が消えていた

0
Posted at

動画の背景を差し替えたとき、最初のフレームだけ見て「大丈夫そう」と判断していました。静止画の切り抜きを何度か触ってきたので、1 枚目が抜けていれば残りも同じだろう、と思い込んでいたんです。実際に書き出した動画を 1 秒ごとに止めて見てみると、最初のフレームでは残っていた人が、3 秒でほとんど薄い影になり、6 秒で一度戻ってきて、10 秒からは完全に消えていました。動画は途中で切り替わっていないし、カメラもゆっくり横に動いているだけです。2026-09-14 に試したこの結果と、そこから変えた確認のやり方を書いておきます。

使った動画は Wikimedia Commons で CC0 として公開されている「Folkloristic dance in Naples (tammorriata)」です。1280×720、25 fps、長さ約 12.8 秒で、ナポリの路上でタンバリンを持った人たちが並んで演奏している場面です。映っている人物は、技術的な説明のためにだけ使っています。わざわざ人の多い動画を選んだのは、1 人が正面を向いてしゃべるだけの動画だと簡単すぎて、どこで失敗するのかが分からないと思ったからです。背景の差し替えには、ブラウザの中で処理する図映(ImgIng)の「動画背景切り抜き」ベータ版を使いました。モデルは 3 つあって、一番重い MatAnyone2 は非商用テスト限定と書かれていたので、一番軽い互換モード(RVM MobileNetV3)にしています。背景は、どこが抜けたか一目で分かるように #00FF00 の緑一色にしました。

ツールには「現在のフレームを切り抜きプレビュー」というボタンがあって、書き出す前に 1 フレームだけ結果を確かめられます。便利なのですが、見られるのはその 1 枚です。書き出した動画の最初のフレームを見ると、左側で歌っている黒い服の男性も、右側に並ぶ人たちも、ちゃんと緑の上に残っていました。後から、純粋な緑からどれだけ色が離れているかで画素ごとに「残っている度合い」を見積もって数えてみると、歌い手のまわりの枠の中で不透明な画素は 68% くらいです。後ろのほうでタンバリンを持った人は半透明になっていましたが、主役の歌い手が残っていたので、そこはあまり気にしていませんでした。

書き出しは問題なく終わり、再生もできました。流して見ている間は、正直あまり違和感がありませんでした。左側が少し寂しいかな、くらいです。おかしいと気づいたのは、記事用に何枚か画像を取ろうとして途中で止めたときでした。そこで ffmpeg -i out.mp4 -vf fps=1 f_%02d.png で 1 秒に 1 枚ずつ PNG に書き出し、13 枚を並べて見ています(ファイル名の番号が 2 桁になるよう %02d にしました)。これが一番よかったです。動画だと流れてしまう変化が、並べるとはっきり分かります。約 12.8 秒の動画なのに 13 枚になったのは、最後の端数の 1 秒分も 1 枚出るからだと思います。ここで一つ勘違いしていたのが、fps=1 で出てくる画像がちょうど 0 秒、1 秒、2 秒の瞬間のフレームだと思っていたことです。実際には 1 秒ごとに近いフレームを拾う動きなので、元動画と結果を「まったく同じフレーム」で並べたいときは、フレーム番号で取り出すほうが確実でした。25 fps なので 10 秒ならフレーム 250 です。上の図はそうやって番号を指定して並べ直したものです。

元動画(左)と背景差し替え後(右)の 3 秒、6 秒、10 秒、11 秒。素材は Wikimedia Commons「Folkloristic dance in Naples (tammorriata)」(CC0)、互換モード、#00FF00 の単色背景

並べてみた結果はこうでした。3 秒で歌い手は薄い影だけになり、枠の中の不透明な画素は 4% ほど。6 秒で戻ってきますが、体が半透明で緑が透けていて、枠の中は 51% くらいです。10 秒あたりからは歌い手が丸ごと消え、11 秒では左側にいた一団がいなくなって、右側の人たちだけが残りました。最後の 12 秒台まで、歌い手は戻ってきません。一方で、右側の手前に並んでいる明るい服の人たちは、互いに重なっていても最初から最後までほとんど崩れていませんでした。1 枚目だけ見て判断していたら、この違いにはまず気づけなかったと思います。

なぜ歌い手だけが消えたのかは、正直よく分かっていません。暗い服で、後ろの見物人や金属の柵と色が近いので、背景と見分けにくいのかな、というくらいの推測はできます。でも、それなら最初のフレームで残っていた理由が説明できません。動画用のモデルは前のフレームの結果を引き継ぐ仕組みだと読んだことがあるので、途中で一度見失ったのが後まで続いているのかもしれませんが、確かめる方法をまだ思いついていません。試したのは互換モードだけなので、品質優先に切り替えたら消えないのかどうかも分かりません。

逆のパターンも一つ試しました。最初の 2 秒が人のいない地面の静止画で、そのあと人が話している動画(こちらも Wikimedia Commons の CC0 動画「Tarun speaking 01」)にぱっと切り替わる素材を自分で ffmpeg でつないで作り、同じように処理しています。この場合は、最初の 2 秒は全部緑一色で、人が映った最初のフレームからちゃんと人が残っていました。つまり、最初のフレームだけ見ると「何も抜けていない、失敗した」と勘違いしそうな動画もあるわけです。最初のフレームは、成功の判断にも失敗の判断にも使えないということだと理解しました。

いまは、動画を書き出したら必ず 1 秒ごとに PNG にして、主役が最後まで残っているかを最初に見るようにしています。13 枚くらいならサムネイル表示でざっと眺めるだけで、数十秒あれば終わります。見ているのは次の 3 つだけで、主役がいるか、体から背景の緑が透けていないか、脚や腕が途中で切れていないか。緑一色の背景にしておくと、半透明になった部分が緑っぽく濁って見えるので、小さいサムネイルでも意外と気づけます。本番で使う背景に差し替えるのは、この確認が済んでからにしました。長い動画だと枚数が増えるので、そのときは 2 秒おきにするなど間隔を変えるつもりですが、どのくらいまで間隔を空けても見落とさないのかはまだ試していません。使ったツールは https://imging.ai/ です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?