[PR]三井住友海上きらめき生命:医療保険のご案内と資料請求はこちらから

YV12に於ける各種プラグインの出力について 第 9 版(2003/08/05)


sourceがYV12の場合、deinterlace 又は NoiseReductionを実行した場合
outputはinterlacedになるのか、progressiveになるのかを実験してみた。
出力結果のimageはVirtualDubでdecompressorがXviDを使って表示されたもの。
それをIrfanViewにCut&Pasteしてpng形式で出力したものである。
まず、元データはI420 160x120でUVをライン毎に交互に異なる値にしている。
MPEG-2ソースをMPEG2Dec3で読み込んだ場合、progressive,interlacedに関わらずI420となっている。

0. のoriginalの表示をまず見てください。
2ライン毎に交互に表示されている。つまりprogressive YV12として取り扱われている。
実はAvisynthは、originalがinterlacedでもprogressiveでも違いを認識していないのである。 この部分は人まかせとなっている。
(また、I420でもYV12でもAvisynthを出るときには常にYV12となる。 さらにI420の時にUVをswapするようなこともしない)

つまり、originalをprogressiveだとした場合は画面表示が実際の正しいイメージとして 見えていることになる。
originalがinterlacedだとした場合は、実際には [ConvertToYUY2(true)] 画像のように 1ライン毎に交互となるもので
画面表示上は正しいイメージで見えていないと考えておく必要がある。
このことを踏まえて結果をみてください。

[結論らしきもの] (2003/08/05)
多分、filterは色差のライン間共有関係を特に意識してなく、もっとも有効であると各フィルタが
判断したアルゴリズムにより適宜色差が補正されるということです。
このテストの目的は、progressiveとinterlacedとで色差(UV)情報のライン間での共有関係が
異なるのを各フィルタが補正しているのかどうかを見るためであったが、どうやらトンチンカン
なことを実験していたようです。
私は画像フォーマットに拘りすぎていて、俗に言う『木を見て森を見ず』の状態になっていたようです。
考えてみれば、ただでさえ少ない色差情報なのでブレンド(4lineが平均した色差になる)したり
しないでできるだけそのまま残した方が良い結果が出るのかもしれません。
ご要望に沿って、このレポートは残しておきますが、注意が必要です。
ここにある結果だけを見て各フィルタの実力を判断しないでください。
ここにある結果は、ある特殊なケースではこういう結果が出た、それぐらいに見ておいてください。
別の画像では全く違った結果になるかも知れません。
以下に2chでのやりとりを載せて置きます。

Avisynthを絶賛ιょぅょ PART12 968 :名無しさん@編集中 :03/08/02 23:51 > YV12に於ける各種プラグインの出力について 第 6 版 インターレースとプログレッシブの判定方法が大雑把過ぎると思います。 特殊なソースを元にした特殊な結果だけを元に判断すると間違った結果になります。 974 :kiraru2002 :03/08/03 02:43 >>968 ご意見ありがとうございます。 具体的に何処が不味いとかこういうのを調べた方が良いとか思っていることはありますでしょうか? 一つ私の方から言っておくことは、 別にプログレッシブ、インターレースを見分けようなんて考えは全然無いということです。 オリジナルはインターレースと仮定しても、プログレッシブと仮定して全体を見てもらっても全然かまいません。 (各人の良く使うソースに合わせて見てもらえば良いのです) ただインターレースだと仮定した場合、画面上は正しい画像が表示されていないということを念頭においておけば良いだけです。 (ただ私の考えでは、人まかせにしないでAvisynth自身がYV12,I420,プログレッシブ、インターレースをきちんと 管理すべきだと思っています) 最後のエンコード結果と再生した場合の見え方についてご意見のある方はいないでしょうか? (俺のところではこんなふうに再生されてないぞ、とかでもいいです) 私にはどういった仕組みでこのように見えるのか説明できません。 (私にはXviD MPEG-4 Decoder filterの再生だけがすべての場合が正しく見えていると思われます) 977 :名無しさん@編集中 :03/08/03 22:24 > 974 ソースが IT や Auto24FPS の解除残しになる典型的なパターン (輝度も色差も時間的変動が無く前後フィールドを入れ替えても縞々にならないフレームが構築されない) なので縞々が残っています。 1フレームごとにピンクとみどりが入れ替わるソースを用意してあげるとまた少し違った結果になるかと思います。 (その場合エンコード後の結果がもっと奇奇怪怪になるような気もしますが。試していませんけど) 980 :kiraru2002 :03/08/04 02:24 このスレの残りはもう適当に使ってもいいのかな? >>977 一度試してみます。 ただ、私の知りたいのは縞々が取れる、取れないじゃなく 色差の並び替えが行われるのか行われないのか、なのですけど。 YV12 - 2x2 ピクセルで色差を共有する プログレッシブ - 連続する2ラインが共有 0=1, 2=3, 4=5, 6=7, ... インターレース - 1ラインおきに共有 0=2, 1=3, 4=6, 5=7, ... 前提1:もしインターレースがプログレッシブに変換されるなら、 0=2 -> 0=1 1=3 2=3 処理が入る。つまり 0=a, 1=b なら変換後は 0=1=(a+b)/2, 2=3=(b+a)/2 となるはず。 前提2:上記処理は、インターレース解除/24FPS化等で解除がうまくできようができまいがフィルタとして一定の動作 という前提のもとにテストしたんだけど、この前提が間違ってると全く意味のないテストになるわけで... 981 :kiraru2002 :03/08/04 02:43 前提1が、0=1=a, 2=3=b というように、ブレンド処理じゃなく0ライン目と3ライン目の色差が代表される という考えもあることに気が付いた。(この場合は色差がそのまま) ということは、結果はどっちでも良く気にしないで良い、ということになるのかな? 982 :名無しさん@編集中 :03/08/04 03:11 >980 > 並び替えが行われるのか行われないのか ということならフィルターの実装による、としか言いようがありません。 インターレースかプログレッシブかの違いは L1C1 L2C2 L3C1 L4C2 ... と扱うか L1C1 L2C1 L3C2 L4C2 ... と扱うかという差でしかありません。 巷にある DeInt 系のフィルターはインターレース → プログレッシブ変換をしているわけではなく 出来るだけ見やすいプログレッシブフレームを構築しようとしているだけです。 (変換するだけなら AssumeFrameBased を使います) > というように、ブレンド処理じゃなく0ライン目と3ライン目の色差が代表される > という考えもあることに気が付いた。(この場合は色差がそのまま) ここをどう実装するかがそのフィルターの肝でもあります。 983 :名無しさん@編集中 :03/08/04 03:34 >982 > ということならフィルターの実装による、としか言いようがありません。 しかもフレームごとやドットごとに処理の仕方を変えている場合が多いため それこそある特定のパターンだけ試してもフィルターの性格はわかりません。 > 前提が間違ってると全く意味のないテスト 前提は間違っている気がしますが、あのテストは結構興味深い結果が一覧としてまとまっているため 非常に有用だと思います。(消しちゃわないでね、というお願いだったりします)
original のAVSをVirtualDubでdirect stream copyしたもの。 YV12.zip (Testは出力前のAVSの段階で実施)

____________________________________________________________
I420 YV12(左のI420を一旦
AVI出力したもの)
YUY2
ConvertToYUY2(true)
YUY2
ConvertToYUY2(false)
0. original
Y = 80808080 U = 4040 V = 6060
Y = 80808080 U = b0b0 V = d0d0
Y = 80808080 U = 4040 V = 6060
Y = 80808080 U = b0b0 V = d0d0
original ConvertToYUY2(true) ConvertToYUY2(false)
1. YV12toYUY2(true) , YV12toYUY2(false)
[YUY2画像]
YV12toYUY2(true) YV12toYUY2(false)
2. ConvertToYUY2(true).ConvertToYV12()
YUY2(true)->YV12
3. TomsMoComp(1,5,1)
TomsMoComp TomsMoComp_YUY2_i TomsMoComp_YUY2_p
4. FieldDeinterlace()
FieldDeinterlace FieldDeinterlace_YUY2_i FieldDeinterlace_YUY2_p
5. Telecide(order=1)
Telecide Telecide_YUY2_i Telecide_YUY2_p
6. AutoDeint()
I420とYV12とでUVをswapしているか
又はU,Vをポインタを介さずにアクセスしている?
AutoDeint_I420 AutoDeint_YV12 AutoDeint_YUY2_i AutoDeint_YUY2_p
7. Auto24FPS(true,24,16,"",false)
Auto24FPS(drop=false)
Auto24FPS(mode="dot")
AUTO24FPS AUTO24FPS_YUY2_i AUTO24FPS_YUY2_p
Auto24FPS(mode="blend")
AutoDeintと違い、I420とYV12とで変化なし
AUTO24FPS_Blend AUTO24FPS_Blend_YUY2_i AUTO24FPS_Blend_YUY2_p
8. KenkunNR()
KenkunNR KenkunNR_YUY2_i KenkunNR_YUY2_p
9. KenkunNRT()
KenkunNRT KenkunNRT_YUY2_i KenkunNRT_YUY2_p
10. Decimate()
Decimate Decimate_YUY2_i Decimate_YUY2_p
11. IT(24, "TOP", false, diMode=1)
IT(fps=30)
IT(blend=true)
IT(diMode=0)
IT(diMode=2)
IT IT_YUY2_i IT_YUY2_p
IT(diMode=3)
IT_diMode3 IT_diMode3_YUY2_i IT_diMode3_YUY2_p
12. Convolution3D("animeHQ")
Convolution3D Convolution3D_YUY2_i Convolution3D_YUY2_p
13. VagueDenoiser()
VagueDenoiser VagueDenoiser_YUY2_i VagueDenoiser_YUY2_p
14. WarpSharp(depth=56, blur=2, bump=96, cubic=-0.6)
WarpSharp WarpSharp_YUY2_i WarpSharp_YUY2_p
15. LanczosResize(160,180)
LanczosResize LanczosResize_YUY2_i LanczosResize_YUY2_p


上の 0.(original) をVirtualDub(fast recompress)でエンコードした結果

DivX 5.05では、Source Interlace = Encode as Interlacedに設定してエンコード(1passQB)したが、
結果から見るとこの指定が効いていないようだ。
普段DivXを使わないので、設定に問題があるのかも知れない。
なお、この結果はエンコード後のAVIを上記と同様にpngにしたものである。
DivX/XviDのdecorderはprogressiveとして、ffdshowはinterlaced->progressive?として 取り扱うようです。
(どうしてこのような結果になるのか不明です)

(なんか変なので、誰か追試してみて貰えないでしょうか?)

※ オーバーレイ表示にする為に、DivXG400をloadしていることを明記しておく。
※ (なお、表中のffdshow(overlay)の画はペイントブラシで作成した擬似的なものであり、 細線の色合いは見た目とはちょっと違います。正確に作れてないです。)
※ 皆さんの再生環境では異なる結果になるかも知れないので、参考にAVIファイルもリンクしておきます。

エンコード後の AVI file : avi.zip DivX decorder(overlay)/
XviD decorder(overlay)/
ffdshow(GDI)
ffdshow(overlay)
1. DivX 5.05 - Progressive encode
DivX-Progressive DivX-Progressive_ffdshow
2. DivX 5.05 - Interlaced encode
DivX-Interlaced DivX-Interlaced_ffdshow
3. XviD (koepi 24062003-1) - Progressive encode
XviD-Progressive XviD-Progressive_ffdshow
4. XviD (koepi 24062003-1) - Interlaced encode
XviD-Interlaced XviD-Interlaced_ffdshow
5. DivX 5.05 - Progressive encode (YUY2)
ConvertToYUY2(true)
DivX-ProgressiveYUY2 DivX-ProgressiveYUY2_ffdshow
6. DivX 5.05 - Interlaced encode (YUY2)
ConvertToYUY2(true)
DivX-InterlacedYUY2 DivX-InterlacedYUY2_ffdshow
7. XviD (koepi 24062003-1) - Progressive encode (YUY2)
ConvertToYUY2(true)
XviD-ProgressiveYUY2 XviD-ProgressiveYUY2_ffdshow
8. XviD (koepi 24062003-1) - Interlaced encode (YUY2)
ConvertToYUY2(true)
XviD-InterlacedYUY2 XviD-InterlacedYUY2_ffdshow
テスト環境


[PR]ベビー用品はたまひよ♪:子育てが楽しくなる便利アイテムいっぱい