以前に
高画質動画を再生する場合は、image enhancementsやupscaling refinementの処理、
低画質動画を再生する場合は、NGUなどのシェーダーやノイズ除去の処理に
時間をかけた方が良いと記述しました。
では、シェーダーの特性を生かした、高画質・低画質の再生の分け方と
シェーダーの選定を考えてみましょう。
クロマアップスケールは、サイズ拡大とは関係なし
Chroma upscalingは、YCbCr4:2:0などのデータをYCbCR4:4:4にアップスケールする機能です。
よって、リサイズする・しないに関係なく、アップスケールします。
なお、YCbCR4:4:4の映像データは、クロマアップスケールしません。
Chroma upscaling
●YCbCr4:2:0 → YCbCR4:4:4
●動画のリサイズに関係がない
モニターのサイズ
当然ですが、モニターのドット数でアップスケールの倍率が変わります。
モニターのドット数が多くなるほど、アップスケール倍率が上がります。
1280*720mの映像は、FHDモニターだと高画質な映像かもしれませんが、
4Kモニターだと3倍アップスケールになり、高画質映像かどうかは、微妙な判断になります。
また、モニターサイズでも変わります。
4Kモニターでも27インチと32インチでは、ドットサイズ・ピッチが違います。
単純に、映像が小さいほど、ドットピッチが短く、解像度が高く感じられます。
32インチより27インチモニターの方がキレイに見えます。
様々なmadVRの資料を参照する場合は、
自分のモニターと よく見る映像の大きさから
よく使うアップスケール倍率を中心に、どのシェーダーが最適かを考えます。
同様の現象として、イメージアップスケールしない場合は キレイな映像でも、
アップスケールすると 解像度が甘く感じられるのは、ドットピッチが長くなるからです。
madVRのimage upscalingは、拡大したドットピッチを拡大する前と同じようにするためのものです。
●画面サイズは 小さいほど解像度が良いように見える。
→ダウンスケールを含めると解像度が上がったように見える(かも?)
● リサイズの拡大率が上がれば上がる程、映像の解像度は甘くなる。
クロマアップスケール・イメージアップスケールの基本は、NGU
madVRと言えば、NGU(New Generation Upscaling)。
まずは、NGUを選択します。
処理時間が間に合わないようであれば、super-xbrなどに変更していきます。
NGUは、Sharp, Standard, Soft, Anti-Aliasに分かれますが、
2倍までのアップスケールは、Sharp, またはStandard
2倍超は、Standard, またはSoftが良いでしょう。
シャープすぎると感じたならば、Soft, またはAnti-Alias を選択します。
very high - low までのレベル調整は、処理時間で決める方が無難です。
つまり、NGU Standard very high が好みの画質になったが、
処理時間が間に合わない場合は、high以下に下げていきます。
アップスケールしない解像度の映像(等倍)は、クロマアップスケールだけになります。
よりシャープな映像にしたい場合は、image enhancements を設定します。
●まずは、NGUを選択
● image upscaling
2倍以下のアップスケールは、NGU Sharp or Standard
2倍超のアップスケールは、 NGU Standard or Soft
doublingは使用した方が良い
イメージアップスケールのdoubling(2倍拡大)は、できるだけ使用した方が良いでしょう。
つまり、NGU系かsuper-xbrのいずれかを使用した方が良いでしょう。
doublingは、Jincなどのシェーダーよりもシャープで副産ノイズが出にくい特徴があります。
NGUのイメージアップスケールは、lumaとchromaで分けられる
NGUのイメージアップスケールは、RGBデータをYCbCr4:4:4に再変換され、
luma(Y)とchroma(CbCr)をそれぞれ独立して処理できます。
人間の目は、lumaに敏感です。 よって、luma upscalingがより重要になります。
luma upscalingをNGU系 very high にし、chromaをnormal(Bicubic60 + AR)にする方が 処理時間との兼ね合いからバランスが良いとされています。
3倍以上のアップスケール、3回シェーダを使用するアップスケールは、upscaling refinementの使用を考える
大規模アップスケールでは、ドットピッチが長くなるため、解像度が甘く感じられる場合が多くなります。
その場合、upscaling refinementを使用して、シャープな映像にすることも検討しましょう。
以下は、doubling(2倍アップスケール) / quadrupling(4倍アップスケール)について考えてみます。
2倍未満のアップスケールを考えてみる
例えば1.5倍のアップスケールを考えてみましょう。
1.5倍アップスケールは、以下の2つの方法があります。
image upscaling のみ (単純に1.5倍)
doubling + image downscaling (2倍 * 0.75倍)
処理時間は image upscaling のみの方が、圧倒的に短くなります。
一方、(個人的には) doubling + image downscalingの方がキレイに見えます。
doubling + image downscalingにするには、
activate doubling / quadrupling... を
...only if any upscaling is needed / only if scaling factor is 1.2x (or bigger) などに設定します。
例として、以下のような設定をすると
1.5倍アップスケールでは、このようになります。
2倍超~4倍未満のアップスケールを考えてみる
3倍アップスケールを考えてみます。
3倍アップスケールは、以下の2つの方法があります。
doubling + image upscaling (2倍 * 1.5倍)
quadrupling + image downscaling (4倍 * 0.75倍)
4倍アップスケールは、super-xbrは doubling を2回、
NGU(Anti-Aliasを除く)は direct quadruple(直接4倍) か doubling を2回 のいずれか
になります。
(upscaling refinementのSuperRes, ・・・~2x upscaling stepを設定すると、
doubling 2回になります。)
処理時間に有利なのは、
doubling + image upscaling >direct quadrupling + image downscaling > double * 2 + image downscaling
になります。
一方、2倍を超える、3回のリスケールは解像度が甘く感じる可能性があります。
double * 2 + image downscalingの場合は、upscaling refinementの設定を検討した方が良いかもしれません。
以下のような設定をすると
3倍アップスケールでは、このようになります。
---------------------
以下のような設定をすると
3倍アップスケールでは、このようになります。
4倍以上のアップスケールを考えてみる
4倍以上のアップスケールでは、必ず2回はdoublingを行います。
NGU(Anti-Aliasを除く)は、直接4倍が可能で、doubling * 2 より処理時間が短くできますが、
直接4倍は、upscaling refinementのSuperResが使用できなかったりして、
シャープな映像が得られにくくなります。
2~4倍アップスケールの 4倍アップスケール+ダウンスケールでは、
chromaは、アップスケールが1回だけでしたが、
4倍以上は、chroma側で 4倍、または2回アップスケールが行われます。
その分、処理時間がかかります。
以下のような設定をすると
5倍アップスケールでは、このようになります。
---------------------
upscaling refinementで、以下のような設定をすると
5倍アップスケールでは、このようになります。
upscaling refinementは、どれを使用するのか
NGU Sharpは、高解像度なソースのみに限定すると、
NGU Sharp用オプションのsoften edges / add grainはほぼ使用しません。
2回doubling/4倍アップスケールを行う場合は、
副産ノイズの少ないLumaSharpenの使用は有効です。
一方、副産ノイズの多いenhance detailは設定しない・弱めに設定する方が良いでしょう。
アニメなど線(ライン)がハッキリとしたソースは、線を太くしにくい thin edgesやactivate anti-bloating filterが有効です。
SuperResは、シャープな映像が得られますが、副産ノイズも多くなります。
オーバー設定は避けましょう。
総合すると
プロファイルによる場合分けは、以下のようにするのがベター?
・ダウンスケールのみ(モニターより映像の方が大きい)
FHDモニターの場合、4K映像を再生する場合が、これに該当。
image downscaling は、SSIM 2Dが良い。
chroma upscalingは、image downscalingの設定が決まったら、処理時間内で収まるシェーダに設定。
・アップスケールしない(映像とモニターサイズが同じ)
クロマアップスケール(chroma upscaling)のみ機能する。
クロマアップスケールは、NGU sharpが最有力。
元の映像をよりシャープにしたい場合は、image enhancementsの設定をする。
・2倍未満のアップスケール
image upscalingは、NGU系 + SSIM 1D(downscaling) で考えてみる。
chroma側は、normalなどに設定して、処理時間を短くする。
処理時間が間に合わない場合は、徐々に設定を落としていき、
最後は、only if scaling factor is 2.0x (or bigger) に設定して、Image upscaling(Jincなど)のみが動作するようにする。
chroma upscalingは、その後に設定する。
・2倍アップスケール
image upscalingは、NGU系を検討する。
処理時間が間に合わない場合、chroma側は、normalなどに設定して、処理時間を短くする。
chroma upscalingは、その後に設定する。
・2倍超~4倍未満アップスケール
image upscalingは、NGU Standard以下を検討する。
NGU Standard doubling * 2回 + SSIM 1D(downscaling) + upscaling refinementで考えてみる。
chroma側は、normalなどに設定して、処理時間を短くする。
処理が間に合わない場合は、直接4倍→upscaling refinementを外す→downscalingを落とす
など、徐々に設定を落としてみる。
最後は、only if scaling factor is 2.0x (or bigger) に設定して、Image upscaling(Jincなど)が動作するようにする。
chroma upscalingは、その後に設定する。
・4倍アップスケール
image upscalingは、NGU Standard以下を検討する。
処理時間が間に合わない場合、chroma側は、normalなどに設定して、処理時間を短くする。
chroma upscalingは、その後に設定する。
・4倍超アップスケール
image upscalingは、NGU Standard以下を検討する。
NGU Standard doubling * 2回 + Jinc AR(upscaling) + upscaling refinementで考えてみる。
chroma側は、normalなどに設定して、処理時間を短くする。
処理が間に合わない場合は、直接4倍→upscaling refinementを外す→upscalingを落とす
など、徐々に設定を落としてみる。
ソースとモニターの横解像度でプロファイルを分けてみましょう
FHDモニター(1920)の場合分けは、
ソース
1920超 ・・・ダウンスケールのみ
1920 ・・・等倍
960超~1920未満 ・・・2倍未満のアップスケール
960 ・・・2倍アップスケール
480超~960未満 ・・・2倍超~4倍未満アップスケール
480 ・・・4倍アップスケール
480未満 ・・・4倍超アップスケール
4Kモニター(3840)の場合分けは、
ソース
3840超 ・・・ダウンスケールのみ
3840 ・・・等倍
1920超~3840未満 ・・・2倍未満のアップスケール
1920 ・・・2倍アップスケール
960超~1920未満 ・・・2倍超~4倍未満アップスケール
960 ・・・4倍アップスケール
960未満 ・・・4倍超アップスケール
プロファイルルールの例
if (srcWidth > 3840) "8K"
elseif (srcWidth = 3840) "4K"
elseif (srcWidth < 3840) and (srcWidth > 1920) "WQHD"
elseif (srcWidth = 1920) "FHD"
elseif (srcWidth < 1920) and (srcWidth > 960) "HD"
elseif (srcWidth = 960) "XGA"
elseif (srcWidth < 960) "SD"
設定例(画質優先)
全プロファイル
chroma upscaling
NGU Sharp - very high
8K:ダウンスケール
image downscaling のみ。他は適当に設定
SSIM 2D (scale in linear light / AR- relaxed / AB )
4K:等倍
image upscaling / image downscaling 関係なし
WQHD:2倍未満アップスケール
image upscaling
NGU Sharp
luma doubling: very high
chroma: normal
active doubling : ...only if any upscaling is needed
downscaling algo: SSIM 1D 100 AR Linear Light
FHD:2倍アップスケール
image unscaling
NGU Sharp
luma doubling: very high
chroma: normal
HD:4倍未満アップスケール
image upscaling
NGU Standard
luma doubling: very high
luma quadrupling: double again -> very high
chroma: normal
active doubling : ...only if any upscaling is needed
active quadrupling :...only if any upscaling is needed
downscaling algo: SSIM 1D 100 AR Linear Light
upscaling refinement
sharpen edges
LumaSharpen
AdaptiveSharpen - linear light
activate anti-bloating filter
activate anti-ringing filter
refine the image after every ~2x upscaling step
XGA:4倍アップスケール
image upscaling
NGU Standard
luma doubling: very high
luma quadrupling: double again -> very high
chroma: normal
upscaling refinement
sharpen edges
thin edges
LumaSharpen
AdaptiveSharpen - linear light
activate anti-bloating filter
activate anti-ringing filter
SuperRes - linear light / AR
refine the image after every ~2x upscaling step
SD:4倍超アップスケール
image upscaling
NGU Standard
luma doubling: very high
luma quadrupling: double again -> very high
chroma: normal
upscaling algo: Jinc AR
upscaling refinement
sharpen edges
crispen edges
thin edges
enhance detail
LumaSharpen
AdaptiveSharpen - linear light
activate anti-bloating filter
activate anti-ringing filter
SuperRes - linear light / AR
refine the image after every ~2x upscaling step
参照:
madVRの設定 - scaling algorithms編 (v0.92.17)