c4dのdenoiser比較

cinema4d R21が先日リリースし、Intel Open Image Denoiseが組み込まれました。このdenoiserはレンダラー問わずサードパーティのレンダラーでもdenoiseをかけることが可能なため、出力時間の短縮や選択肢の幅が増え非常に強力な機能のように思えます。
Blenderにもv2.81からIntel Open Image Denoiseが搭載し、さっそく試した方々のレンダリング画像を見ると、ノイズまみれの画像がとてもクリーンになり驚異的なdenoiseで話題になってますね。

ただ、個人的には低samplingでのdenoiseがいくら凄くても、高samplingで出力した高品質なものと結果が異なるようであれば使い物にならないと思い、せっかくの機会なのでOctane Renderに備わっているAI denoiserと比較してみることにしました。

画像を掲載してますが見分けが困難だと思いますので、データを配布しています。https://www.dropbox.com/sh/w525quebq4u4w7w/AABBqU_MT93TY8Mh9szErI6Fa?dl=0

たぶん3ヶ月ぐらいは残しておきますが、もしダウンロードできなくなっていればtwitterなどでご相談ください。

静止画での比較

このようなシーンでレンダリングしたものを比較してみます。

表面や溝にわずかに擦れがあり、完全につるっとした質感ではありません。
黒いプラスチックや、金属のような質感に感じます。

まずはサンプル数が少なく、低品質のレンダリング画像から。

denoiseが入っていない状態では表面がざらざらとし、そういった質感を出しているようにも思えなくもないですが、球体の部分を見れば単純に品質が悪いのがわかります。
Intelのdenoiserだと悪くないようにも思えますが、bumpを適用したような表面で木材を黒く塗ったような印象です。
Octaneのdenoiserはかなりボケた表面になってます。パーツのエッジや球体だけみるとまだマシですが、このレベルでは使い物になりません。

続いてサンプル数を少しあげてみます。

denoiseなしではまだサンプル数が足りないぐらいですが、ノイズがなかった場合、どんな表面か想像できるぐらいにはなってきました。
Intelのdenoiseはとても良好に見えます。最終品質まえのクライアントチェックなんかは十分かもしれません。ただ、(順序が前後して申し訳ないですが)高品質のものと比べるとディテールが失われていたり、表面のパターンが微妙に違うように見えるような補完がされています。ボールが通る溝もツルッとしてしまっています。
Octaneのdenoiserは先ほどの低サンプルよりマシになりましたが、ブロックの表面がまだぼやけてます。しかしIntelと比べ、細かいディテールはうっすら浮き出ています。
以下の部分辺りを見比べるとよくわかると思います。

最後に高サンプル数でレンダリングした画像です。

この辺りになると制作者しかわからないレベルになってくるかなと思います。というのも、「どのようなテクスチャを使ったか」「どういった意図で作ったか」を踏まえて見ないと、ノイズのムラの違いのように感じたり、そもそもそこまで拘る必要があるのか疑問に思われるレベルです。

ここは完全に僕自身の感じた違いですが、Intelのdenoiserは細かい擦れや傷を隠してしまう印象です。出したいディテールが失われてしまいます。また、エッジにわずかにシャープがかかっているようです。
octaneはごく僅かにノイズが残っているのも合間って、ディテールが十分に出ています。配布している画像のレイヤーをon / offすれば「言われてみれば」というレベルかもしれません。個人的には断然octaneを選びます。


高サンプルな画像ではoctaneに、低〜中サンプル域ではIntelが優位な印象です。低サンプル時のdenoise具合は本当に素晴らしいですが嘘のディテールが補間されているので、denoiseかけないよりか良いという感じでしょうか...

動画での比較

動画ではIntel、octaneに加えNeat Videoも追加しています。
Neat Videoは動画向けのdenoiserで、多くのソフトウェアに対応したプラグインとして販売されています。

こちらもyoutube上では比べ辛いので、配布データをダウンロードしてみてください。
動画でのdenoiseの目的としては、フレームが流れるごとにどれだけ馴染んで見えるか確認するためです。Intelとoctaneのdenoiserは1枚1枚denoiseをかけているのでフレーム毎に見栄えがバラバラなのは当たり前ですが、Neat Videoは前後のフレームも計算処理に含めるため、滑らかな結果になるのが特徴です。(Neat Videoだけでなく動画系のdenoiser全般に言えることですが)

低サンプル数での比較では、どれも十分な品質は得られていません。
Intelとoctaneは先でも書いたようにフレーム毎にdenoise具合が異なるため靄が暴れるような状態になっています。かろうじてoctaneの方だけ、中の金属の表面の擦れが残っています。
Neat Videoはというと小さなノイズは残っていますがとても滑らかに動いています。ノイズが画面に貼りついたような感じもありますが、少し離れて見る分には十分な結果が得られています。

高サンプル数ではどれも悪くない品質に見えます。
ただ、静止画の時と同じように(制作者視点では)Intelのdenoiserはガラス表面の擦れがコントラストが弱い時ほど完全に消えてしまっています。
こう見るとNeat Videoが万能にも見えますがいくつか弱点がありまして、フレームブレンドのような処理が起きる(設定で抑えることは可能)ので、動きの早い部分はエッジが溶けてしまうことがあります。今映像を見比べても何も感じませんが、Neat Videoの設定画面上ではハイライトが溶けている部分がありました。
あと、明るさ・反射・屈折でそれぞれノイズパターンが違う事が多く、Neat Videoでは一度に全部処理しようとすると全体がボケてしまいます。部分的に少しずつ分けて複数denoiseをかけるのが良いと思います。

その他、雑感

あと最近redshiftのデモ版に触れていますが、redshiftのdenoiserはあまり好ましい結果が得られないので、Intel Open Image Denoiseが使えるのは非常に嬉しいです。
二つのdenoiserがあり、OptixとAltus(有償)。
Optixに関してはサンプル数に関わらず全体がボケてしまうのですぐに使用を諦めました。
AltusはIntel Open Image Denoiseに近い印象を受けましたが、それ以上にディテールの損失が多いです。2回レンダリング処理をかけてからdenoiseの精度を上げる機能もありますが、レンダリング時間が単純に倍になること、それでもまだディテールの損失が僅かにあることを考えると、導入には至らないかなぁと。


ざっくりとですが自分の所感ではこのような印象でした。
R21でIntel Open Image Denoiseが付いたことで非常に高いアドバンテージになったかなと思いますが、自分はまだ当分はOctaneを信仰していきたいと思います。

(誤解や説明不足な部分があればご連絡ください)


---------------------------------------------
追記:
この比較ではOctaneでレンダリングしたものをdenoiseして比較したものなので、他のレンダラーを使ったりOctaneでも質感・ライティングによっては結果が異なると思います。
これは勝手な憶測ですが、Octane AI denoiserはOctane向けに用意されたものなので、他のdenoiserと比べてディテールが残りやすいのかもしれません。AIがOctane Renderから出力した無数の画像を機械学習させ、専用のAIとして優位な結果(高サンプル時)が得られているのではないかと。
Intel Open Image DenoiseはOctane専用というわけではないので...

どちらにせよ、技術革新によって制作時間が短縮でき助かります。