madVR (ffdshowとのリサイズ画質比較)

madVRはmadshiという方が製作しているビデオレンダラー。
高画質という噂だったが、今までハードウェアのインターレース解除に対応していなかった為、試さなかった。
PC界隈ではここ何年も、Radeonのベクター適応がもっとも優れたインターレース解除方式なのだ。
(参照:Radeon DxVAとffdshowのインターレース解除性能比較Core i5-2500K の動画画質チェック)
それがv0.79で遂に対応して、v0.80で使い物になるようになった。

madVRを利用するメリットは、
1:高画質を考えて作成されている事
2:VGA側の映像処理をパスする事
3:輝度、色差、それぞれ別にリサイズ手法を指定出来る事
4:ハードウェアインターレース解除後に高性能のリサイズ処理を掛けられる事
の4つという所か。

これ以外にGPU処理なのでCPU負荷を減らせるという利点もある。
madVRはVGAの映像処理をパスする為、画質の割りにはGPU負荷も低い(madshi氏のプログラム技術が高いのかもしれない)ので、負荷低減目的でも使える。
が、これは画質とは関係の無い話だ。
リサイズ手法を柔軟に選べるのは画質面での重要なメリットだ。

インストール後色々弄くって常用に至った設定値
madVR Setting 01

madVR Setting 02

madVR Setting 03

madVR Setting 04

madVR Setting 05

madVR Setting 06
デコーダーはffdshowを使うので全て切った。
ffdshowからの出力は、madVRの機能を利用する場合はYV12、それ以外はRGB32にした(この時リサイズはffdshowで行う)。
Radeon VGAでベクター適応を利用する場合はNV12で出力する必要があるはずなのだが、何故かmadVRはYV12でベクター適応が掛かる。
逆にNV12だと不具合が出る動画があった(※1)。
madVRの中でYV12からNV12に変換してるのかもしれない。
上記設定で、インターレース解除も2-3プルダウンもきちんと行われるのを確認した。

スケーリング(リサイズ)処理はデフォルトが、
Chroma(色差):SoftCubic softness:100
Luma(輝度):Lanczos 4taps
madshi氏のスケーリング手法の選択の指針は明快だ。
色差は粗を出さずにしっとりと、輝度で鮮鋭度を稼ぐという考えだ。
Lanczosでもっと鮮鋭度の高い8tapsを使わないのは、リンギングが強すぎるからだろう。
Chromaがかなり鮮鋭度の低い(つまりボケる)手法を使っているのが気になって色々試してみたら、Lumaに比べてChromaの方がリンギングの影響が大きい事が判った。

ffdshowでリサイズ設定を色々変えて試してみた。
輝度Lanczos1/色差Lanczos1
HQV nointerlaced lancos1-1_2 HQV nointerlaced lancos1-1_1

輝度Lanczos10/色差Lanczos1
HQV nointerlaced lancos10-1_2 HQV nointerlaced lancos10-1_1

輝度Lanczos1/色差Lanczos10
HQV nointerlaced lancos1-10_2 HQV nointerlaced lancos1-10_1

明らかに色差の方がリンギングのビロビロが大きく出ている。
色々調べると、リンギングの大きさはLanczos等のtaps数を設定する手法の場合、tap数が増える程、そして映像拡大の倍率が大きい程、大きくなるようだ。
tap数が2倍になれば、リンギングも2倍。
映像拡大率を2倍にすれば、リンギングも2倍。
と単純に考えて間違いでは無さそう。
従って大抵の動画では色差信号は輝度信号の縦横半分の解像度になっているので、色差のリンギングが輝度よりも強く出る事になる。
輝度と色差でリンギングの大きさを揃えようと考えるなら、色差の方がだいたい1/2~1/4程度リンギングの少ない手法を使うのが正解のようだ。
拡大率によってリンギングの大きさが変わるという事は、最適なリサイズ設定が動画解像度と出画解像度によって変わる事を意味する。
ある解像度の動画で最適と感じるように設定したとして、それより解像度が低くなる程リンギングが大きく目立つようになり、解像度が高くなる程リンギングは小さくなるが、それ以前に鮮鋭さを稼ぐ必要が無くなる。
理想的な手段は、DVD解像度(720×480)の最適設定と、地デジ周辺解像度(1280×720~1440×1080)の最適設定を用意する、そしてモニター解像度はBlu-ray解像度=1920×1080にする事だろう。
話しを元に戻して、madVRの設定だが、製作者のmadshi氏が画質に対する理解の深い方と見受けるので、大抵の人はデフォルトをそのまま使えば良いだろう。
適当に弄ってもデフォルトよりも良くするのは難しい。
私は比較画像を幾つか取って、色んな映像を見てみて、ChromaだけSoftcubic80に変更した。
(画像を別タブで開いて切り替えて見ると判り易いです)
madVR 色差Softcubic70 (インターレース映像)
HQV interlaced madVR Lancos4-Softcubic70_1

madVR 色差Softcubic80 (インターレース映像)
HQV interlaced madVR Lancos4-Softcubic80_1

madVR 色差Softcubic100 (インターレース映像)
HQV interlaced madVR Lancos4-Softcubic100_1
LumaをLanczos4のままにしたのは、最近は高解像度の動画がメインになってきたからで、リンギングがそんなに目立たない方が好適になった。

madVRとffdshowのリサイズの質が同じか、比較してみた。
madVR 輝度Lanczos4/色差Lanczos4 (インターレース映像)
HQV interlaced madVR Lancos4-4_2 HQV interlaced madVR Lancos4-4_1

ffdshow 輝度Lanczos4/色差Lanczos4 (プログレッシブ映像)
HQV nointerlaced lancos4-4_2 HQV nointerlaced lancos4-4_1

ffdshow 色差Lanczos4 (プログレッシブ映像、YV12からRGBへの高画質変換OFF)
HQV nointerlaced ffdshow lancos4-4 rgb_nm_1

ffdshow 色差Lanczos4 (インターレース映像をyadif)
HQV interlaced ffdshow lancos4-4_1

madVRとffdshowで縦横比が少し違うが、白黒の画像の質に差は無い。
すなわち輝度信号のリサイズに差は無い。
縦横比はmadVRが720×480 4:3を1440×1080にリサイズしたのに対して、ffdshowは1472×1080にリサイズしたのでffdshowの方が狂ってる。
(ffdshowのバグか、設定が何処かおかしかったのかは今回追求しない)
対して色差の方は明らかに違う、設定を変えてみても同一にはならなかった。
ffdshowの方がリンギングが薄い事から(幅は同じなのに)、リサイズ、アスペクトの項目で設定した手法でリサイズした画像と、YV12からRGBへの高画質変換が影響する手法でリサイズした画像を、ブレンドしているのではないかと想像する。
YV12からRGBへの高画質変換が影響する手法の方は、リンギングの少ない、鮮鋭度の低い手法を採用していると思う。
ともかくffdshowの色差リサイズの質はmadVRよりも劣っている。

ffdshow 色差Bilinear (プログレッシブ映像)
HQV nointerlaced Bilinear_1

ffdshow 色差Bicubic -0.59 (プログレッシブ映像)
HQV nointerlaced Bicubic-059_1

ffdshow 色差Lanczos2 (プログレッシブ映像)
HQV nointerlaced lancos8-2_1

画質優先の場合、madVRが現状もっとも優れた選択だ。

2012/4/20追記
※1
:最新のmadVRではNV12での入力に不具合は無いようです(v0.82.5で確認)。

コメントの投稿

非公開コメント

最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
FC2カウンター
リンク
検索フォーム
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR