madVRの最大の特徴は、様々な高画質なスケールアルゴリズムを

設定できることです。

 

よって、scaling algorithms の設定は、madVRの 設定の肝 と呼べます。

 

どれにするかは、「実際に見て、好みの画質になる設定を選択する」

のが基本ですが、予備知識がある方が良いでしょう。

 

 

 

 

基本的な事

映像は、輝度luma)と彩度chroma)で構成されています。

ディテールレイヤーとカラーレイヤーの2つのレイヤーがあり、

この2つのレイヤーを重ねて映像にしている。 というイメージです。

(実際は、luma・Cb・Crの3つのレイヤー)

 

クロマ・アップスケール(chroma upscaling)は、彩度をアップしてくれる機能です。

要は、色鮮やかにしてくれる機能です。

YCbCr 4:2:0 のような色差が抑えられているデータを

RGB変換する前に YCbCr 4:4:4 にアップスケールします。

動画を拡大する・しないに関わらず、色差が抑えられている動画の彩度を

上げてくれます。

実際は、色が濃くなるというより、グラデーションがより細かくなり、

解像度が上がったかのように見えます。

 

イメージ・アップスケール(image upscaling)は、リサイズした映像と元の映像の差を

少なくするための機能です。

例えば1280*720の動画を3840*2160に拡大しても、

3840*2160の動画を再生しているかのように映すのが、この機能の目的です。

動画をリサイズした時に、補間するドットのluma(輝度) や chroma(彩度)の

計算アルゴリズムを選択することになります。

 

 

人間の目は、色より明るさに敏感です。

YCbCr 4:2:0の映像ソースが多いのは、

データを少なくするために、クロマ情報を間引いて、輝度優先のデータにしています。

madVRのイメージアップスケールも輝度優先になっています。

 

もし、処理時間がかかり、クロマアップスケールかイメージアップスケールのいずれかを

ダウングレードする場合は、クロマアップスケールをダウングレードさせます。

 

なお、madVRの出力はRGB形式に変換されますが、

GPUカードからディスプレイへの出力は、GPUカードのドライバーで決められます。

NVIDIAカードの場合は、RGB/YCbCr ともに設定可能です。

YCbCrでの出力は、限定レンジ(16~235)にされる場合が多く、

YCbCr4:4:4以外は、Chromaデータを劣化させるので、

ディスプレイドライバは、RGBフルレンジで出力するように設定します。

 

 

 

 

madVR レンダリング プロセス

 

 

 

 

madVR(旧バージョン)のレンダリング プロセス

 

 旧バージョンのプロセスも参考になる。

 

 旧バージョンも 現在とプロセスはほぼ同じ。  NNEDI3がNGUに代わった。

 NGU  luma doubling と chroma doubling → RGB変換 → upscaling refinement →

  image upscaling / image downscaling 

 の流れになる。

 

  super-xbrは、RGBのまま処理される。

 

 

 

 

 

 

 

 

 

scaling algorithms

用語説明

aliasing:エイリアシング。線がギザギザになる。シャギーのようなもの。
ringing:エッジに沿うように出現する映像処理のオーバーシュート。

      いわゆるゴースト/ハローのこと

other artifacts:その他の副産ノイズ

 

chroma upscaling

chroma upscalingでYCbCr4:4:4にアップスケールされ、

RGBデータに変換された後、

image downscaling・image upscaling・Upscaling Refinementは

RGBデータで処理されます。(NGU系を除く)

 

できれば、リンギングが発生しない NGU系を設定します。

NGU Anti-Alias (NGU-AA)は、NNEDI3の代替えになります。

後は、ノイズ要素が少ない Jinc + AR(anti-ringing filter)がいいですかね。
super-xbr はシャープになりますが、ノイズが多い気がします。
super-xbr +AR の場合は、sharpness: 75 以下にした方がノイズが出にくくなります。

 

 

最小処理:

Nearest Neighbor
Bilinear

 

低処理:
Cubic sharpness: 50 - 150 (anti-ringing filter)

 

中処理:
Lanczos 3 - 4 taps (anti-ringing filter)
Spline 3 - 4 taps (anti-ringing filter)
Bilatera old - sharp
 

高処理:
Jinc 3 taps (anti-ringing filter)
super-xbr sharpness: 25 - 150

高-最大処理:
NGU系 low - very high
Reconstruction soft - placebo AR

 

 

activate SuperRes filter:クロマアップスケールの後、クロマレイヤーにsharpen edgesを適用します。

リンギングが発生する可能性があるので、オーバー設定は推奨されません。

 

 

クロマアップスケールの比較

https://forum.doom9.org/showthread.php?p=1817934#post1817934

 

 

 

 

 

 

 

image downscaling

出力解像度よりソースの解像度が大きい場合、RGBデータをダウンスケールします。

基本的には、image doubling(image upscaling の doubling) と組み合わせて使用します。

 

scale in linear light は、光学スケーリングのシュミレーションで一番近い線形光を使用したらしいです。
(かなり意味不明な訳です。。。)
luma scaling の一種でしょうか?
画質的には少しマイルドになります。

 

 

低処理:
DXVA2 (madVRの処理とクロマアップスケールを上書きします。)
Nearest Neighbor
Bilinear

中処理:
Cubic sharpness: 50 - 150 (scale in linear light) (anti-ringing filter)

高処理:
SSIM 1D strength: 25% - 100% (scale in linear light) (anti-ringing filter)
Lanczos 3 - 4 taps (scale in linear light) (anti-ringing filter)
Spline 3 - 4 taps (scale in linear light) (anti-ringing filter)

最大処理:
Jinc 3 taps (scale in linear light) (anti-ringing filter)
SSIM 2D strength: 25% - 100% (scale in linear light) (anti-ringing filter)

 

 

 

 

 

 

 

 

 

image upscaling

madVRの核の中の核と言える、大きさを拡大したときの処理。

NGU系は、YCrCb4:4:4に再変換した後に、lumaとchromaをそれぞれ処理を行います。

scale in sigmoidal light は、アップスケール時に問題があった linear light の改良版です。
動画を見て効果があればONにします。

 

 

image upscalingには、upscaling doubling があります。

doublingは、単純に2倍拡大です。

doublingは、オブジェクトのエッジ検出と保持に非常に優れており、シンプルなリサイザーによって引き起こされるエイリアス(シャギー)を排除します。
さらに、NGU系は、目に見えるリンギングを発生させずに非常にシャープにすることができます。

 

upscaling

最小処理:
DXVA2 (madVRの処理とクロマアップスケールを上書きします。)
Bilinear

低処理:
Cubic sharpness: 50 - 150 (anti-ringing filter)

中処理:
Lanczos 3 - 4 taps (anti-ringing filter)
Spline 3 - 4 taps (anti-ringing filter)

高処理:
Jinc 3 taps (anti-ringing filter)

 

 

doubling

高処理:
super-xbr sharpness: 25 - 150

RGBにてアップスケール。lumaとchromaは、一緒にアップスケールされます。

高いシャープネス、低いエイリアシング、中程度のリンギング。


高-最大処理:
NGU Anti-Alias low - very high
NGU Soft low - very high
NGU Standard low - very high
NGU Sharp low - very high
RGBからYCbCrに再変換後、lumaとchromaを独立してアップスケールします。
中-高シャープネス、低エイリアシング、リンギングなし。

Anti-Alias以外は、直接4倍アップスケールが可能。

 

 

https://i.postimg.cc/bwtLPB1Z/Scaling-Algorithms-Chart.png

 

 

doublingと組み合わせるダウンスケールランキング

SSIM 2D
SSIM 1D
Bicubic150
Lanczos
Spline
Jinc
DXVA2
Bilinear
Nearest Neighbor

 

 

 

 

NGU系の説明

NGU Anti-Alias
NNEDI3の代替え。

ほとんど自然な線ですが、NGU Sharpよりもぼやけており、ディテールが低くなっています。
エイリアスを含む低品質から中品質のソース、またはNGU Sharpが気に入らない人に最適です。

NGU Soft
NGUの最もソフトでぼやけたNGU派生アルゴリズム。
ノイズの多い貧弱なソースや、シャープすぎる映像が嫌いな人に最適です。

NGU Standard
NGU Sharpと同様の鮮明さですが、少しぼやけており、ディテールが低くなっています。
NGU Sharpによるプラスチック感な映像を低減するために、低品質のソースに適用される大規模なアップスケールに最適です。

NGU Sharp
最もシャープなアップスケーラーで最もディテールが高いですが、

低品質のソースと非常に大きなアップスケールでプラスチック感な映像になります。
きれいなラインの高品質ソースに最適です。

 

 

 

 

doubling使用時の設定

super-xbrはRGBデータにて処理を行うため、lumaのみの設定になります。

(lumaとchroma共通になります。)

 

activate doubling / quadrupling... については、

HD(1280*720) →  FHD(1920*1080)などの1.5倍アップスケールを例にします。

 

1.5倍のアップスケーリングの方法は、以下の2通りあります。
image doubling → image downscaling
 2倍アップスケール → 0.75倍ダウンスケール
image upscaling
 単純に1.5倍のアップスケール
 

activate doubling を...only if scaling factor is 2.0x (or bigger) に設定すると、

upscaling algo で設定した image upscaling が動作します。

activate doubling を...only if scaling factor is 2.0x (or bigger)以外に設定すると、

image doubling + downscaling algo で設定した image downscaling が動作します。

 

 

algorithm quality

 luma doubling:   輝度のdoublingを設定します。

              ここの設定が何よりも重要です。

 luma quadrupling: 4倍アップスケール時の設定。

              NUG系は、直接4倍アップスケール可能。

 chroma:       彩度のアップスケールを設定します。

 なお、このchroma の設定は、クロマアップスケールとは異なります。

クロマレイヤーは本質的にソフトで細かいディテールがありません。

ほとんどの場合、chroma doublingはオーバー設定か不要な機能になります。

Bicubic60 + AR が 処理速度との兼ね合いでバランスが良いとされています。

 

 

activate doubling / quadrupling...

実際にアップスケールする倍率で、doubling / quadrupling するかどうかを設定します。

 ...only if any upscaling is needed:アップスケール時に必ずdoublingが実行されます。

 ...always - supersampling::アップスケールしなくても必ずdoublingが実行されます。

 

if any (more) scaling needs to be done

3倍アップスケールなど、2倍・4倍のアップスケール以外で

さらに動作させるアップスケール・ダウンスケールを選択します。

 

 

 

 

 

 

 

 

 

 

upscaling refinement

アップスケール後に行うエッジ・シャープ処理。
内容は、processing の image enhancements と同じ。
SuperRes(スーパーレゾリューション)の設定は、chroma upscaling と同じです。

LumaSharpenは、アップスケールによってもたらされる ソフトさを抑える手段です

シャープな映像であっても、アップスケールによってシャープな映像に保つことはできません。

 

 

低処理:

soften edges / add grain

NGU Sharp用のオプション。低解像度をアップスケールするときに使用します。

add grainは、粒子感を強調します。

 

enhance detail
テクスチャをシャープにします。平坦な部分の細部をより見やすくします。

エッジ部分の処理はされません。

ノイズや粒子もシャープ(より顕著に表示)になります。

 

 

中処理:

LumaSharpen

輝度シャープニング。ぼかし処理をした後、ぼかし処理を減算してシャープにします。リンギングなどのノイズは乗りにくい。

 

crispen edges

エッジの輝度を上げる処理を行い、明るいエッジを鮮明にします。

これにより、より高精細に見える映像が得られます。

 

中高処理:

thin edges

アップスケールは、エッジ・線を太くします。

thin edgesは、大規模アップスケールに使用すると、線があまり太くなりません。


sharpen edges

エッジ・線をシャープにする。

LumaSharpen や AdaptiveSharpenと同様の機能ですが、

線が太くなりにくいシェーダーです。


AdaptiveSharpen

リンギングを抑える為に、エッジに近いほどシャープにするシェーダー。

 

SuperRes

アップスケーリングを逆ダウンスケーリングとして扱うことによって、

高解像度を得ようとしています。

なお、SuperResをONにすると、直接4倍アップスケールはキャンセルされます。


 

中処理:

activate anti-bloating filter
線が太くなるのを低減します。
anti-ringingよりパワーを使いますが、オーバー設定されたシャープさをぼかしてより自然に、背景により溶け込むという利点があります。
LumaSharpen, sharpen edges, Adaptive Sharpenに適用可能。

 

低処理:

activate anti-ringing filter

エッジに沿うように出現するハローを低減します。シャープニングのオーバー設定を低減します。

LumaSharpen, crispen edges, sharpen edges ,AdaptiveSharpenに適用可能。

なお、SuperResには、独自のactivate anti-ringing filterを持っており、個別に設定します。

 

 

 

refine the image after every ~2x upscaling step
2倍リサイズ毎に適用されます。これは、映像が非常にソフトになる4x以上の大規模なアップスケールに最も役立ちます。
映像の鮮明度を少し改善します。

こちらを選択すると、直接4倍アップスケールはキャンセルされます。

refine the image only once after upscaling is complete
リサイズ後にシャープニングが1回適用されます。

 

 

 

 

 

 

 

 

参考:

https://forum.kodi.tv/showthread.php?tid=259188

 

参照:

madVR - scaling algorithmsの選定

 

madVRの設定 (v0.92.17)