2005年05月29日

-vf filmdint

filmdint[=options]

例:-vf filmdint=io=2997:2997/crop=720:480:0:0/fast=3/dint_thres=8/comb_thres=128/diff_thres=128/sad_thres=64/verbose=0
 ※io=2997:2997以外デフォ値。io=2997:2997は29.97fpsをfpsを変えずに出力する時に使う。

例:-vf filmdint -fps 29.97 -ofps23.976
 ※素材を29.97で再生し、23.976fps化する。一切オプションをつけない場合はこれが本来の使い方。

mencoderのインターレース解除について。ここの続き。
pp=系は一律に画面全体を加工するので漏れは無いが、pp=mdでは動くものの輪郭にジャギが出る、pp=lbはゴースト上に映像が二重化する。

filmdintは時折インタレ解除漏れが出る。動きの速いシーンや、動きの少ないシーン、例えばアニメの口パク(遠景などで口が小さい時)などで多い。また、字幕でインタレ縞が残る事もある。

-vf filmdint,kerndeint

のようにkerndeintで補完する事で縞はほぼ完全に消えるが、これは動くものの輪郭にジャギが出てしまい、当方の目にはpp=mdと大差ないように思える。kerndeintのデフォ値はかなり強く、当方の目では気にならない部分までインタレノイズを検出する為だ。filmdintの補完に使うには強すぎるように思う。

考えられる手は二つ

1)オプションを弄ってfilmdntだけでなんとかする。→filmdintはx86(mmx2/3DNow!)に高度に最適化されてるので使えないもんもある。
 かなり偏執的かも知れない。
2)kerndeintのオプションを弄って補完を弱めにする。

楽なのは後者だが、折角なのでfilmdintのオプションを訳してみた。


==訳文開始==
  •  逆テレシネフィルタ。上記pullupに似ている。
  •  mixed soft and hard telecine、さらに、TV放送向けに撮影時のフレームレートからスローダウン/スピードアップ処理された映画の為の特別なサポートを含む、あらゆるプルダウンパターンを扱えるようにデザインされた。
  •  フレームブレークの検出には輝度プレーンのみを使用する。
  •  フィールドがマッチしない場合、インターレース解除は単純なリニア近似値で行う。
  •  素材がMPEG-2の場合、このフィルタはMPEG-2デコーダがセットするfield-flagにアクセスする最初のフィルタでなければならない。
  •  素材となるMPEGによっては、大量の"Bottom-first field" 警告が出ない限りこのアドバイスは無視しても良い。オプション指定をしない場合、通常の逆テレシネを行う。この場合、mencoderの -fps 29.97 -ofps 23.976と一緒に使う事。
  •  mplayerで使うと、再生フレームレートにむらが発生する。しかしそれでもpp=lbやインターレース解除しないよりは非常に良い。
  •  複数オプションを指定する際の区切りは/ 。

crop=<w>:<h>:<x>:<y>
cropフィルタと同じだが、より早く、mixed hard and soft
telecineされた素材でも、yが4の倍数でなくても動作する。彩度プレーンでx または yが分数ピクセルのクロップを必要とした場合、クロップ範囲は拡大される。通常、これはxとyは偶数でなければならないという意味だ。

io=<ifps>:<ofps>
ifpsで指定した数の入力フレームに対して、ofpsで指定した数のフレームを出力する。
ifps/ofps の比率は -fps/-ofps の比率にマッチしていないといけない。
これは映画、オリジナルとは違うフレームレートでTV放送された映画に使える。
※訳注:io=2997:2997で、29.97fps→29.97fpsになる。
この場合-ofps 29.97を入れても入れなくても結果fpsは同じ。地味にずれがあるがあんま気にしなくてもよさそう。NTSCは正確には29.9733...のようだ。
それならio=1:1でもよさそうなものだが、これはなぜかうまくいかない。

luma_only=<n>
nを0以外にすると、彩度プレーンを加工せずコピーする。YV12でサンプリングされたTV(彩度フィールドの一つが廃棄される)に有用。

※訳注:luma_only=1にしたら、虹状の帯が出た。CaptyTVのMPEG2-PSはYV12では無いようだ。

mmx2=<n>
x86では、
 n=1  MMX2 を使う
 n=2  3DNow!を使う
 他   plain Cを使う(※訳注:素のCってなんだ。)
 未指定 MMX2 と 3DNow! を自動検出して使う。
このオプションは自動検出を無効にしてどれかを強制するのに使う。

※訳注:特に未指定でも問題なさそう。mmx2=3でも違いは分からなかった。

fast=<n>
nが大きいほど正確さと引き換えに高速になる。
  • n=3  デフォルト
  • n=奇数 RE- PEAT_FIRST_FIELD
    MPEG flagのついたフレーム直後のフレームをプログレッシブと見なす。従ってsoft-telecineされたMPEG-2素材で処理時間がかからない。これはMMX2 か 3DNow! が無いと無効。

MMX2 か 3DNow!が無い場合、
  • n=0 または 1 n=2 または3の場合と同じ演算を行う。
  • n=2 または3 フレームブレークの検出に使う輝度レベルの数を256から128に半減。 結果、正確さをさほど失わない早い処理。
  • n=4 または5 早いが正確さで劣る測定基準をフレームブレーク検出に使用。高い垂直ディテイルをインターレースされた信号と誤検知する傾向が高まる。

※訳注:未指定(多分fast=3)とfast=0では後者が非常に地味にファイルサイズが肥大した。速度や映像品質の違いは分からなかった。

verbose=<n>
n=0以外 各フレームの詳細な測定基準を print。デバッグ用。
※訳注:テスト素材で###bad telecine###というメッセージが頻発した。こいつをなんとかする方法を見つければ良い訳だ。

dint_thres=<n>
インターレース解除のスレショルド(閾値)。
unmatchedフレームのインターレース解除に使用する。大きな数字にするとインターレース解除が減る。
n=8   Default
n=256 インターレース解除オフ。
※訳注:未指定とdint_thres=1の速度や映像品質の違いは分からなかった。
###bad telecine###はunmatchedフレームではないという事か。

comb_thres=<n>
Default 128。
topと bottom フィールドを比較する閾値。
※訳注:comb_thres=64解除漏れはまだ残るが、かなり減った。一カ所あったテロップの縞は消えた。
comb_thres=32 上記からの減少は僅か。これまで発生していなかった場所で新たに発生。ナゾ。

diff_thres=<n>
Default128。
フィールドの時間軸変化の閾値。
※訳注:diff_thres=64 効果無し。

sad_thres=<n>

Default 64。
絶対差合計(sam of absolute difference)の閾値。
※訳注:sad_thres=32 映像部分に効果無し。一カ所あったテロップの縞は消えた。

==訳文終了==

補足

-vf filmdint=fast=0/dint_thres=1/comb_thres=1/diff_thres=1/sad_thres=1

では、インタレ解除漏れ大幅減少。但し、
これまで発生していない箇所で新たに発生。(→comb_thres下げ過ぎ)
母線のジャギも増えた印象。これは、kerndeint同様、目に見えないインタレノイズを検出していると思われる。(→多分sad_thres下げ過ぎ)
posted by ばる at 07:59| Comment(0) | TrackBack(0) | mencoder | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

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

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

コメント: [必須入力]

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


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

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

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