画像の平均化を考える

Shadeのパストレーシングがあまりにノイジーなので*1なんとか他の方法で近似できないものか考えてみる。
ノイジーなそれは階調性は悪くない。影の描画も適正だ。ただ、砂のように明白なノイズだらけで見るに耐えないというだけで。
このノイズはモンテカルロ法によるランダムサンプリングの結果である……というか、サンプル数が足りないために発生する偏りである。従って、同じ画をレンダリングしてもノイズの出方は毎回異なる。ノイズそのものは全体に均等に発生するが、個々のピクセルを見れば濃度には差があるということだ。
であるならば、同じ画を何度もレンダリングして重ね合わせることでノイズを均質化し抑制できるのではないだろうか。
実際のところ使いものになるとはあんまり思っていないのだが、まあ一度ぐらいは試してみようじゃないか。


ところで、Photoshopあたりで画像を重ねてゆくとして、どのように合成すればきちんと平均化できるのだろうか。
普通に平均を取るならば全数を合計し均等に割るわけだが、なにしろ表計算ソフトではないので逐次合成を繰り返すより他にない。その制約の中で、どうすれば平均を近似できるのだろうか。
例えば2、4、6、8、10の5値の平均を取るのに(2+4+6+8+10)/5=6というわけに行かないので、まず2と4を合成、その結果に6を合成……という風に逐次処理した結果として6を導かねばならないということだ。
単純に不透明度50%で重ねた場合、最初の2数の平均と次の数で平均を取り……という形式になる。((((2+4)/2+6)/2+8)/2+10)/2=8.125、随分と乖離がある。
20%づつで乗算?それだと計算上は巧く行きそうなのだが、実際にやってみたら薄すぎた。何故だ。
試行の結果、どうやら50%グレイを背景にオーヴァレイで重ねるのが良さそうだという結論に達した。濃度は、重ねるレイヤ数全体での合計濃度が200%になると丁度良い。どうしてそうなるのかよく判っていないのだが、5枚なら40%、8枚なら25%で巧く行く。
実際に合成してみたところ、砂状のノイズがすっかり綺麗に……とは無論行かないのだが、幾分抑えられ、また失われていたディティールが復活した。それなりの効果はあるようだ。まあ、サンプリング密度を上げる/大サイズでレンダリングして縮小するのに比較してパフォーマンスに優れているのかという点については疑問が遺るが。

*1:設定によりノイズを抑えることはできるが、階調を失いのっぺりした画になるか物凄く時間がかかるかの二択で、あまり嬉しくない