映画やアニメの60fpsインターレース動画を、24fpsプログレッシブ動画にしてみよう。

ちぇすにゃんがんばっ ♥


2001 12/07

前回に引き続き、今回は、口パクシーンに焦点を合わせて見ていこう。

まずは、サンプル画像。
サンプルその1
  
口パクシーンということで、画像に代わり映えがしない・・・つーか、静止画で安く作りやがって・・とかいう話なのだが、ともかくこのやたら動きの少ないソースでどうなるか実験。

特徴としては、フレーム9あたりで、大きなシーンチェンジが入る。あとは主に口パクで、
フレーム23,31,38,46,53,61,68,76,83が口パク。143,151,158,166が顔の動き。飛んで368,376に表情の動きがある。
あとは静止画(笑)

実は前回から多少ルーチンが変わってたりして、そのへんも併せて結果を見てくにゃん。

まずは、前回からさらに進化した・・・わけない、エッジ検出。
これは0〜200フレームをグラフにしてある。
    今回やったのは、フレームnとn+1の差の絶対値を取り、エッジ抽出フィルタをかけた結果を合計したものだ。
    つまり、インターレース縞の量を数値にしたかったわけだが・・・・・見ての通り、だめだめな結果に終わっている。
まず、フレーム10前後の巨大な値は、シーンチェンジの全画面インターレース縞だらけ状態が2フレームあるのでその影響である。これは至極正しい。ところが、13〜17フレームあたりになんだか値が出てきてる。これは実は、ソースのmpeg2が、シーンチェンジの負荷でノイズを発してるのだが、動きがあるので検出してしまっている。問題はその次で、上に書いた口パクフレームの23,31,38,46,53,61,68,76,83が現れていない。動きのある箇所が
画面面積に比べて小さすぎるため、エッジ量を合計すると誤差に埋もれてしまうのである。このへんはたぶんエッジ抽出フィルタのパラメーターを変えることで、どうにかなるんだろうけど、たぶん根本的解決に結びつかないのでひとまずこのままでいくことにする。フレーム143,151,158,166の顔の動きは正常に検出出来ている・・・・ように見えるがフレーム15前後のmpeg2ノイズと大差無い値であり、周りが完全に静止しているから判別可能、というだけである。

同様に後半の結果も示そう。

大方の予想通り、368,376の表情の動きは、143,151,158,166の顔の動きとにたようなソースなので、似たような結果が出ている。
全体にノイズが多いと、使い物にならないだろう。

上のグラフはRGB各チャンネルで出しているので、チャンネル合計したものも一応示しておこう。全然かわらんが。


てなわけで、ほかの手法に行ってみよう(笑)

つぎは、さっき出たフレームの差の絶対値を、そのまま足してみようってもの。


うーん・・・要するに、使えないと言うことだけは分かる。

やめやめ。次いこ。

こんなんどうかな?


全体像はこれ。

なんてったって、上で調べたすべての動きフレームが検出されてるのが良いね。ていうか他がダメだっただけだが。
で、これ、何やってるかというと、さっきの差の絶対値の最大値をグラフにしただけのもの。ノイズやフェードに弱そうなんだが、典型的な口パクシーンでは役に立ちそうである。