2006年06月16日

tfields、yadif、mcdeint

【タグ】[インターレース解除][MEncoder][-vf][60fps]

 Pre8 公開で気付いたインターレース解除フィルタ、yadifとmcdeint。説明にtfieldsが登場するのでそれも合わせてちょっと読んでみました。

バージョン:MEncoder dev-SVN-r18695-4.0.1
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜試訳ここから

tfields[=mode[:field_dominance]]

Temporal field  separation - split fields into frames, doubling the output framerate.  Like the telecinefilter, tfields  will only work properly with MEncoder, and only if both -fps and -of- ps are set to the desired (double) framerate!
Available modes are:
0    Leave fields unchanged. (This will jump/flicker.)
1    Interpolate missing lines. (The algorithm used might not be so good.)
2    Translate fields by 1/4 pixel with linear interpolation (no jump).
4    Translate fields by 1/4 pixel with 4tap filter (higher quality). (default)

Available field dominances are:
-1   auto (default) Only works if the decoder exports the ap- propriate information and no other filters which discard that informationcome  before  tfields  in  thefilter chain, otherwise it falls back to 0 (top field first).
0    top-first
1    bottom-first

tfields:試訳

 時間軸フィールド分割。すなわち、フィールドをフレームに分割し、出力フレームレートを2倍にする。テレシネフィルタ同様、tfieldsも適切に動作 するのはMEncoderのみ。また、-fpsと-ofpsがきちんと(2倍に)指定されていなければならない!

利用可能なモードは以下の通り:
0 フィールドを変更しない (ジャンプやフリッカが生じる)。
1 不足ラインを補完(ここで使われるアルゴリズムはあまり良くない)。
2 リニア補完でフィールドを1/4ピクセル単位で変換(ジャンプが無い)。
4 4タップフィルタでフィールドを1/4ピクセル単位で変換(よりよい画質)。 (default)

利用可能なfield dominance(フィールド判定方式)は以下の通り:
-1 auto (default)正しく動作する条件は、デコーダが適切な情報を出力し、かつ、フィルタチェインの中で、tfieldsより前に、その情報を破棄してし まうフィルタが無い事。さもないと0(top-first)が適用される。
0 top-first
1 bottom-first

"4タッ プフィルタ"による補完というのは 〜実際のところはよくわからないのですが〜、pp=l5の説明となにか似ているにほひがします。
"リニア補完"はpp=li(linear interpolation)と同じ理屈と思われます。過去にpp=liとpp=md(ffmpegXのインターレース解除)を比べた印象は、素早く動く 人物の輪郭はmdより上だが、動きの少ない部分はmdより悪い(特に直線、文字や車の縁などにジャギが出る)。というものでした。

yadif=[mode[:field_dominance]]

Yet another deinterlacing filter

<mode>
0: Output 1 frame for each frame.
1: Output 1 frame for each field.
2: Like 0 but skips spatial interlacing check.
3: Like 1 but skips spatial interlacing check.
<field_dominance>
Operates like tfields.

yadif:試訳

 Yet another("もちっと気の利いた"みたいな語感があるらしい)デインターレースフィルタ。

<mode>
0: 1フレームを1フレームとして出力。(*実験ではデフォルトの模様*)
1: 1フィールドを1フレームとして出力。
2: 0 同様。ただし空間軸のインターレース検出をスキップ。
3: 1 同様。ただし空間軸のインターレース検出をスキップ。

<field_dominance>
tfields同様。

mcdeint=[mode[:parity[:qp]]]

Motion  compensating deinterlacer.  It needs one field per frame as input and must thus  be  used together  with tfields=1  or yadif=1/3 or equivalent.

<mode>
0: fast
1: medium
2: slow, iterative motion estimation
3: extra slow, like 2 plus multiple reference frames
<parity>
0 or  1 selects which field to use (note: no autodetec-tion yet!).
<qp>
Higher values should result in a smoother motionvector field but less optimal individual vectors.

mcdeint:試訳

 動き補償デインターレーサ。1フレームにつき1フィールドの入力が必要となるので、tfields=1  や yadif=1/3、または同等のものと一緒に使う必要がある。
<mode>
0: 高速
1: ミディアム
2: 低速, 反復動き予測
3: 超低速、複数参照フレームを2以上にしたのと同等。
<parity>
0または1でどちらのフィールドを使うかを指定 (note:自動検出はまだ無い!)
<qp>
高い値ほどモーションベクトルがスムースになるが、個々の ベクトルは最適ではなくなる。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜試訳ここまで

 と、いうわけで、これらはフィールドを合成するインターレース解除(pp系やfilmdint、kerndeint)とも、逆テレシネ(pullup) とも異質っぽい。

 TVカメラ撮影素材は元映像がインターレースドなフィールド構造なのでがっちりキレイにインタレ解除する事は不可能。一般的には切り刻まれたフィールド を組み合わせてフレームを合成するが、前後のフィールド間には1/60秒の時差があるため、そのままではジャギが残る。いろんな計算手法をつかってインタ レ縞を消しても、1秒あたりの映像枚数を半減している事に変わりはなく、動きの滑らかさは失われる。

 tfields、yadif、mcdeintは、フィールドを合成せず、枚数も減らさずそのままフレーム化(=fps倍増)することで動きの滑らかさを 保持し、その上で欠けている(もともと存在しない)ラインを時間軸・空間軸で予測して埋めてみよ〜とゆ〜、富豪インタレ解除。
 いやtfieldsの存在は知ってたけど、まさかファミリー化するとは。ヤケクソの洒落だと思ってたよあたしゃ。素直に考えると必要なビットレートは2 倍になるわけだし、、、
 、、、
 、、、
 、、、、、、ん?
 
 複数参照フレーム、Bピラミッド、8x8dct、skip/directマクロブロック、、、x264の符号化ツールを追い込めば、ビットレートはそう でもないのかな?

実験

 15秒の車のCM。x264の主な設定はbitrate=1000:bframes=1:nob_adapt:direct_pred=3:subq= 7といったところ。その他はQT7互換の範囲で作成。
avgQP(P) PSNR(Global) bitrate(2nd) 感想
tfields 28.06 40.780 686.014 長い水平の線にチラつき。
TVの走査線と思えばまぁそんなもんかと思える範囲。
yadif=1 26.35 41.476 668.767 細かい文字などにfilmdint状の潰れ。1コマ単位で変化。
水平な線のチラつきは無い。
yadif=1,mcdeint=1:0 25.96 41.614 691.203 Dual core G5 x2とか欲しいくらい遅い。
turbo=1.5相当の1stが実時間の10倍を超えた。
細かい文字の潰れはやや少なく、
水平な線のチラつきも無い。 60fps系の中ではもっともブロックノイズが少ない。
pp=l5(29.97fps) 23.20 43.624 1022.137 -
 短い素材とはいえ、60fps系はレートコントロールに大きな問題がある。
 この点が改善されればQPやPSNRの差はずんと縮むだろう。マジでx264のオプション次第でビットレート増やさなくて済むかもしれない。ただし、未 計測だが、速度はいずれも低下。再生負荷はPPC G5 2.0Ghz x 2では特に問題無かった。

 画質の点では、tfieldsとyadif=1では甲乙つけがたい。mcdeintはこれらより優秀と感じたが、エンコード速度が群を抜いて鬼のように 遅く、さらにpp=l5に比べると細かい文字の潰れが目立つ。フィールドの自動検出がついたらまた試す価値があるとは思う。
 ちなみにyadif=0は2フィールドを1フレームに合成するらしく、-fpsと-ofpsは同じ値にする必要があった。これもfilmdint的な万 能ナイフといったところか。

余談

MEncoderのインタレ解除フィルタを大雑把に分類してみる。
いやほら、インタレ解除は将来の再生ソフトに期待してやらないのがベストってのは置いといてさ^^;

オールラウンド系
pp系,kerndeint,filmdint
映画カメラ撮影素材向け
ivtc,pullup,など
TVカメラ撮影素材向け
30fps指向
オールラウンド系に同じ
60fps指向
tfields、yadif、mcdeint

 現在の60fps指向は使いどころが難しいが、開発の進捗、ディスクコストの低下、CPUの性能向上、x264のチューニング(特に複数参照フレームと skip/directマクロブロック)などがうまくかみ合えば次のオールラウンド系に育っていくのかも知れない。24fps/30fps混合素材がどー したとかVFRの作り方とか考えなくて済むもの。考えてないけど^^;
posted by ばる at 00:00| Comment(0) | TrackBack(0) | mencoder[コマンド] | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

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

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

コメント: [必須入力]

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


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/19366027
※言及リンクのないトラックバックは受信されません。

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

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