2006年04月29日

MEncoderのビデオフィルタ、簡単なまとめ

【タグ】[インタレ解除][逆テレシネ][MEncoder]

■インタレ解除と逆テレシネ。

基礎用語
あ)フレーム:
映像の一コマ。完全な1枚絵。プログレッシブとも言う
い)フィールド:
TV放送映像の一コマ。シュレッダーにかけたような、ブラ インドごしに窓の外を見るような、切り刻まれた絵。インターレースドとも言う。

TV放送がフィールド構造なのは当然だが、DVDの中の映像は規格上、フレーム構造とフィールド構造のどちらでも良い。
自分の理解では、最終的にはTVに映すので再生機が必要に応じて自前のフレーム>フィールド変換機能を使うという事のようだ。
フレーム構造で入っているDVDは稀とも聞く。
なお、日本のHDTV規格の1024iはインターレース(フィールド構造)。国外のHDTVは、地域や放送局の違いで720pと1024iが混在らしい。

A)映画カメラ:毎秒24000/1001フ レーム
B)TVカメラ:毎秒 60000/1001フィールド(=30000/1001フレーム)

テレシネ変換:
映画をTV放送する際にB)にフレームを水増しし、さらに フィールド構造に切り刻む事。
逆テレシネ変換:
テレシネ変換された映像からA)を再合成する事。
カメラ撮影時点ではインターレースは無いので、優れた逆テレシネフィルタはほぼ完璧な映像を復元可能。
fpsは24000/1001になるので、TVカメラ撮影素材に使うと、インターレース縞が取りきれない上に動きの速い箇所が「カクツく」事になる。
インターレース解除:
2枚のフィールドから1枚のフレームを合成する事。
完璧なインターレース解除は存在し無い。
なぜなら2枚のフィールド間には約1/60秒の時差が存在し、単純合成してもシマシマが残るから(場面による)。
また、毎秒60000/1001フィールドの 映像を毎秒30000/1001フレームに 減らす事になるので、動きの激しい箇所が「カクツく」事になる。
libavcodec mpeg4(ffmpegXの言うDivX)にはこれを毎秒60000/1001フレームに直してしまうオプションもある。

ffmpegXはインターレース解除にpp=md(median deinterlace、中央値補完)を使う。
pp=mdはpp系の中ではベストバランスだが、pp系はどれもインター レース縞の存在しない部分も一律に「合成」してしまうので一長一短が激しい。
例えば、pp=mdは輪郭線部分にジャギが残りやすく、特にアニメで目立つ。
pp=lb(リニアブレンド)は完全にジャギも縞も消すが、色味や輪郭がか なりボケる。
MEncoderにはfilmdintpullupなど、インターレース縞の存在しないフレームを弄らない「賢 い」フィルタもある。

例1)-vf filmdint -fps 30000/1001 -ofps 24000/1001
インターレース解除。映画・アニメ用。
映画カメラ(24000/1001fps)撮影素材を、TVの毎秒60000/1001フィールドに直して放送したものに向く。
元々filmdintはTV放送のインタレ解除・逆テレシネのために作られた 「万能ナイフ」。
TV放送からはコマを間引く事になるが、カメラ撮影時のfpsに戻すので動きがカクツクことは無い。

例2)-vf filmdint=io=2997/2997 -fps 30000/1001 -ofps 30000/1001
インターレース解除。大半のTV番組用。
TVカメラ(毎秒60000/1001フィールド)撮影素材に向く。
コマを間引かず、撮影時のfpsを維持するので動きがカクツクことは無い。

【参考】
filmdintには固有のデメリットがあり、手許では字幕類(端的にはア ニメオープニングなどのスタッフロールなど)が荒れ気味。
また、手許でビルドするようになってから細かいブロックノイズ状のチラつきが出る場面が多くなった。
元々x86でなければ本来の性能を発揮できない(mmx/3DNow!がなければ効かないオプションがある)点もPowerPC系ではやや難。
逆テレシネ(29.97fps to 23.976fps)目的で使う場合はそれ専用のpullupの方が優秀。
また、ffmpegX版MEncoderは0.0.9t版以降、挙動が不安定になった。内蔵するx264が古いがfilmdintを使うなら0.0.9s版(230105)が安定。

例3)-vf pullup,softskip,〜いろいろ〜
逆テレシネ。
映画カメラ(24000/1001fps)撮影素材、ようするに映画^^;、はfilmdintより上。

softskippullupが素材の全フレームを検証する為に必須。全フレームを検証する 必要が有るフィルタの直後に置くもの。
なお、最終的にmp4boxで.mp4にmuxする場合は-vfチェイン末尾にharddupが必須。
こ れがないと、ほとんど同一内容のフレームが連続した場合にきちんとフレームを書き出さず、AVI(MEncoderが想定するデフォルト出力形式)ヘッダ に「前のフレームリピートして」と書き込む。.mp4や.mkv作成用にrawvideo.264などで書き出す場合、このヘッダは存在しないので、最終 出力のフレーム数が不足する。

pullupの弱点はfps混合素材は苦手な事。
例えば、TV放送の映画では字幕や局ロゴ部分がたいてい毎秒60000/1001フィールドで合成されている。
そうした部分のインターレース縞が消せない。
この場合はpp系を補助的に使って潰すなど。例:
-vf pullup,softskip,crop=720:480:0:0,scale=640:480,hqdn3d=4:3:6,pp=l5,harddup
インターレース解除は先頭に置くのが定石だが、最初にpullupでインターレース縞のほとんどは消えてしまう。
これにインターレース縞の存在しない部分も一律に「合成」してしまうpp系を加えて字幕などに残る縞を確実に潰している。
上記ではpp=l5(弱いリニアブレンド)を使っているが、クロップ、スケール、デ ノイズをかけた後に回す事で副作用(特に色ボケ)の緩和を狙った。好みによりkerndeintを使う人もあるようだ。

その他に、特にTVアニメはオープニングは30fps、本編は24fpsの事が多い。また、CGを多用する場合など、本編中にも30fps部分が混在して いるケースもある。こうした素材は「みどころ」の動きがカクツク事になる。

こだわる場合は、fpsを自分の目で判断して場面ごとに分割エンコードして最適なフィルタをかけて可変FPSの.mp4にしたり、動きの方を優先して  pullupを使わず、pp系のみ・一律30fps・ビットレートを奢ってみたり、 QuickTime系の専用フィルタソフト(JES Deinterlacerなど)を使い分ける事になるのだと思う。

■クロップについて

crop=w:h:x:y
w:hは16の倍数でないものを使うと画質劣化。
MPEG系の基本的に16x16ピクセル単位で動き分析を 行う。特にMPEG4 ASP(xvidなど)では顕著に影響。
ギリギリではなく、縦横と16の倍数になるまで映像を切り落とすのが基本。
x264は設定次第で4や8の倍数もOK。
xは偶数のみ。
yも偶数のみ。インターレース素材では4の倍数のみ。

■その他

-o /dev/null
エンコード結果を書き出さない。
2パスの1stに使うとログだけ取れ、地味にHD負荷減。

■参考リンク

MEncoder Document試訳(途中)
MEncoderマニュアル試訳(途中)
posted by ばる at 00:00| Comment(1) | TrackBack(0) | mencoder | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
いつもお世話になってますm(_ _)m
今回の簡単なまとめ、私のよーな初心者にはかなり有益な情報です。
用語の意味からして??マークが飛び交ってる私にとって、このブログはバイブルのよーな存在でありましてw
特に今回のよーな基本篇のよーなまとめはすごく助かります。

P.S 
余談ですが、ぱるさんのスクリプトそのまま拝借させて頂いてh264mp4作成しましたが、完成ファイルが消えてまして。。
最初に試しで1分程のファイルをエンコした時はバッチリだったんで本チャンにトライしてみたんですが、出来上がったと思ったらファイルがなくてでショボーンでした(;´Д`A ```
mp4muxの段階でどーもダメになったみたいでして。。
31時間程費やしたのでちょっと凹みましたが、性懲りも無く再度挑戦してますw

ではまた来ます〜(*^_^*)ノ






Posted by atoman at 2006年04月30日 12:24
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。