Algoritma untuk Menghapus Kebisingan Frekuensi Tinggi dari Path Tracing

8

Saya telah bekerja pada penyaji saya sendiri untuk sementara waktu, dan saya bertanya-tanya apakah ada cara untuk menghapus suara Monte Carlo dari gambar yang diberikan, selain menunggu waktu yang lama untuk menyatu?

Cara saya menemukan adalah mengaburkan gambar, yang tidak terlalu membantu, karena mengurangi kualitas / ketajaman gambar banyak. Dan saya dapat mencapai hal yang sama dengan merender gambar kecil dengan lebih banyak sampel, kemudian meningkatkannya.

Apakah ada algoritma yang dirancang untuk menangani noise pada gambar di lintasan jejak?

Mary Chang
sumber
Apakah Anda lebih tertarik pada pemrosesan pos untuk menyamarkan kebisingan, atau cara mempercepat konvergensi sehingga lebih sedikit noise yang ada?
trichoplax
1
FWIW, Benedikt Bitterli baru-baru ini merilis twitter.com/tunabrain/status/872174108385136640 berikut berdasarkan kertas denoising-nya.
Simon F
Di area postprocessing, ada algoritma bagus yang disebut bilateral filter shadertoy.com/view/4dfGDH
narthex

Jawaban:

6

Ada, dan saya menantikan untuk melihat secara spesifik jawaban lain, tetapi salah satu cara untuk mengatasinya adalah dengan tidak memiliki noise (atau lebih banyak noise) dalam sumber data untuk memulai.

Kebisingan berasal dari fakta bahwa ada variasi yang tinggi dalam rendering - jumlah sampel yang Anda ambil belum cukup konvergen dengan jawaban benar yang sebenarnya dari integral, sehingga beberapa piksel terlalu tinggi / cerah dan ada juga yang terlalu rendah / redup (di setiap saluran warna).

Masalahnya adalah ini: Jika Anda menggunakan angka acak white noise untuk melakukan pengambilan sampel, Anda mungkin mendapatkan sampel yang menggumpal bersama seperti gambar di bawah ini. Diberikan sampel yang cukup, itu akan menyatu, tetapi akan membutuhkan waktu sebelum memberikan cakupan yang baik atas ruang pengambilan sampel. Temukan wilayah ruang kosong pada gambar di bawah ini (seperti di kanan bawah) dan bayangkan ada cahaya kecil yang terang di sana dan pemandangannya gelap di tempat lain. Anda dapat melihat bagaimana tidak memiliki sampel di sana akan membuat masalah untuk rendering.

masukkan deskripsi gambar di sini

Bergantian, Anda dapat mencicipi bahkan pada interval seperti di bawah ini, tetapi itu akan memberi Anda artefak aliasing alih-alih kebisingan, yang lebih buruk.

masukkan deskripsi gambar di sini

Satu gagasan adalah menggunakan urutan perbedaan yang rendah dan melakukan integrasi quasi monte carlo ( https://en.wikipedia.org/wiki/Quasi-Monte_Carlo_method ). Urutan perbedaan rendah terkait dengan noise biru, yang hanya memiliki komponen frekuensi tinggi. Pergi rute ini, Anda mendapatkan konvergensi lebih cepat dari daripada . Ini memberikan cakupan yang lebih baik dari ruang sampel, tetapi karena ada beberapa keacakan (atau kualitas seperti acak) kepada mereka, mereka tidak memiliki masalah alias yang dilakukan pengambilan sampel spasi secara teratur.O(1/N)O(N)

Berikut adalah "kisi jittered" tempat Anda mencicipi pada kisi, tetapi gunakan offset acak kecil dalam ukuran sel. Ini ditemukan oleh pixar dan dipatenkan untuk sementara waktu tetapi tidak lagi: masukkan deskripsi gambar di sini

Berikut adalah urutan perbedaan rendah umum yang disebut urutan Halton (pada dasarnya versi 2d dari Van Der Corpus)

masukkan deskripsi gambar di sini

Dan di sini adalah pengambilan sampel disc poisson, menggunakan algoritma kandidat terbaik Mitchel:masukkan deskripsi gambar di sini

Informasi lebih lanjut, termasuk kode sumber yang menghasilkan gambar-gambar ini dapat ditemukan di sini: https://blog.demofox.org/2017/05/29/when-random-number-are-too-random-low-discrepancy- berikutnyaences/

Alan Wolfe
sumber
3

Salah satu teknik yang bisa Anda gunakan adalah memecah gambar menjadi blok dan mengukur setiap varian blok - dengan cara ini Anda dapat menerapkan lebih banyak sampel ke blok dengan varian yang lebih tinggi.

Varians dapat diperkirakan dengan menggunakan 2 buffer akumulasi alih-alih 1. Anda memberikan setiap pass ke buffer alternatif. Perbedaan mutlak antara buffer ini (sehubungan dengan setiap blok) adalah proporsional dengan varian. Setelah presentasi ke layar Anda dapat menambahkan dua buffer bersama untuk mendapatkan kembali buffer akumulasi penuh Anda.

PaulHK
sumber