madVR 0.91.7のテスト

今回は、新しく追加されたNGUスケーリングを中心にテスト。

記事中で略称を使用する事があります。
アルゴリズム名等の略表記:
Lanczos → Lz
anti-ringing → AR
Anti-Alias → AA
luma doubling = → d=
luma quadrupling = → q=

まずは、chromaのテスト。
image upscalingはLz3+ARに固定。
(以下の画像は別タブで開いて切り替えて見ると違いが判り易いです)
NGU AA,low
NGU AA,low 

NGU AA,medium
NGU AA,medium 

NGU AA,high
NGU AA,high 

NGU AA,very high
NGU AA,very high 

NGU Sharp,low
NGU Sharp,low 

NGU Sharp,medium
NGU Sharp,medium 

NGU Sharp,high
NGU Sharp,high 

NGU Sharp,very high
NGU Sharp,very high 

NNEDI3 16neurons
NNEDI3 32neurons 

NNEDI3 32neurons
NNEDI3 32neurons 

NNEDI3 64neurons
NNEDI3 64neurons 

NNEDI3 128neurons
NNEDI3 128neurons 


次は、image upscalingのimage doublingのテスト。
chroma upscalingは、NNEDI3 32neuronsに固定。

image upscalingの、
algorithm quality:は、
luma quadruplling:disable
chroma:normal

activate doubling / quadrupling...は、
...only if scaling factor is 2.0x(or bigger)
...only if scaling factor is 4.0x(or bigger)

if any (more) scaling needs to be done:は、
upscaling algo:Laczos3 AR
downscaling algo:let madVR decide(※縮小処理が起きないので無関係)
に固定。

NGU AA,low
NGU AA,low 

NGU AA,medium
NGU AA,medium 

NGU AA,high
NGU AA,high 

NGU AA,very high
NGU AA,very high 

NGU Sharp,low
NGU Sharp,low 

NGU Sharp,medium
NGU Sharp,medium 

NGU Sharp,high
NGU Sharp,high 

NGU Sharp,very high
NGU Sharp,very high 

NNEDI3 16neurons
NNEDI3 16neurons 

NNEDI3 32neurons
NNEDI3 32neurons 

NNEDI3 64neurons
NNEDI3 64neurons 

NNEDI3 128neurons
NNEDI3 128neurons 


処理負荷的には、NGU high ≒ NNEDI3 32neuronsになるので、負荷を揃えて追試した。
上の画像は4倍変換を無効にしていたが、こちらは4倍変換有効。
NGU AA d=high q=high
NGU AA d=high q=high 

NGU Sharp double again -> high (d=high q=highと同等)
NGU Sharp d=high q=again 

NGU Sharp direct quadruple -> high
NGU Sharp d=high q=direct 

NNEDI3 d=32 q=32
NNEDI3 d=32 q=32 


まずNGU Sharpだが、リンギングが強すぎる。
それに追試の画像で顕著だが、輪郭がクッキリしすぎて、違和感のある画になる。
ただupscaling refinementで輪郭強調してる人は、NGU Sharpを使う事でアップスケーリングと輪郭強調を同時に行えるので、負荷低減になる。
direct quadrupleは、double againよりも負荷が少ないので、NGU AAにも付けて欲しい。

NGU AAとNNEDI3だが、NGUに軍配が上がる。
幾つか実写動画で確認してみた時は、NGU AAはNNEDI3よりもクッキリしてるが、情報量が少ないという評価になったが、情報量が少なく感じるのは、NGUの方がムラが少ないからのようだ。
リンギングも無いのでchroma upscalingにも使える。
ただしqualityを下げた時の画質低下は大きい。
なので出来れば、NGU AAのqualityはhigh以上で使いたい。
実際に、NGU AA mediumとNNEDI3 16neuronsのchromaの画像だと、どちらが良いとも言えない感じになる。
これはNGU AAのqualityを下げた時の画質の低下が大きいのと、アルゴリズムの向き不向きが重なった結果だろう。
image doublingはNGU AA low以上が使える時はNGU AAで良いが、chroma upscalingはNGU AA lowぐらいまでしか使えない時は、別なアルゴリズムと比較して決めた方が良いだろう。

モニターを4KにしたのでmadVRの設定を見直し

モニターを4KにしたのでmadVRの設定を見直す事にした。
・新しく追加されたchromaのスケーリングアルゴリズムのテスト
・新しく追加されたimage doublingアルゴリズムのテスト
・image doublingのquadruple {luma|chroma} resolution (以後4倍変換と書く)のテスト
・新しい設定の作成
を行う事にした。

以下記事中で略称を使用する事があります。
アルゴリズム名等の略表記:
Bicubic → Bc
Lanczos → Lz
Jinc → Jn
super-xbr → Xbr
anti-ringing → AR
anti-bloating → AB
image upscaling = → i=
chroma upscaling = → c=
image doubling, double resolution = → d=
image doubling, quadruple resolution = → q=

例:i=Lz3+AR、d=Bc75、d=Xbr100、q=none
image upscaling : Lanczos tap3 + anti-ringing
chroma upscaling :  Bicubic 75
image doubling, double resolution : super-xbr sharpness 100
image doubling, quadruple resolution : none

また特に記述の無い時は、今回の画像のimage upscalingはLz4+ARで統一してあります。

まずは、chromaに新しく追加されたスケーリングアルゴリズムのテスト。
(以下の画像は別タブで開いて切り替えて見ると違いが判り易いです)
c=Bilateral old
hqv #03 bilateral_old 

c=Bilateral soft
hqv #04 bilateral_soft 

c=Bilateral sharp
hqv #05 bilateral_sharp 

以下比較用、
c=Lz3+AR
hqv #01 lz3_ar 

c=Jn+AR
hqv #02 jinc_ar 

c=NNEDI3 32
hqv #10 NNEDI3_32 

Bilateralが3つに分かれたが、oldが良いように見える。
Bilateralはこちらの記事でより詳しくテストしてる。
Bilateralでoldの次に試してみたいのがsharp、Bilateralは鮮鋭度が低いので、sharpで改善されるかもしれない。

次はimage doublingに新しく追加されたアルゴリズムのテスト。
d=Xbr-AB25、q=Xbr-AB25
hqv #41 q=super-xbr_ab25 d=super-xbr_ab25 c=NNEDI3_32 

d=Xbr-AB50、q=Xbr-AB50
hqv #42 q=super-xbr_ab50 d=super-xbr_ab50 c=NNEDI3_32 

以下比較用
d=Xbr50、q=Xbr50
hqv #15 q=super-xbr50 d=super-xbr50 c=NNEDI3_32 

d=Xbr75、q=Xbr75
hqv #16 q=super-xbr75 d=super-xbr75 c=NNEDI3_32 

d=Xbr100、q=Xbr100
hqv #17 q=super-xbr100 d=super-xbr100 c=NNEDI3_32 

anti-bloatingがどういう処理なのか不明だが、見た目は数値が上がる程ボケる。
多分Xbr100をベースに、クッキリさを抑える処理を加えて、自然に見えるようにしてるのだと思う。
クッキリさの順で言うと、
Xbr100 > Xbr-AB25 > Xbr75 > Xbr-AB50 > Xbr50 の順。
実質好みのクッキリさに合わせる為の選択肢という感じだ。

次は4倍変換のテスト。
まずはimage doublingを使わない場合の画像
i=Lz3+AR
hqv #26 i=lz3_ar c=NNEDI3_32 

i=Spline4+AR
hqv #28 i=spline4_ar c=NNEDI3_32 

i=Jn+Ar
hqv #29 i=jinc_ar c=NNEDI3_32 

i=Bc75+AR
hqv #30 i=bc75_ar c=NNEDI3_32 

拡大率4倍以上になると、Jincの良さが判る。
他のアルゴリズムと比較して、輪郭が滑らかだ。
ただし拡大率2倍程度だとここまでの差が出なかったので、低倍率の拡大に使うにはJincは負荷が高過ぎるので、勿体無いだろう。
GPUの性能的にimage doublingは使えないが、image upscalingのJincは使えるという時には有用な選択肢だろう。
もっともJincの負荷の高さからいって、そういう状況は余り無い気はする。

double {luma|chroma} resolution (以後2倍変換と書く)のみを使用した時の画像
d=Xbr75
hqv #13 q=none d=super-xbr75 c=NNEDI3_32 

d=Xbr100
hqv #14 q=none d=super-xbr100 c=NNEDI3_32 

d=Xbr-AB25
hqv #37 q=none d=super-xbr_ab25 c=NNEDI3_32 

d=NNEDI3 16
hqv #20 q=none d=NNEDI3_16 c=NNEDI3_32 

d=NNEDI3 32
hqv #21 q=none d=NNEDI3_32 c=NNEDI3_32 

d=NNEDI3 64
hqv #22 q=none d=NNEDI3_64 c=NNEDI3_32 

2倍変換については、今までもテストしてきたので、使った方が良いのは分かってる。

4倍変換を使用した時の画像
d=Xbr75、q=Xbr75
hqv #16 q=super-xbr75 d=super-xbr75 c=NNEDI3_32 

d=Xbr100、q=Xbr100
hqv #17 q=super-xbr100 d=super-xbr100 c=NNEDI3_32 

d=Xbr-AB25、q=Xbr-AB25
hqv #41 q=super-xbr_ab25 d=super-xbr_ab25 c=NNEDI3_32 

d=NNEDI3 16、q=NNEDI3 16
hqv #23 q=NNEDI3_16 d=NNEDI3_16 c=NNEDI3_32 

d=NNEDI3 32、q=NNEDI3 32
hqv #24 q=NNEDI3_32 d=NNEDI3_32 c=NNEDI3_32 

d=NNEDI3 64、q=NNEDI3 64
hqv #25 q=NNEDI3_64 d=NNEDI3_64 c=NNEDI3_32 

全体的に4倍変換を使用した方が良好な画質になる事が分かった。
4倍変換ありの方が輪郭の繋がりがよく、クッキリする。
ただし差は僅かだ。

次に2倍変換と4倍変換のどちらに輪郭強調の強いアルゴリズムを使うべきか試してみた。
d=Xbr75、q=Xbr100
hqv #19 q=super-xbr100 d=super-xbr75 c=NNEDI3_32 

d=Xbr100、q=Xbr75
hqv #18 q=super-xbr75 d=super-xbr100 c=NNEDI3_32 

2倍変換と4倍変換のどちらもXbr100だとザラザラしすぎるので、この辺がニーズのある設定と見てこの設定を選んでみた。
結果、d=Xbr75、q=Xbr100の方が良好な画質になった。
こちらの方が若干ボケが少ない。
多くのスケーリングアルゴリズムで、拡大率が大きい程リンギングが目立つというのもあり、輪郭強調が強い処理は拡大の後半で持っていくのが望ましいだろう。

また、AdaptiveSharpenも試してみたが、4KにAdaptiveSharpenを使うと2Kの時の4倍の負荷になってしまい、とても使えなかった。
4Kになると拡大後に行う処理が全て4倍重くなって、とてもではないが今までのように使えない。
考えれば当たり前の事だが盲点ではあった。

さてRadeon RX480では720×480i用の設定は、
i=Lz4+AR、c=NNEDI3 32、d=Xbr75、q=Xbr75が、
hqv #16 q=super-xbr75 d=super-xbr75 c=NNEDI3_32 

hqv #16 q=super-xbr75 d=super-xbr75 c=NNEDI3_32 
良さそうだったので、これで色々視聴してみたが、どうも絵の質感が一本調子になって好みに合わない。
鮮鋭度は低いけどザラザラして単調な感じだ。
それで色々弄って最終的に決めた設定がこちら、
i=Lz4+AR、c=NNEDI3 32、d=NNEDI3 32(lumaのみ)、q=Xbr100
hqv #45 q=super-xbr_ab100 d=NNEDI3_32(lumaのみ) c=NNEDI3_32 

hqv #45 q=super-xbr_ab100 d=NNEDI3_32(lumaのみ) c=NNEDI3_32 
NNEDI3を使う事で絵に繊細さが出て、今まで見ていた絵のイメージと合うようになった。
今のところq=Xbr100にしてるが、q=Xbr75でも見た感じに差が無いので、後でq=Xbr75に変更するかもしれない。
ここからは暫く使ってみないと決まらない所なので、今回の記事には間に合わなかった。

以上で今回のテストは終了。
設定は結局以下のようになった、
720×480i→3840×2160:i=Lz4+AR、c=NNEDI3 32、d=NNEDI3 32(lumaのみ)、q=Xbr100
1440×1080i→3840×2160:i=Lz4+AR、c=NNEDI3 32、d=Xbr75、q=none
1920×1080i→3840×2160:i=Lz4+AR、c=NNEDI3 32、d=Xbr75、q=none
3840×2160:c=NNEDI3 32(これ以外のスケーリングは行われない)
プロファイルで分けてるので、動画解像度とインターレスの有無で設定が違う。
上は全てインターレス映像用で、プログレッシブ映像はもう少し重い設定をしてるが、特に公開する必要無いと思うので、今回は割愛する。
Radeon RX480で4Kだとこの程度の設定が出来るという参考だ。

madVR 0.90.13 のartifact removalのテスト

前回artifact removalに注目した記事を書いたが、設定を変えて色々テストしてみた。
前回に引き続き、以後はartifact removalの事をdebandと書く。
以下debandの2つのチェックの組み合わせを変えた物。
ditheringは断りの無い物はnone。

deband無しの元画像
#none #none

low/low
deband01_l_l.png deband01_l_l_20160306111410679.png

low/medium
deband02_l_m.png deband02_l_m_201603061114125f7.png

low/high
deband03_l_h.png deband03_l_h_20160306111413559.png

medium/medium
deband04_m_m.png deband04_m_m_20160306111415937.png

medium/high
deband05_m_h.png deband05_m_h_20160306111531c15.png

high/high
deband06_h_h.png deband06_h_h_20160306111532cbe.png

medium/high dithering:ordered
deband07_m_h_orderd.png deband07_m_h_orderd_2016030611153363f.png

medium/high dithering:error diffusion2
deband08_m_h_error_diffusion2.png deband08_m_h_error_diffusion2_20160306111535b38.png

テスト映像はポーズ状態でスクリーンショットを撮ったのだが、フェードイン/アウト中のチェックの位置で、画像に差が出る。
この映像はポーズしてなくても、フェードイン/アウトしない。
フェードイン/アウト中のチェックの位置は、処理の強さの微調整に使える感じだ。
実際の強さは画像の並びの順になってる。
バンディングを強調した右の画像に注目すると、debandは偽色が消えずらいのが判る。
high/highでやっと消える。
ditheringを使えば、どのディザ手法でも偽色は消えるが、ノイズはdebandよりも増える。
因みにdebandとditheringの両方にチェックを入れるのは、ノイズが無駄に増えるのでお勧めしない。
どちらかだけで十分だろう。
debandによるバンディングの消え具合をチェックしてみたが、mediumで効果を感じられる程消える、highでまったく気にならない程消えるという感じだった。
しかしhighにすると、実写だと質感に変化を感じる程、絵が変わる。
二週間debandをditheringの代わりに使ってみたが、mediumでも若干この傾向がある事が感じられたので、中々悩ましい物だと感じた。

まとめると、
・アニメでは、debandをmedium~highにして、ditheringはnone。
・実写では、deband無しで、ditheringを使うのがスタンダード。
 興味があるならdebandをmediumで、ditheringをnoneで試してみるのが良い
という前回とあまり変わらない結論だ。
今回のテストでは、deband lowは効き目が弱過ぎて意味が無い、deband highは効き目が強過ぎてアニメ以外には使いずらいという事が判った。

madVR 0.90.10 のditheringのテスト

以前に誤差拡散法(error diffusion)について否定的であると書いたが、本当にそう考えてたので、テストするまでに2年も経ってしまった。
テストに使う映像は、720×480を1440×1080にアップスケーリングした物。
#none
(上の画像はブログに載せる為に1/10にしてます)
これはアップスケーリングによって、小数点以下の値が出るので、ディザリングの効果が出やすいと考えた為。
まずはディザリング手法を切り替えて、画像の一部で効果を見る。
#none_org
上はdithering:noneでの物。
このままだと判りずらいので、CGツールを使ってコントラストを上げる。
#none
これで判り易くなった。
以下、他の手法を使った時の画像。
random
random.png

ordered
ordered.png

error diffusion1
error_diffusion1.png

error diffusion1 (colored noiseのチェック無し)
error_diffusion1_nocolored_noise.png

error diffusion2
error_diffusion2.png

error diffusion2 (colored noiseのチェック無し)
error_diffusion2_nocolored_noise.png

none & artifact removal(deband)
deband.png
ついでにdithering:noneで、artifact removalを有効にした時もテストした。
面倒なので、以後はartifact removalの事を、一般的に使われている用語のdebandと書く。
デバンドとディザリングは同じような手法で実現していると何処かで読んだので、代わりに使えるのではと前から考えてたのだが、思った通り似た効果がある。
というかどの手法も、効果に大きな違いが無いように見える。

次は各手法を使う事で画像全体にどれだけ変化が起きるかを調べた。
元画像(上のテストと同じ物。以下ブログに載せる為に1/10にしてます)
#none
これにrandomを掛けた画像と、noneの画像を、CGツールで「差の絶対値」を取った物が以下。
random-none_org.png
真っ黒。
差分画像の輝度値は最大2しか無い(輝度値1以下のディザノイズを加えてる)。
これをCGツールで、差を64倍に拡大する。
random-none.png
これで画像の変化が見えるようになった。
以下、他のディザリング手法で同じ事を行った物。
ordered
ordered-none.png

error diffusion1
error_diffusion1-none.png

error diffusion1 (colored noiseのチェック無し)
error_diffusion1_nocolored_noise-none.png

error diffusion2
error_diffusion2-none.png

error diffusion2 (colored noiseのチェック無し)
error_diffusion2_nocolored_noise-none.png

none & deband
deband-none.png
下に行く程画像が暗くなっていくのが判ると思う(画像を別タブで開いて切り替えて見ると判り易いです)。
暗いという事はnoneとの差が少ないという事だ。
noneの画像は、RGB16bitの内部バッファの画像と、各画素で±0.5以下の違いが出る。
ディザリングすると、ディザノイズが各画素に乗るので、RGB16bitの内部バッファの画像と、各画素で±1以下の違いが出る。
noneの方が画素単位でみると元画像に近い事に意外と感じるかもしれないが、ディザリングは局所的にはノイズが増えるが、全体的には元画像に近くなるという処理なのだ。
つまり簡易的な判断方法として、noneとの差が少ない事で、ローノイズだと判断出来る。
従って、暗い画像になる程ローノイズなので、madVRの説明通り、ノイズの量は、random>ordered>error diffusionなのが、このテストで確認出来た。
error diffusion1、error diffusion2、colored noiseのチェック有り無しによる差が確認出来ないのは、noneの画像の誤差(±0.5以下)の為だと思う。
noneの画像の誤差であやふやになり、僅かの差は確認出来ないのだろう。
この辺はmadVRの説明通り、error diffusion2が一番低ノイズだと信じればいい。
デフォルトがcolored noiseのチェック入りなので、このチェックもそのままで良いだろう。
ただし見て判る差では無いだろうから、error diffusionの中で一番負荷が低い物を選んでも別に構わないだろう。
そしてdebandだが、興味深い結果が出てる。
error diffusionよりもnoneとの差が少ない。
デバンドはバンディングを消すのが目的の処理な為、画像に対して最小限の変更しかしない事が、error diffusionよりもnoneとの差が小さい理由かと思われる。
しかしディザリングと似た効果を出す事は、最初のテストからも、この差分画像テストからも判る。

別の映像を使って追加テストする事にした。
元から1920×800の画像を使って、noneとの差を取って、差を85倍に拡大した。
(64倍だと差が少なくて暗かった)
元画像(以下ブログに載せる為に1/10にしてます)
#none

random
random-none_20160222214406cd8.png

ordered
ordered-none_201602222144058c0.png

error diffusion1
error_diffusion1-none_2016022221435482f.png

error diffusion1 (colored noiseのチェック無し)
error_diffusion1_nocolored_noise-none_20160222214353877.png

error diffusion2
error_diffusion2-none_201602222144035fe.png

error diffusion2 (colored noiseのチェック無し)
error_diffusion2_nocolored_noise-none_20160222214356b5a.png

deband
deband-none_20160222214351861.png
randomからerror diffusion2までは白黒の絵での結果と同様になった。
debandは元の絵と相関があるのが判る。
そしてやはりnoneとの差が一番少ない。
debandをditheringの代わりに使う事を考えてみる、
利点:ローノイズ、error diffusionよりも負荷が軽い。
欠点:正確な輝度、色再現という面では、後退する。
debandは使ってみる価値があると感じたので、ditheringをnoneにして、debandにチェックを入れてしばらく使ってみる事にした。
色々見ている最中だが、色乗りが良くて、透明度が高く、抜けが良い画質に感じる。
ちょっとノッペリしてるか?と思ってdebandを切って、ditheringのチェックを入れて見直してみると、元々そういう映像で、debandの影響ではないという事が何回かあった。
今の所はノッペリしてると感じたりするのは、気にし過ぎから来る物という結論になってる。
アニメがメインの人はdebandを使う設定が常用で何も問題無いと思う。
実写メインの人はerror diffusionを使えばいいし、それが使えない環境なら、orderedを使えばいいだろう。
興味があるならdebandを試すといい。

madVR 0.90.8 のimage upscalingテスト

前回の続きで、まずはimage upscalingのテスト。
設定は、ARを有効に出来る物は有効、doublingは無し。
(以下は画像を別タブで開いて切り替えて見ると違いが判り易いです)
Bicubic75
bc75-bc75 hqv

Bicubic100
bc100-bc100 hqv

Bicubic150
bc150-bc150 hqv

Lanczos3
lz3-lz3 hqv

Lanczos4
lz4-lz4 hqv

Spline3
sp3-sp3 hqv

Spline4
sp4-sp4 hqv

Jinc
jinc-jinc hqv


次はimage doublingのテスト。
image upscalingはLanczos3+ARに統一、chroma upscalingは断りの無い限りdoublingと同じ手法、ARを有効に出来る物は有効。
super-xbr50
lz3-s_xbr50all hqvlz3-s_xbr50all velz3-s_xbr50all hqv

super-xbr75
lz3-s_xbr75all hqvlz3-s_xbr75all velz3-s_xbr75all hqv

super-xbr100
lz3-s_xbr100all hqvlz3-s_xbr100all velz3-s_xbr100all hqv

super-xbr150
lz3-s_xbr150all hqvlz3-s_xbr150all velz3-s_xbr150all hqv

NEDI(chroma upscalingはNNEDI3 64)
lz3-NNEDI3_n64-NEDI hqvlz3-NNEDI3_n64-NEDI velz3-NNEDI3_n64-NEDI hqv

NNEDI3 64
lz3-NNEDI3_n64all hqvlz3-NNEDI3_n64all velz3-NNEDI3_n64all hqv
super-xbrは、doublingでは75が良さそうだ。
image doublingにsuper-xbr75、chroma upscalingにsuper-xbr50~25という組み合わせはいける気がする。
NNEDI3が負荷的に使えない環境では、試してみる価値があるだろう。


最後はupscaling refinementのテスト。
image upscalingはLanczos3+AR、chroma upscalingとimage doublingにNNEDI3 64に統一。
チェック無し
none.pngnone_20160213223939281.pngnone_20160213224338040.png

sharpen edges 1.0
sharpen edges10sharpen edges10sharpen edges10

sharpen edges 4.0
sharpen edges40sharpen edges40sharpen edges40

crispen edges 1.0
crispen edges10crispen edges10crispen edges10

crispen edges 4.0
crispen edges40crispen edges40crispen edges40

thin edges 1.0
thin edges10thin edges10thin edges10

thin edges 4.0
thin edges40thin edges40thin edges40

enhance detail 1.0
enhance detail10enhance detail10enhance detail10

enhance detail 4.0
enhance detail40enhance detail40enhance detail40

LumaSharpen 1.0
LumaSharpen10.pngLumaSharpen10_20160213223855cce.pngLumaSharpen10_20160213224252c0a.png

LumaSharpen 3.0
LumaSharpen30.pngLumaSharpen30_20160213223856cd8.pngLumaSharpen30_20160213224254453.png

AdaptiveSharpen 1.0
AdaptiveSharpen10.pngAdaptiveSharpen10_20160213223859916.pngAdaptiveSharpen10_20160213224257442.png

AdaptiveSharpen 1.5
AdaptiveSharpen15.pngAdaptiveSharpen15_20160213223857e04.pngAdaptiveSharpen15_201602132242559f8.png

SuperRes 1
SuperRes1.pngSuperRes1_20160213223936b85.pngSuperRes1_20160213224335d9c.png

SuperRes 4
SuperRes4.pngSuperRes4_20160213223938cf9.pngSuperRes4_20160213224336564.png
テスト映像での感触は、
sharpen edgesは数値を上げても問題は出ずらい。
crispen edgesとthin edgesは絵の変形が激しく、数値を控え目に設定した方が良い。
enhance detailは数値を上げると人の肌があばた状になるので、その辺を基準に調整すると上手くいくだろう。
LumaSharpenは負荷が低く、設定も0.01単位で調整しやすい。
ただしリンギングが出やすい。
AdaptiveSharpenは鮮鋭度が高くなりやすく、NNEDI3と相性が良い。
0.1単位で調整出来るのも利点。
SuperResは1でも効きすぎるのが欠点。
という感じ。

upscaling refinementを自分で使うなら、DVDを見る時だけ使うので、アップスケーリングにNNEDI3で、AdaptiveSharpen 0.2で軽くエッジを立てるという使い方。
高画質な映像を見る時はupscaling refinementは使わない。
なのでこの項目については実はあんまり突き詰めてテストする気がない。

madVR 0.90.8 のchroma upscalingテスト

madVRに新しいスケーリングアルゴリズムがどんどん追加されていたが、落ち着いてきたようなので、それらをテストした。
今回はchroma upscalingのみのテスト。
他の設定は、image upscalingはLanczos3+AR、chroma upscalingのARのチェックを有効に出来る物は有効、doubling無しに統一。
Bicubic75
bc75-bc75 hqv

Bicubic100
bc100-bc100 hqv

Bicubic150
bc150-bc150 hqv

Lanczos3
lz3-lz3 hqv

Lanczos4
lz4-lz4 hqv

Spline3
sp3-sp3 hqv sp3-sp3 hqv

Spline4
sp4-sp4 hqv sp4-sp4 hqv

Jinc
jinc-jinc hqv

Bilateral
lz3-bila hqv

Reconstruction soft
lz3-reco_soft hqv

Reconstruction sharp
lz3-reco_sharp hqv

Reconstruction placebo
lz3-reco_placebo hqv

Reconstruction sharp AR
lz3-reco_sharp_AR hqv

Reconstruction placebo AR
lz3-reco_placebo_AR hqv

super-xbr50
lz3-s_xbr50 hqv

super-xbr75
lz3-s_xbr75 hqv

super-xbr100
lz3-s_xbr100 hqv

super-xbr150
lz3-s_xbr150 hqv

NNEDI3 16
lz3-NNEDI3_n16 hqv

NNEDI3 32
lz3-NNEDI3_n32 hqv

NNEDI3 64
lz3-NNEDI3_n64 hqv

NNEDI3 256
lz3-NNEDI3_n256 hqv

まずSpline4だが、明らかにおかしい。
判りやすいようにimageアップスケーリングにSpline3+AR、Spline4+ARを使った画像も追加しておいた。
この設定は治るまで使わない方が良い。
それ以外の設定で、リンギングが強過ぎる物もお勧めしない。
sharpnessの数字が100以上はやり過ぎだ。
Reconstructionもsoft以外はどうかと思う。
ただしシャープネスを掛けたい人は、これらのリンギングが強くてシャープネスも強い設定を活用すると良いだろう。
その方がupscaling refinementを使うよりも、処理負荷的に有利なはずだ。

上のテストで、Bilateralが非常に良く見えるので、追加テストした。
Bicubic50
bc50.png

Softcubic60
sc60.png

Softcubic80
sc80.png

Lanczos3
lz3.png

Bilateral
bilateral.png

super-xbr25
s_xbr25.png

super-xbr50
s_xbr50.png

NNEDI3 64
NNEDI3_n64.png
こちらではBilateralの鮮鋭度の低さがあらわになった。
(画像を別タブで開いて切り替えて見ると判り易いです)
鮮鋭度の高い順に並べると、
Lanczos3 > NNEDI3 64 > Bicubic50 > super-xbr50 > super-xbr25 > Softcubic60 > Softcubic80 > Bilateral
Bilateralは鮮鋭度ではSoftcubic100相当と思われる。
素直でリンギングが無いスケーリングなので、そういう物を求めている人に良いと思う。

今回テストした中で、自分がchroma upsalingに使いたい手法の順を書くと、
NNEDI3 32以上 > super-xbr50~25 > Bilateral
という所。
過去のテスト結果とも比べると、Bilateralの方がSoftcubicよりも良い。
super-xbrとBilateralは、時間を掛けて色々な映像で見比べると、評価が逆転する可能性がある。
Bicubicを選ばない理由は、普通の映像でざわざわした絵になり易いから。
Jincを選ばない理由は、テスト映像で、本来均一な色になるはずの箇所にムラが出てるから。
また、普通の映像でLanczosとの見分けが付かないから。

madVR 0.88.21を試した

前記事:
madVR 0.88.10を試した
madVRのupscaling refinementで720×480→1920×1080の設定を作ってみた

以下のテストではimage upscalingはlz4+arに固定。
何時も画像を撮る時はlz3+arなのだが、変更し忘れた。

image doublingテスト
image doubling無し(lz4+arのみ)
VS LZ4+AR HQV LZ4+AR

super-xbr50
VS XBR50 HQV XBR50

super-xbr100
VS XBR100 HQV XBR100

NEDI
VS NEDI HQV NEDI

NNEDI3,16neurons
VS NNEDI16 HQV NNEDI16

NNEDI3,64neurons
VS NNEDI64 HQV NNEDI64

処理負荷は下にあるもの程重い。
super-xbrはデフォルトが100だが、50か75が見た目に自然。
最近madshi氏は、ある画像を1/2にして、スケーリングで2倍にして、鮮鋭感が同じになる辺りをデフォルトにしているが、この方法だと輪郭強調が掛かり過ぎる。
画像を1/2にした時点で高周波情報(つまりエッジ)は失われるので、それを2倍に拡大すると、元画像よりもぼけるのが当たり前。
元と同じ所までエッジを立てるには輪郭強調するしかない。
しかしそういう無い情報を追加する行為は万能では無いので、本当は程々に抑えるべきなのだ。

super-xbrとNNEDI3,64neuronsを比較すると、輪郭の繋がりの良さ、自然さでNNEDI3の方が上回ってる。
これは普通の動画でも差が感じられるので、処理負荷的に使用可能な場合はまずはNNEDI3を試すのが順当かと思う。
その次にsuper-xbr50~75、その次はLanczos3~4という所だろう。

720×480→1920×1080の設定も再テストした。
NNEDI3,64neurons+AdaptiveSharpen:0.2
VS NNEDI64+AS02 HQV NNEDI64+AS02

NNEDI3,64neurons+AdaptiveSharpen:0.5
VS NNEDI64+AS05 HQV NNEDI64+AS05

NNEDI3,64neurons+SuperRes strength:1
VS NNEDI64+SR1 HQV NNEDI64+SR1

NNEDI3,64neurons+SuperRes strength:2
VS NNEDI64+SR2 HQV NNEDI64+SR2

AdaptiveSharpenは鮮鋭度が上がり易く、NNEDI3と相性が良い。
SuperResはstrength:1でも効き過ぎる。
radiusの値は下げると画質が悪くなり、0.66以上にしても見た目の変化はほとんど無いようだ。
このバージョンのmadVRでは、NNEDI3,64neurons+AdaptiveSharpen:0.2が良く感じた。
これはかなり効きが弱く、どのような動画でも気にならないという基準で決めた物だ。
参考までに。

madVRのupscaling refinementで720×480→1920×1080の設定を作ってみた

最初に、FineSharpとLumaSharpenとSuperResの使い分けが判らない方も居るかと思いますので、その説明をします。
この3つは同時に利用する物ではないと思います。
処理負荷的には、
SuperRes > FineSharp > LumaSharpen
で、使っているGPUの性能に応じて、選択する想定でしょう。
高性能のGPUではSueprRes、エントリーレベルのGPUではLumaSharpenという事です。
実際にはupscaling algorismに適切な物を選んでから、残っている処理能力で使える、upscaling refinementを選ぶというやり方が順当かと思います。

またSuperResのerror upscaling qualityはhighにすると、処理負荷が増加しますが、mediumに比べて、strength(強度)は半分ぐらいで同等の鮮鋭感になります。
なので、輪郭強調を最小限に抑えるという意味では、highの方が理想的です。
しかし実際には、highにするぐらいならNNEDI3のneuron数を上げる方に処理能力を使うと思いますので、mediumを使用する事になると思います。

SuperResにのみdefault値が3種類あります。
non-double defaults:image doublingを利用してない時のデフォルト
NEDI defaults:NEDIを使用している時のデフォルト
NNEDI3 defaults:NNEDIを使用している時のデフォルト

つまりmadshi氏は組み合わせるupscaling algorismによって、設定値を変えるべきだと主張してます。
私の方でNNEDI3と組み合わせてテスト映像で調整した感じではこうでした。

NNEDI3 16neurons:SupereRes NNEDI3 defaults
NNEDI3 32neurons:SupereRes NNEDI3 defaults - 0.05strength
NNEDI3 64neurons:SupereRes NNEDI3 defaults - 0.10strength

NNEDI3はneuron値が上がる程、鮮鋭度が上がるので、それに合わせて輪郭強調の強度を下げるのが好ましいと感じました。
NNEDI64以上は見た目に鮮鋭度は上がりませんので、64neuronsと同じ値で問題無いと思います。
前回のテストから、FineSharpとLumaSharpenのデフォルト値はSuperResのNNEDI3 defaultsと同程度なのが判りますので、そういう基準で調整されると上手く行くと思います。


madVRのupscaling refinementで720×480→1920×1080の設定を作ってみた。
グラフィックカードは、Gigabyte GV-R929XOC-4GD(Radeon R9 290X 1040MHz)
madvr101.png

madvr102.png

madvr103.png
chroma upscalingのSuperResの値は、upscaling refinementのSuperRes NNEDI3 defaultsと同じ値に変更してある。
元々の値はBicubic用と思われる(madVRのデフォルトchroma upscaling algorism)。
あと、テスト映像で調整した時のstrength値から-0.05下げた。
いくつか動画を見てみたら、ノイズっぽくなる物があったので気にならないように下げた。
また、このグラフィックカードの性能上NNEDI3が32neuronになっているが、理想を言えばNNEDI3は64neuronで使いたい。
今回chromaにSuperResを使わずにNNEDI3 64neuronにした物と、chromaにSuperResを使ってNNEDI3 32neuronにした物を比べたが、色乗りは前者の方が良く、情報量は後者の方が良いという結果で、SuperResを使う意義から後者を選択した次第。
この辺は実際には好みの問題だ。

madVR 0.88.10を試した

この記事で使われている略称については「madVRのNNEDI3をテスト」と、そこから辿れる記事を参照して下さい。

マイナーバージョンが87から88に変わって、新しい設定が加わった。
upscaling refinementと、image doublingにNEDIが加わったのがトピックスだろうか。
これらをテストする事にした。
image doublingにocturple luma/chroma resolutionも加わったが、モニターが4Kじゃないと出番がなさそうなので、今回は試さない。
4Kモニターでも、縮小無し設定で480×270の動画でやっと使用されるので、当面無用の長物かと思う。
そのうち8Kモニターが出たら、DVD資産を見る為に利用されるだろう。

以下のテストではimage upscalingはlz3+arに固定。
chroma用の画像も撮ったが、imageだけで判るので割愛。

image doublingテスト
image doubling無し(lz3+arのみ)
madvr10_0.png madvr00_201505302110491c6.png

NEDI
madvr12_0.png madvr02_20150530211103fb4.png

NNEDI3,16neurons
madvr14_0.png madvr04_20150530211103cfa.png

NNEDI3,64neurons
madvr15_0.png madvr05_20150530211103eb6.png

NNEDI3,256neurons
madvr16_0.png madvr06_20150530211136bee.png
処理負荷は、lz3+ar < NEDI << NNEDI3
Jincが無くなったのは、処理負荷的にNEDIよりも重いJincに意味が無くなったからだろう。
image doublingにNEDIを利用すると、double chroma resolutionも自動的にNEDIが利用される。
しかし前回のテストでdouble chroma resolutionのチェックをしても、画質に優位差が無いとなったので、これがメリットになるとは言えない。

画質は、NEDI ≒ lz3+ar < NNEDI3, 16neurons
鮮鋭度はこの中では、lz3+arが一番高く、NEDIが一番低い。
輪郭の繋がりの良さではNNEDI3が飛びぬけて良く、NEDIはlz3+arと比べても、良いとは言えない。
NEDIの立ち位置は、NNEDI3並にリンギングが無く、softcubicよりも鮮鋭度が高い、という所だ。
画質の何を重視するかで、NEDIを使うかが決まる。


次にupscaling refinementのテスト。
image upscalingはlz3+ar、chroma upscalingとimage doublingをNNEDI3, 64neuronsに固定。
refine the image only once after upscaling is completeにチェック。
apply SuperRes firstのチェック無し。
FineSharpとLumaShapenとSuperResの効きの違いを示す為に、一部chromaの画像を載せます。

FineSharpデフォルト(mode: 1)
madvr20_0.png madvr40.png

FineSharp mode: 2
madvr21_0.png madvr41.png

FineSharp mode: 3
madvr22_0.png madvr42.png

FineSharp mode: 1 strength: 8
madvr23_0.png madvr43.png

FineSharp mode: 2 strength: 8
madvr24_0.png madvr44.png madvr24.png

FineSharp mode: 3 strength: 8
madvr25_0.png madvr45.png
FineSharpはモード2が良いように見える。
ただしこれは720×480→1920×1080と相性が良いだけという可能性があり、違う解像度のモニター、違う解像度の動画の場合は、別のモードの方が良いのかもしれない。

そしてupscaling refinementの項目全てに共通するが、強度を最大にすればリンギングが確認出来るが、デフォルトの設定は粗が出ない無難な物になってるし、どれも出来の良い輪郭強調なので、隠し味的に使うのは有りだと思う。

LumaSharpenデフォルト
madvr26_0.png madvr46.png

LumaSharpen strength: 3
madvr27_0.png madvr47.png madvr27.png

SupeRes NNEDI3 defaults
madvr28_0.png madvr48.png

SuperRes NNEDI3 defaultsでstrength: 1に変更
madvr29_0.png madvr49.png

SuperRes NNEDI3 defaultsでstrength: 1、error upscaling quality: highに変更
madvr30_0.png madvr50.png madvr30.png
error upscaling quality: highにするとリンギングが強くなり、クッキリさも増す。
error upscaling quality: medium時のstrength値を半分にして、error upscaling quality: highにすると、クッキリさがほぼ同等になる。
処理負荷はerror upscaling quality: highは非常に重い。

upscaling refinementはNEDIの鮮鋭度の低さをカバーする為に付けられた物兼、4Kモニターだと拡大率が高くなってボケが増えるので必要になった物、という感じ。
でもNEDI+upscaling refinementを使うなら、lz3+arやlz4+arと良く比較すべき。
処理負荷に見合う差は無いとなる可能性がある。
NNEDI3が使える環境では、NEDIは検討する必要は無い。
NNEDI3+upscaling refinementはお好みで。

upscaling refinementの項目を有効にする順番は、上のテスト設定と同じ場合は、
SuperRes(デフォルト)→FineShape(mode: 2)→LumaShapen(デフォルト)が良いだろう。
ここの設定は多すぎるので、どこか変えると、上の順番にならない可能性は高いので参考程度に。
また、madshi氏も設定項目が多すぎる事は認識してるので、設定が整理されるまで待つのも手だ。

Gigabyte GV-R929XOC-4GDでのmadVR設定例

Profile Group
madvr00.png
profile auto select rulesは、
・インターレース解除後が30fps以下なら"Profile 1"
・動画の横解像度が1440以下なら"Profile 2"
・それ以外は"Profile 3"
としている。

Profile 1
madvr01.png
madvr02.png

Profile 2
madvr03.png
madvr04.png

Profile 3
madvr05.png
madvr06.png


Gigabyte GV-R929XOC-4GDは、その前に使っていたASUS R9290-4GD5に比べて、2割程度処理能力が高いおかげで一段高いセッティングが可能になった。
2Kモニターなら十分だ。

関連記事:
madVRのNNEDI3をテスト
Gigabyte GV-R929XOC-4GD
最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
FC2カウンター
リンク
検索フォーム
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR